我想设置家庭壁纸并将其作为我活动的背景。这可能吗 ?
我在互联网上搜索
WallpaperInfo v = w.getWallpaperInfo();
String name = v.getServiceName();
例如,我有服务名称(因为壁纸是实时服务),我有com.android.wallpaper.grass.GrassWallpaper
...我可以使用它来启动服务到我的活动中吗?
如果是这样,怎么做?
我想设置家庭壁纸并将其作为我活动的背景。这可能吗 ?
我在互联网上搜索
WallpaperInfo v = w.getWallpaperInfo();
String name = v.getServiceName();
例如,我有服务名称(因为壁纸是实时服务),我有com.android.wallpaper.grass.GrassWallpaper
...我可以使用它来启动服务到我的活动中吗?
如果是这样,怎么做?
尝试将此属性添加到清单中的标记:
android:theme="@android:style/Theme.Wallpaper"
看来你甚至没有尝试做任何事情......无论如何,你可以通过以下方式获得壁纸:
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
Drawable wallpaperDrawable = wallpaperManager.getDrawable();
然后,您可以使用该可绘制对象并将其设置为活动的背景。
使用WalpaperManager
需要storage permition
。所以我建议这种神奇的方式:
如果您的主题名称是AppTheme
,则如下所示:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
然后创建另一个名为AppTheme.Wallpaper
:
<style name="AppTheme.Wallpaper" parent="AppTheme">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowShowWallpaper">true</item>
</style>
然后将该主题作为您的活动属性放入清单中:
<activity android:name=".YOUR_ACTIVITY"
android:theme="@style/AppTheme.Wallpaper">
</activity>