本节引言:

这一节要聊的是WallpaperManager,也就是常说的壁纸管理器。顾名思义,它对应的就是手机壁纸相关的一组API。接下来会把它的几个基础用法顺着讲清楚:怎么调用系统自带的壁纸选择功能,怎么把Activity的背景直接设成壁纸背景,以及再做一个定时切换壁纸的小例子。铺垫不多说,直接进入正题。

官方API文档:WallpaperManager

1.WallpaperManager的基本用法

相关方法

设置壁纸的相关方法:

其他方法:

获得WallpaperManager对象

WallpaperManager wpManager =WallpaperManager.getInstance(this);

设置壁纸需要的权限

 

2.调用系统自带的壁纸选择功能

Button btn_set = (Button) findViewById(R.id.btn_set);
    btn_set.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent chooseIntent = new Intent(Intent.ACTION_SET_WALLPAPER);
            startActivity(Intent.createChooser(chooseIntent, "选择壁纸"));
        }
    });

运行效果图

3.将Activity的背景设置为壁纸背景

方法有两种,一种是在Activity中用代码进行设置,另一种是在AndroidManifest.xml中修改 Activity的主题~!

方法一:Activity中设置

@Override
protected void onCreate(Bundle sa vedInstanceState) {
    setTheme(android.R.style.Theme_Wallpaper_NoTitleBar_Fullscreen);
    super.onCreate(sa vedInstanceState);
    setContentView(R.layout.activity_main);
}

方法二:AndroidManifest.xml修改theme

4.定时换壁纸的Demo

这里用到前面学的AlarmManager(闹钟服务),假如你对它不了解的话可以到: 10.5 AlarmManager(闹钟服务)进行学习~ 下面我们来写个Demo~

运行效果图

代码实现

首先我们来写一个定时换壁纸的Service:WallPaperService.ja va

/**
 * Created by Jay on 2015/11/13 0013.
 */
public class WallPaperService extends Service {
private int current = 0;  //当前壁纸下标
    private int[] papers = new int[]{R.mipmap.gui_1,R.mipmap.gui_2,R.mipmap.gui_3,R.mipmap.gui_4};
    private WallpaperManager wManager = null;   //定义WallpaperManager服务
@Override
    public void onCreate() {
        super.onCreate();
        wManager = WallpaperManager.getInstance(this);
    }
@Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if(current >= 4)current = 0;
        try{
            wManager.setResource(papers[current++]);
        }catch(Exception e){e.printStackTrace();}
        return START_STICKY;
    }
@Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

接着撸个简单的布局,三个Button:activity_main.xml


接着是我们的Activity,在这里实例化aManager并设置定时事件~:MainActivity.ja va

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_on;
    private Button btn_off;
    private Button btn_clean;
    private AlarmManager aManager;
    private PendingIntent pi;
@Override
    protected void onCreate(Bundle sa vedInstanceState) {
        super.onCreate(sa vedInstanceState);
        setContentView(R.layout.activity_main);
        //①获得AlarmManager对象:
        aManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        //②指定要启动的Service,并指明动作是Servce:
        Intent intent = new Intent(MainActivity.this, WallPaperService.class);
        pi = PendingIntent.getService(MainActivity.this, 0, intent, 0);
        bindViews();
    }
private void bindViews() {
        btn_on = (Button) findViewById(R.id.btn_on);
        btn_off = (Button) findViewById(R.id.btn_off);
        btn_clean = (Button) findViewById(R.id.btn_clean);
        btn_on.setOnClickListener(this);
        btn_off.setOnClickListener(this);
        btn_clean.setOnClickListener(this);
    }
@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_on:
                aManager.setRepeating(AlarmManager.RTC_WAKEUP, 0, 3000, pi);
                btn_on.setEnabled(false);
                btn_off.setEnabled(true);
                Toast.makeText(MainActivity.this, "自动更换壁纸设置成功", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_off:
                btn_on.setEnabled(true);
                btn_off.setEnabled(false);
                aManager.cancel(pi);
                break;
            case R.id.btn_clean:
                try {
                    WallpaperManager.getInstance(getApplicationContext()).clear();
                    Toast.makeText(MainActivity.this, "清除壁纸成功~", Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
        }
    }
}

最后别忘了加上设置壁纸的权限以及为我们的Service进行注册:AndroidManifest.xml


好的,非常简单~

5.本节示例代码下载

WallpaperManagerDemo.zip

本节小结:

好的,本节给大家介绍了下WallpaperManager的一些基本用法~更多的东西还需你们自己 进行探究~谢谢~!

本文转载于:https://www.runoob.com/w3cnote/android-tutorial-wallpapermanager.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。