ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> Android开发 >> Launcher3--壁纸

Launcher3--壁纸(1/5)

来源:网络整理     时间:2016-07-05     关键词:

本篇文章主要介绍了" Launcher3--壁纸",主要涉及到方面的内容,对于Android开发感兴趣的同学可以参考一下: 在说Launcher上设置壁纸时,首先需要弄清楚的是,壁纸的设置属于系统行为,而不是Launcher的应用特性。在Launcher中,壁纸的设置最终也是...

    在说Launcher上设置壁纸时,首先需要弄清楚的是,壁纸的设置属于系统行为,而不是Launcher的应用特性。在Launcher中,壁纸的设置最终也是通过调用系统壁纸设置接口来完成的,所有,不仅仅是Launcher,很多第三方应用也是可以设置壁纸的。

    Android中,可以使用WallpaperManager这一壁纸管理类来设置壁纸,有如下几种方法,

 Launcher3--壁纸

    我们可以根据壁纸资源的不同,选择合适的方法,其中,最后一个可以用来设置动态壁纸。

    下面就来说说Launcher3中是如何设置壁纸的,我们直接从壁纸设置界面的入口说起,

    /**
     * Event handler for the wallpaper picker button that appears after a long press
     * on the home screen.
     */
    protected void onClickWallpaperPicker(View v) {
        if (LOGD) Log.d(TAG, "onClickWallpaperPicker");
        final Intent pickWallpaper = new Intent(Intent.ACTION_SET_WALLPAPER);
        pickWallpaper.setComponent(getWallpaperPickerComponent());
        startActivityForResult(pickWallpaper, REQUEST_PICK_WALLPAPER);

        if (mLauncherCallbacks != null) {
            mLauncherCallbacks.onClickWallpaperPicker(v);
        }
    }
    protected ComponentName getWallpaperPickerComponent() {
        if (mLauncherCallbacks != null) {
            return mLauncherCallbacks.getWallpaperPickerComponent();
        }
        return new ComponentName(getPackageName(), LauncherWallpaperPickerActivity.class.getName());
    }
    很显然,LauncherWallpaperPickerActivity就是壁纸设置界面了,LauncherWallpaperPickerActivity继承于WallpaperPickerActivity,WallpaperPickerActivity又继承于WallpaperCropActivity,这么多继承,看来这个界面还是比较复杂的。从命名来看的话,也是为了区分每个类的处理重点,WallpaperCropActivity用来进行壁纸的裁剪,将图片裁剪到合适的尺寸;WallpaperPickerActivity就是壁纸选择器,选择壁纸并设置;至于LauncherWallpaperPickerActivity,从代码中看到只是重写了父类的两个方法,没什么可分析的,这里我们重点分析WallpaperPickerActivity这个类。

一、壁纸类型对象

    作为内部类,定义在WallpaperPickerActivity类中,

    public static abstract class WallpaperTileInfo {
        protected View mView;
        public Drawable mThumb;

        public void setView(View v) {
            mView = v;
        }
        public void onClick(WallpaperPickerActivity a) {}// 缩略图点击事件
        public void onSave(WallpaperPickerActivity a) {}// 设置壁纸,并做一些保存操作
        public void onDelete(WallpaperPickerActivity a) {}// 删除壁纸
        public boolean isSelectable() { return false; }// 是否可选
        public boolean isNamelessWallpaper() { return false; }// 壁纸是否没有名字
        public void onIndexUpdated(CharSequence label) {// 更新索引
            if (isNamelessWallpaper()) {
                mView.setContentDescription(label);
            }
        }
    }
    壁纸对象的一个抽象类,不直接使用,具体的壁纸继承该类并根据自身特点扩展。壁纸来源有多个途径,如应用内置的壁纸、图库、第三方等,另外设为壁纸的方式也不一定相同,需要对不同来源区分处理,所有就定义了以下几个壁纸类对象,

PickImageInfo--图片选择器,在Activity中添加属性,就可以隐式调用到,如图库
UriWallpaperInfo--通过图片的Uri来设置壁纸
FileWallpaperInfo--通过图片文件来设置壁纸
ResourceWallpaperInfo--Launcher3中内置的壁纸资源来设置
DefaultWallpaperInfo--系统默认壁纸,资源在framework中
    这几个类实现其抽象父类中的方法,具体代码实现就不一一细说,后面说到具体方法时会举其中的例子来说明,这里对几个抽象方法已经做了注释。

二、加载壁纸列表

    图1是壁纸设置界面,界面简单,包含了壁纸列表、设置壁纸按钮以及壁纸预览图等。

 Launcher3--壁纸

相关图片

相关文章