1

我想设置家庭壁纸并将其作为我活动的背景。这可能吗 ?

我在互联网上搜索

WallpaperInfo v = w.getWallpaperInfo();
String name = v.getServiceName();

例如,我有服务名称(因为壁纸是实时服务),我有com.android.wallpaper.grass.GrassWallpaper...我可以使用它来启动服务到我的活动中吗?

如果是这样,怎么做?

4

3 回答 3

8

尝试将此属性添加到清单中的标记:

android:theme="@android:style/Theme.Wallpaper"

于 2012-05-25T08:03:48.757 回答
4

看来你甚至没有尝试做任何事情......无论如何,你可以通过以下方式获得壁纸:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
Drawable wallpaperDrawable = wallpaperManager.getDrawable();

然后,您可以使用该可绘制对象并将其设置为活动的背景。

于 2011-02-12T23:41:57.637 回答
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>
于 2020-10-24T00:14:23.197 回答