2012-02-12 77 views
2

我目前正在制作一个Android应用程序,我希望用户能够更改背景图像。 我有3个图像和一个屏幕,我可以选择一张图片和一个应用按钮。更改应用程序背景

问题: 我可以允许用户看到我想要的所有图像,但我不知道如何设置选定的图像作为背景的应用程序。

我想做什么: 我希望用户点击一个按钮,其中出口所选择的图像“bakgrund.png”中的“/ RES /绘制-MDPI”,取代目前的一个。这将允许我轻松地集成背景切换器。重命名当前文件也可以。

PS:我目前的背景图片位于/ res/drawable-mdpi,名为1.png 2.png和3.png。

+0

到底是什么问题?看来你是在要求我们为你设计整个事情。 – 2012-02-12 21:32:47

+0

您可以在您的活动的onCreate中发布您的main.xml或您在setContentView(...)中调用的任何xml文件吗? – 2012-02-12 21:33:34

回答

6

最简单的方法是在根布局上调用setBackgroundResource(image_id)方法。就像如果你有一个LinearLayout具有android:id="@+linear"在布局XML根布局,那么这段代码将有助于: -

LinearLayout linearLayout=(LinearLayout) findViewById(R.id.linear); 
linear.setBackgroundResource(R.drawable.1);//call this in the OnClickListener's OnClick Method 
+0

我喜欢这个代码实现,并且能够正常工作,但只能在当前视图中使用。另外,一旦我离开窗口,drawable就返回到它的旧状态(1.png)。有没有办法让这个设置适用于所有名为might的相关布局,并保持设置,即使重新启动整个应用程序? – 2012-02-13 07:23:24

+0

你不能给同一个id多个视图,否则你可能会得到一个ClassCastException。相反,您可以在ArrayList中使用这些布局的对象,然后在Button的侦听器的OnClick()方法中,您可以在ArrayList上运行循环以将每个布局的背景设置为所需的可绘制。 – noob 2012-02-13 12:34:02

+0

好的...下面是我得到的结果:RelativeLayouts上不能有相同的ID? 当活动被破坏并申请所有布局xml时,仍存在保持图像的问题。我阅读了有关使用共享内容视图或字符串的方法,但我无法使其工作。 thx帮助我。 :) – 2012-02-13 13:47:17

2

首先,您需要具有不同背景的不同主题。因此,您可以在您的Activity中使用this.setTheme方法。

事实上,我建议你,两个不同的布局(具有不同的背景,但具有相同的组件),并在onClick使用setContentView

我希望它能解决您的问题。