Android 应用背景加载系统动态壁纸
需求
客户的需求总是那么让人摸不着头脑,我们的应用和系统的launcher是共同存在的双桌面形式,客户要求应用必须支持系统桌面的壁纸,针对这个需求,静态壁纸很容易实现,但是动态壁纸就很麻烦了,毕竟我们的只是一个应用伪launcher,并不是在真正的launcher源码上进行更改的桌面程序。
思路
在网上查了很多资料之后才有了一点思路,动态壁纸并不是运行在activity界面,虽然都是以apk的形式存在于android系统中,但是主要是运行在一个壁纸窗口的WallPaperService。所以需要将我们的应用主题设置成透明,再将动态壁纸的窗口贴合应用的acivity窗口,后面看过android原生launcher3的源码之后发现系统也是这样实现的
实现
1.透明背景
将应用的主Activity的主题设置为透明
<activity
android:name=".activity.MainActivity"
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name=