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

Launcher3--壁纸(4/5)

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

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

    加载Launcher3中配置的壁纸,这些壁纸放在drawable-xxx目录下,并在wallpapers.xml中配置(必须有原图和缩略图)


    

        zzz_wallpaper
        zzz_wallpaper_small

    
    加载默认壁纸,默认壁纸放在framework资源目录下
    这样就获取到壁纸列表,定义适配器,通过populateWallpapersFromAdapter方法将其显示,

    private void populateWallpapersFromAdapter(ViewGroup parent, BaseAdapter adapter,
                                               boolean addLongPressHandler) {
        for (int i = 0; i < adapter.getCount(); i++) {
            FrameLayout thumbnail = (FrameLayout) adapter.getView(i, null, parent);
            parent.addView(thumbnail, i);
            WallpaperTileInfo info = (WallpaperTileInfo) adapter.getItem(i);
            thumbnail.setTag(info);
            info.setView(thumbnail);
            if (addLongPressHandler) {// 是否添加长按事件,只对数据库中保存的壁纸处理
                addLongPressHandler(thumbnail);
            }
            thumbnail.setOnClickListener(mThumbnailOnClickListener);
        }
    }
    这个方法比较好理解,需要注意的是第三个参数,这个布尔值用来确定该类型壁纸是否添加长按事件,这里是false,不添加;根据后面的分析来看,也只有保存在数据库中的壁纸添加该操作,这也好理解,因为其他几种类型都不是用户自己定义的,不允许删除壁纸,长按操作就是用来删除该壁纸的。

    2)添加保存在数据库中的壁纸

        // Populate the saved wallpapers
        // 填充保存在数据库中的壁纸
        mSavedImages = new SavedWallpaperImages(this);
        mSavedImages.loadThumbnailsAndImageIdList();
        populateWallpapersFromAdapter(mWallpapersView, mSavedImages, true);
    3)添加动态壁纸
        // Populate the live wallpapers
        // 填充动态壁纸
        final LinearLayout liveWallpapersView =
                (LinearLayout) findViewById(R.id.live_wallpaper_list);
        final LiveWallpaperListAdapter a = new LiveWallpaperListAdapter(this);
        a.registerDataSetObserver(new DataSetObserver() {
            public void onChanged() {
                liveWallpapersView.removeAllViews();
                populateWallpapersFromAdapter(liveWallpapersView, a, false);
                initializeScrollForRtl();
                updateTileIndices();
            }
        });

    在Android中,除了可以显示静态壁纸外,也可以使用动态壁纸。当然,跟普通的壁纸不同的是,它是已apk的形式安装到手机中的(至于怎么制作一个动态壁纸的apk,不是我们这边所讲的,就不阐述了),加载动态壁纸就是要查找系统中已安装的动态壁纸应用。

    动态壁纸也定义了一个适配器类LiveWallpaperListAdapter,定义动态壁纸对象,查找动态壁纸应用等。

相关图片

相关文章