Android壁纸的设置

    android壁纸设置,我就不发代码了,直接给个图片,setwallpager就可以了。

    setwallpager是activity中直接可以有的方法,下面走到了wallpagermanager的setstream之后才是wallpapermanagerservice的setwallpager,这里看看源码,最终把图片写到data下的一个目录下。

    这里插个小话题,android有的应用软件是截取图片,在设置壁纸,大家注意到了吗,截取壁纸都是截的正方形的,为什么呢,有机会可以去追追源码,我简单说下,android壁纸的显示分为,显示壁纸的窗口和壁纸,壁纸的窗口默认是个正方形,大小是你设备width和hight的最大值,因而,在截取图片的时候,一般会让你截取个正方形,它会默认放大为显示窗口的大小显示,然而大家有木有发现,android只会显示你截取的一部分,且显示的是中间的部分,这是因为androidUI默认有多屏,壁纸是可以滚动的,且默认壁纸偏移中间显示。可以再windowstate中设置壁纸偏移。

    其实在设置壁纸是,wallpapermanager就会远程调用一个systemUI中的一个方法,继承自wallpaperservice的,它会设置显示图片,这里会去取data下的那个图片显示,在这里我们更改图片及显示。

    在Imagewallpager的drawFrameLocked这里surfaseholder是显示窗口,更改它的大小,让它跟我们设备分辨率一样,updateWallpaperLocked会获取要显示的壁纸图片,它会条用wallpapermanager的getbitmap,下面回去获取默认的壁纸还是我们要设置的壁纸,如果是我们要设置的壁纸,在data下面,它会对我们的图片进行缩放处理,再转换为bitmap,在这里我们做手脚,让图片跟我们设备的分辨率一样。

    这样显示出来的壁纸就铺满了我们设备背景了。这样做,就是想设置跟我们设备分辨率匹配的壁纸,如果你用随便大小的图片,他也会按照比例缩放显示,不太好,尽量做得跟我们设备分辨率一样的图片。

 

你可能感兴趣的:(android,显示不全,壁纸放大)