2014-02-09 202 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 { }并且在构造函数中,您可以根据需要初始化视图。在构造函数中您有上下文,所以获取首选项并设置主题按钮的背景颜色。这样你可以避免弄脏你的活动。

希望这会有所帮助:)