我似乎没有弄清楚我的代码在这里将设备壁纸设置为启动器活动布局的背景。我试图在网上搜索更好的代码,但到目前为止我得到的是导致错误的那个:
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
Drawable wallpaperDrawable = wallpaperManager.getDrawable();
MyLogin = (RelativeLayout) findViewById(R.id.login);
MyLogin.setBackground(wallpaperDrawable);
感谢您对此问题的帮助和关注
答案 0 :(得分:2)
您还可以使用样式将设备壁纸用作活动背景。 使用
<activity android:theme="@android:style/Theme.Wallpaper.NoTitleBar">
或
<activity android:theme="@android:style/Theme.Holo.Wallpaper.NoTitleBar">
就您的代码而言,由于您没有指定错误,因此很可能是您的活动布局{{1}中没有RelativeLayout
且标识为login
的错误}}
答案 1 :(得分:2)
试试这个。它肯定会起作用
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
final Drawable wallpaperDrawable = wallpaperManager.getDrawable();
MyLogin.post(new Runnable() {
@Override
public void run() {
MyLogin.setBackground(wallpaperDrawable);
}
});
你应该使用ActionBar的后代。此外,您可以选择稍后隐藏操作栏。喜欢这个
<style name="Theme.AppCompat.Light.NoActionBar" parent="@style/Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowContentOverlay">@null</item>
</style>
答案 2 :(得分:2)
最好的方法是让系统显示壁纸背景。 有FLAG_SHOW_WALLPAPER和windowShowWallpaper属性。
更多例子可以在这里找到:
答案 3 :(得分:0)
你可以用两种方式做到这一点......
转到相对布局,然后在<RelativeLayout >
内android:background="@drawable/yourImage"
输入
以编程方式提供Backround MyLogin =(RelativeLayout)findViewById(R.id.login); Mylogin.setBackgroundResource(R.drawable.YOUR_IMAGE);
答案 4 :(得分:0)
这最终对我有用
@SuppressLint("NewApi") @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
gridView = (GridView) findViewById(R.id.gridView1);
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
Drawable wallpaperDrawable = wallpaperManager.getDrawable();
MyLogin = (RelativeLayout) findViewById(R.id.login);
MySong.setBackgroundDrawable(wallpaperDrawable);
}
错误是当我运行应用程序时它只是说应用程序MyLogin com.example.login意外停止了。请再试一次。
但在我将setBackground更改为setBackgroundDrawable后,它现在可以正常工作。
答案 5 :(得分:0)
您可以尝试使用
MyLogin.setBackgroundDrawable(wallpaperDrawable);
而不是
MyLogin.setBackground(wallpaperDrawable);
虽然两者都可以使用,具体取决于设备。