如何将背景屏幕设置为壁纸?

时间:2011-11-09 08:42:35

标签: android background wallpaper

目前,我正在使用它将我的应用程序背景显示为手机壁纸。

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER,
                     WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER);

但出于某些原因,当我按下图标启动我的应用程序时。它只显示主屏幕上带有图标的活动屏幕。我没有使用对话框,但它看起来像一个对话框,因为布局就是这样设置的。所以我只想在这个活动运行时显示壁纸。但它仅在下一个事件发生后才显示壁纸,例如切换到不同的活动。我已经把代码放在onCreate()上,每当我做setContentView()时.....有没有办法做这样的事情或者没有办法?

3 个答案:

答案 0 :(得分:4)

对于AppCompat的用户,只需在styles.xml中使用以下内容,无需代码:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowShowWallpaper">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
    <item name="android:windowTranslucentStatus">true</item>
</style>

答案 1 :(得分:3)

经过长时间的搜索和反复试验。我找到了我想要的解决方案。它只是创建单独的themes.xml文件,只需调整已在默认的android themes.xml中定义的Theme.Dialog。我所做的就是更改动画部分。最初在android themes.xml中,该行看起来像这样。

<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>

但是因为在android themes.xml中修改不起作用。我刚刚创建了我自己的themes.xml,如上所述,只是将父设置为android:Theme.Dialog。并添加了这样的一行。

<item name="android:windowAnimationStyle">@android:style/Animation</item>

感谢您的帮助,我希望此解决方案可以帮助其他人。

答案 2 :(得分:0)

使用以下代码 -

    rl = (RelativeLayout)findViewById(R.id.someid);
    //relative layout is my root node in main.xml (yours may be linearlayout)
    WallpaperManager wm = WallpaperManager.getInstance(this);
    Drawable d = wm.peekDrawable();
    rl.setBackgroundDrawable(d);// You can also use rl.setBackgroundDrawable(getWallpaper);