2014-05-09 225 views
1

我正在嘗試在我的應用中進行設置活動,我想知道如何執行允許用戶更改背景顏色的首選項。在設置中更改背景顏色

我已經完成設置活動,並且當用戶點擊「顏色」選項時,我正在考慮進行子集設置,該選項顯示用戶可以設置的各種顏色(或者甚至更好,使用調色板所有可用的顏色)。

我怎麼能意識到這一點?

+1

請參閱本作調色板http://stackoverflow.com/questions/2442407/android-color-picker – Sripathi

+0

@Sripathi感謝你的鏈接,但我一直無法理解其導遊 – Solaire

回答

1

好,如果你已經創建了設置的活動,它會在你的喜好XML類似這樣

public class NormalSettingsActivity extends PreferenceActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.normal_preferences); 
    } 
} 

添加一些類優先這樣

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 

    <PreferenceCategory android:title="Background Color Settiongs" > 
     <ListPreference 
      android:defaultValue="#111111" 
      android:entries="@array/colorName" 
      android:entryValues="@array/colorCode" 
      android:key="background_color" 
      android:summary="Set background color of app" 
      android:title="Colors" /> 
    </PreferenceCategory> 
</PreferenceScreen> 

然後在值文件夾中創建XML稱爲陣列

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="colorName"> 
     <item name="0">Red</item> 
     <item name="1">Black</item> 
     <item name="2">Yellow</item> 
     <item name="3">White</item> 
    </string-array> 
    <string-array name="colorCode"> 
     <item name="0">#ff0000</item> 
     <item name="1">#111111</item> 
     <item name="2">#ffff33</item> 
     <item name="3">#ffffff</item> 
    </string-array> 
</resources> 

然後在您的活動中,只需設置backgroun使用

backgroundLayout.setBackgroundColor(Color.parseColor(mPreferenceManager.getDefaultSharedPreferences().getString("background_color", "#111111"))); 

這裏 「BACKGROUND_COLOR」 d顏色從喜好XML來(機器人:鍵= 「BACKGROUND_COLOR」)

「#111111」 是如果沒有找到匹配

將要設置一些默認的顏色

不要忘記創建一個全局變量

protected PreferencesManager mPreferenceManager; 

和的onCreate初始化,如

mPreferenceManager = PreferencesManager.instance(this); 
+0

我不我不知道如何謝謝你,你的回答不僅僅是完整的,謝謝你。 我只是想指出的是,最後的程序,使後臺工作,對我來說沒有工作,所以我做了這個 '的RelativeLayout RL =(RelativeLayout的)findViewById(R.id.container); \t \t \t \t SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); \t \t int bgc = Color.parseColor(sharedPref.getString(「background_color」,「#000000」)); \t \t rl.setBackgroundColor(bgc); ' 問題是,如果我從屏幕上退出箭頭,從設置 – Solaire

+0

我面臨同樣的問題,則不應用背景。這裏的技巧是在activity的onResume方法中調用setbackground方法。並感謝我,你可以隨時接受我的回答:-) – Kaustuv

+0

哦,對了,答案是如此明顯!非常感謝,我馬上接受;) – Solaire