2012-02-12 46 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

我希望它能解決您的問題。

相關問題