2011-11-09 74 views
1

目前,我正在使用它来将我的应用程序背景显示为手机壁纸。如何将背景屏幕始终设置为壁纸?

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

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

+0

读了两遍,我还没有完全确定你的问题是什么。你能提供屏幕截图吗? (也许这听起来像一个呼吁invalidate()等重绘,但我真的不知道)。 – Warpzit

回答

4

漫长的探索和反复试验后。我找到了我想要的解决方案。它只是创建单独的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> 

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

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); 
+0

感谢您的评论rohit但我得到空指针异常在线rl.setBackgroundDrawable(d);我已经将代码放在onCreat()中,并在main.xml中为我的根节点添加了id,并将RelativeLayout更改为LinearLayout,因为我的LinearLayout ....并且我只是将rl声明为全局变量。 LinearLayout rl; – Jae

+0

我解决了空指针异常的问题,但该代码似乎设置了布局的背景....也许我之前并不清楚...因为我的活动布局看起来像一个对话框,当我运行该应用程序时,它显示对话框的布局和变暗的背景下面的活动屏幕...我想要的是如何显示壁纸灰色屏幕没有任何主屏幕图标。我提供的代码在发生少量事件后有效,但我希望它在活动发生后立即工作,并在活动未激活或仅在后台运行时返回主屏幕...... – Jae

+0

不错,您找到答案..其实,我刚从壁纸管理器的android文档得到的代码。我没有遇到过这种情况。感谢分享答案:)祝你好运 – rohit

3

有关程序兼容性的用户,只需要使用下面你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>