Android实现手机壁纸改变的方法

作者:Ruthless 时间:2022-06-03 07:41:46 

本文实例讲述了Android实现手机壁纸改变的方法。分享给大家供大家参考。具体如下:

main.xml布局文件:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <Button android:id="@+id/clearWall"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="恢复默认墙纸" />
 <ImageView android:id="@+id/currWall"
   android:layout_width="100px"
   android:layout_height="150px"
   android:layout_gravity="center_horizontal" />
 <Button android:id="@+id/getWall"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="获取当前墙纸" />
 <Gallery android:id="@+id/gallery"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content" />
 <Button android:id="@+id/setWall"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="设置为当前墙纸" />
</LinearLayout>

清单文件:


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.ljq.activity"
  android:versionCode="1"
  android:versionName="1.0">
 <application android:icon="@drawable/icon" android:label="@string/app_name">
   <activity android:name=".WallActivity"
        android:label="@string/app_name">
     <intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>
   </activity>
 </application>
 <uses-sdk android:minSdkVersion="7" />
 <!-- 设置手机墙纸权限 -->
 <uses-permission android:name="android.permission.SET_WALLPAPER" />
</manifest>

WallAdapter自定义适配器:


package com.ljq.activity;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
public class WallAdapter extends BaseAdapter {
 private int[] imgIds = null;
 private Context context = null;
 public WallAdapter(int[] imgIds, Context context) {
   super();
   this.imgIds = imgIds;
   this.context = context;
 }
 public int getCount() {
   return imgIds.length;
 }
 public Object getItem(int position) {
   //return imgIds[position];
   return imgIds[position%imgIds.length];//可循环
 }
 public long getItemId(int position) {
   return position;
 }
 public View getView(int position, View convertView, ViewGroup parent) {
   ImageView imageView = new ImageView(context);
   imageView.setBackgroundResource(imgIds[position]);// 设置ImageView的背景图片
   imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
   imageView.setLayoutParams(new Gallery.LayoutParams(120, 120));
   return imageView;
 }
}

WallActivity类:


package com.ljq.activity;
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemSelectedListener;
public class WallActivity extends Activity {
 private int[] imgIds={R.drawable.w1, R.drawable.w2, R.drawable.w3, R.drawable.w4};
 private int selectIndex=-1;//被选中的图片在id数组中的索引
 private ImageView currWall=null;
 private Gallery gallery=null;
 private Button clearWall=null;
 private Button getWall=null;
 private Button setWall=null;
 @Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
   gallery=(Gallery)findViewById(R.id.gallery);
   gallery.setAdapter(new WallAdapter(imgIds, WallActivity.this));
   gallery.setSpacing(5);
   gallery.setOnItemSelectedListener(new OnItemSelectedListener(){
     public void onItemSelected(AdapterView<?> parent, View view,
         int position, long id) {
       selectIndex = position;//记录被选中的图片索引
     }
     public void onNothingSelected(AdapterView<?> parent) {
     }
   });
   currWall=(ImageView)findViewById(R.id.currWall);
   clearWall=(Button)findViewById(R.id.clearWall);
   getWall=(Button)findViewById(R.id.getWall);
   setWall=(Button)findViewById(R.id.setWall);
   clearWall.setOnClickListener(listener);
   getWall.setOnClickListener(listener);
   setWall.setOnClickListener(listener);
 }
 View.OnClickListener listener=new View.OnClickListener(){
   public void onClick(View v) {
     Button btn=(Button)v;
     switch (btn.getId()) {
     case R.id.clearWall://还原手机壁纸
       try {
         WallActivity.this.clearWallpaper();
       } catch (IOException e) {
         e.printStackTrace();
       }
       break;
     case R.id.getWall://设置ImageView显示的内容为当前墙纸
       currWall.setBackgroundDrawable(getWallpaper());
       break;
     case R.id.setWall://设置墙纸
       InputStream in=WallActivity.this.getResources().openRawResource(imgIds[selectIndex]);
       try {
         setWallpaper(in);
       } catch (IOException e) {
         e.printStackTrace();
       }
       break;
     }
   }
 };
}

运行结果:

Android实现手机壁纸改变的方法

希望本文所述对大家的Android程序设计有所帮助。

标签:Android,壁纸
0
投稿

猜你喜欢

  • Android自定义View实现环形进度条的思路与实例

    2023-07-03 05:55:47
  • Nacos 动态服务发现、配置和服务管理平台初体验

    2022-09-10 23:56:53
  • C#设计模式之ChainOfResponsibility职责链模式解决真假美猴王问题实例

    2023-04-01 00:39:00
  • C#实现的鼠标钩子

    2021-10-29 22:48:29
  • Android控件系列之EditText使用方法

    2021-06-19 19:09:20
  • android intent使用定义标题

    2023-11-07 07:06:17
  • SpringBoot Security安装配置及Thymeleaf整合

    2023-11-27 16:18:41
  • Android自定义控件属性详细介绍

    2022-09-03 09:47:02
  • Java Spring Controller 获取请求参数的几种方法详解

    2023-04-07 02:11:17
  • Java List 用法实例详解

    2022-11-29 05:27:20
  • 使用Java8实现模板方法模式的改造

    2021-10-28 23:46:09
  • Java 向上转型和向下转型的详解

    2022-06-21 08:28:03
  • c#反射表达式树模糊搜索示例

    2022-01-09 07:03:31
  • ADO.NET实体数据模型详细介绍

    2023-10-16 12:15:41
  • 通过实例深入了解java序列化

    2022-12-01 17:37:39
  • Android自定义视图中图片的处理

    2023-06-29 12:07:27
  • java如何读取超大文件

    2022-10-24 08:20:54
  • 详解Java中字符流与字节流的区别

    2023-01-14 00:19:58
  • java oshi如何查看cpu信息

    2023-01-06 21:16:39
  • Java实现顺时针输出螺旋二维数组的方法示例

    2022-02-03 00:11:41
  • asp之家 软件编程 m.aspxhome.com