目前,我正在使用它将我的应用程序背景显示为手机壁纸。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER,
WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER);
但出于某些原因,当我按下图标启动我的应用程序时。它只显示主屏幕上带有图标的活动屏幕。我没有使用对话框,但它看起来像一个对话框,因为布局就是这样设置的。所以我只想在这个活动运行时显示壁纸。但它仅在下一个事件发生后才显示壁纸,例如切换到不同的活动。我已经把代码放在onCreate()
上,每当我做setContentView()
时.....有没有办法做这样的事情或者没有办法?
答案 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);