2014-02-09 3 views
0

Пожалуйста, обратите внимание, что я имею в виду не андроид темы как 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); 
} 
... 

Теперь, если я продолжаю делать, что во всех видах деятельности, я существенно перемешайте презентации, логические и элементы пользовательского интерфейса в один большой код спагетти.

Что такое лучший способ обработки такого кода?

ответ

1

Вы можете написать пользовательский вид кнопки. Пример:

public final class ThemedButton extends Button { } и в конструкторе вы можете начать просмотр по своему желанию. В конструкторе у вас есть контекст, так что получите предпочтение и установите цвет фона вашей тематической кнопки. Таким образом, вы избегаете загрязнять свою деятельность.

Надеюсь, что это поможет :)

Смежные вопросы