Android 将设备墙纸设置为活动布局的背景
在这里,我的代码将设备壁纸设置为启动程序活动布局的背景,我似乎不知道有什么问题。我试图在网上搜索更好的代码,但到目前为止,我得到的是导致错误的代码:Android 将设备墙纸设置为活动布局的背景,android,eclipse,Android,Eclipse,在这里,我的代码将设备壁纸设置为启动程序活动布局的背景,我似乎不知道有什么问题。我试图在网上搜索更好的代码,但到目前为止,我得到的是导致错误的代码: 我将非常感谢您在这个问题上的帮助和关注您可以通过两种方式来做到这一点 转到该相对布局,并在内键入android:background=“@drawable/yourmage”以获取ex 以类似的编程方式进行回退 MyLogin=(RelativeLayout)findViewById(R.id.login); Mylogin.setBac
我将非常感谢您在这个问题上的帮助和关注您可以通过两种方式来做到这一点
内键入android:background=“@drawable/yourmage”
以获取ex
您还可以使用样式将设备壁纸用作活动背景。 使用
或
就您的代码而言,由于您没有指定正在发生的错误,最有可能的错误是您的活动布局
xml
中没有id为login
的RelativeLayout
。它肯定会有用的
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>
真的
假的
@空的
这是我最后的工作
@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后,它现在可以工作了。您可以尝试使用
MyLogin.setBackgroundDrawable(wallpaperDrawable);
而不是
MyLogin.setBackground(wallpaperDrawable);
尽管这两种方法都可以根据设备的不同而工作。最好的方法是让系统为您显示壁纸背景。 有两个属性 更多示例可在此处找到:
MyLogin.setBackgroundDrawable(壁纸绘制)代码>顺便说一句,你发布的代码也很有用。谢谢@Psy Duck的支持。我很高兴它帮了你。:)单击前面的勾号选择我的答案。:)出现以下情况:原因:java.lang.IllegalStateException:您需要在此活动中使用Theme.AppCompat主题(或后代)。
等等,我在实现建议的主题时遇到此异常。@PsyDuck AFAIK主题。AppCompat
没有墙纸样式,因此无法使用样式。但是我成功地用操作码将墙纸设置为背景。感谢您的解决方案,请参见下面的一个从Me开始工作的解决方案。您可以将样式设置为类似以下活动的android:theme=“@style/theme.AppCompat.Light.NoActionBar”感谢您的解决方案,请参见下面的一个从meThis开始工作的解决方案,但它显示的是手机附带的一些默认壁纸,而不是我的实际壁纸。感谢您提供的解决方案,请参见下面的一个,它仅适用于普通壁纸,不是吗?实时壁纸不会显示,对吗?实时壁纸基本上是一个视频或gif文件。所以,它不会像WallperManager那样获取一个可绘制的文件,所以它最多只能从中获取一帧,这也是我必须测试的。Live Wallper不是视频或gif文件。这是一个完整的应用程序。它可以显示它想要的内容,甚至可以与用户交互。您的具体要求是什么?不仅如此,我认为它需要读取外部存储权限,否则它将崩溃。由于没有文档记录,我在这里写过:。我认为这只适用于普通壁纸,不是吗?现场墙纸不会显示,对吗?要点对我起了作用,做了一些调整(见我留下的评论)。其他方法给出了不同的图像,而不是我的实际壁纸。
@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.setBackgroundDrawable(wallpaperDrawable);
MyLogin.setBackground(wallpaperDrawable);