Launcher 壁纸

时间:2023-11-24 22:22:02


0.添加壁纸:

在给系统换默认的壁纸的时候,需要修改一些地方:
首先是默认的壁纸,这个是在framework中配置的,所以要修改framework中找到drawable-nodpi(这个文件夹中的内容都不会做缩放处理)中配置的一个叫做default_wallpapaer的壁纸.
其次就是替换lanucher中的壁纸,需要修改的地方有:在文件夹drawable-nodpi中添加壁纸,然后在values的wallpapaer.xml中配置item为这个几个添加的壁纸.
其实要看一下代码里面的加载过程,是否需要缩略图的显示.

1.在壁纸的设置中,需要我们读单独开一个后台线程来做,因为这个操作确实会有耗时操作,其中还有图片的处理操作.然后返回了一个LauncherWallpaperInfo的类,不同的launcher可能有不同的实现,这个主要就是针对与不同的壁纸类来进行封装的.其实主要分为3个部分.

第一个是加载系统和桌面的壁纸:1分为加载默认的壁纸defaultwallpaper.和launcher的自带的壁纸.为了获取系统中的资源内容我们可以使用getIdentifier(String name, String defType, String defPackage)方法.这个方法就是获取资源的ID,第一个参数为资源的名称default_wallpaper,第二个为资源的类型drawable,第个为包名,由于是系统的所以为android.这样就是可以获取到系统的资源id了.明白了这个方法似乎变得很简单了.2在加载launcher的壁纸的时候,还是使用这个方法,但是由于这个是要灵活配置的,所以我们可以使用wallpaper中string-array来配置所有的需要加载的jpg文件.然后去显示.这里面的配置可能需要一个_small的小的缩略图,根据代码来进行配置.
这个过程也就解释了上面的添加壁纸着一个过程原理.

第二个动态壁纸,利用WallpaperService获取壁纸信息,来进行壁纸的添加,第三个就是第3方壁纸,这个是利用了暴露出来的intent来查询出壁纸.

2.添加壁纸:

获取wallpapaer的manager然后1添加lanucher的壁纸:mWallpaperManager.setStream(inStream);2.添加动态壁纸getIWallpaperManager().setWallpaperComponent(wallpaperInfo.getComponent())
3.添加3方壁纸 Utilities.startActivityForResultSafely(WallpaperPickerActivity.PICK_WALLPAPER_THIRD_PARTY_ACTIVITY)