我想获得家居壁纸并将其作为我活动的背景。这可能吗?
我在网上搜索了
WallpaperInfo v = w.getWallpaperInfo();
String name = v.getServiceName();
我有服务名称(因为壁纸是实时服务),例如,我有com.android.wallpaper.grass.GrassWallpaper
...我可以用它来启动我的活动服务吗?
若然,怎么样?
答案 0 :(得分:8)
尝试将此属性添加到清单中的代码:
机器人:主题= “@机器人:风格/ Theme.Wallpaper”
答案 1 :(得分:4)
看起来你甚至没有尝试过任何事情......无论如何,你可以通过以下方式获得壁纸:
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
Drawable wallpaperDrawable = wallpaperManager.getDrawable();
然后,您可以使用该drawable并将其设置为活动的背景。
答案 2 :(得分:0)
使用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>