Какой хороший подход, чтобы получить цвета темы с сервера и изменить его во всем приложении для Android? - PullRequest
0 голосов
/ 23 января 2019

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

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

Вещи, которые я получил во время исследования:

  • Я установил цвета, создающие темы, но мы не можем изменитьЗначения темы во время выполнения.
  • Хранение цветов в общих настройках и их установка вручную везде.

Каков наилучший подход для этого?

1 Ответ

0 голосов
/ 23 января 2019
public class ChangeThemeActivity extends Activity implements OnClickListener
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    Utils.onActivityCreateSetTheme(this);
    setContentView(R.layout.main);

                findViewById(R.id.button1).setOnClickListener(this);
      findViewById(R.id.button2).setOnClickListener(this);
      findViewById(R.id.button3).setOnClickListener(this);
}
 @Override
 public void onClick(View v)
 {
      // TODO Auto-generated method stub
      switch (v.getId())
      {
      case R.id.button1:
      Utils.changeToTheme(this, Utils.THEME_DEFAULT);
      break;
      case R.id.button2:
      Utils.changeToTheme(this, Utils.THEME_WHITE);
      break;
      case R.id.button3:
      Utils.changeToTheme(this, Utils.THEME_BLUE);
      break;
      }
 }
   }

Utils.java

public class Utils
{
 private static int sTheme;
 public final static int THEME_DEFAULT = 0;
 public final static int THEME_WHITE = 1;
 public final static int THEME_BLUE = 2;
     /**
     * Set the theme of the Activity, and restart it by creating a new Activity of 
  the 
    same type.
      */
    public static void changeToTheme(Activity activity, int theme)
     {
      sTheme = theme;
      activity.finish();
   activity.startActivity(new Intent(activity, activity.getClass()));
   }
    /** Set the theme of the activity, according to the configuration. */
    public static void onActivityCreateSetTheme(Activity activity)
    {
Context ctx = getContext();
      switch (sTheme)
      {
      default:
      case THEME_DEFAULT:
ctx.getResources().getIdentifier("BLUE_" + colorName, "color", 
ctx.getPackageName());

          break;

     }

где colorname - ваш динамический цвет с сервера

...