2014-02-09 247 views
0

請注意,我指的不是Android的主題像Theme.App.Light, Theme.App.Dark實現自定義主題

我需要使用共享偏好我的應用程序提供不同的主題。只有在背景圖像和圖像按鈕中,主題纔會基本不同。

主題的選擇將由用戶使用shred首選項指定。所以,假設我有選擇的主題偏好,如:

theme_name = sharedPrefs.getString("theme_name", "NULL"); 

現在什麼是實現這一目標的最佳途徑。

一種相當粗暴的方式將被設置的背景資源和圖像按鈕在每個活動,如:

if (theme_name == "red") { 
    button.setImageResource(R.drawable.red_button); 
} 

elif (theme_name == "green") { 
    button.setImageResource(R.drawable.green_button); 
} 
... 

現在,如果我一直做的是,在每一個活動,我基本上將混合在一個演示文稿,邏輯和UI元素大意大利麪代碼。

什麼是處理這類代碼的更好方法?

回答

1

您可以編寫自定義按鈕視圖。例如:

public final class ThemedButton extends Button { }並且在構造函數中,您可以根據需要初始化視圖。在構造函數中您有上下文,所以獲取首選項並設置主題按鈕的背景顏色。這樣你可以避免弄髒你的活動。

希望這會有所幫助:)