Я читаю комментарии о приложении контактов и о том, как оно использует тему для каждого контакта.
Вероятно, приложение контактов имеет несколько предопределенных тем (для каждого основного цвета материала отсюда: http://www.google.com/design/spec/style/color.html ).
Вы можете применить тему перед методом setContentView внутри метода onCreate.
Затем приложение «Контакты» может применить тему произвольно для каждого пользователя.
Этот метод:
setTheme(R.style.MyRandomTheme);
Но у этого метода есть проблема, например, он может изменить цвет панели инструментов, цвет эффекта прокрутки, цвет ряби и т. Д., Но он не может изменить цвет строки состояния и цвет панели навигации (если вы хотите изменить его тоже).
Затем для решения этой проблемы вы можете использовать метод до и:
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.md_red_500));
getWindow().setStatusBarColor(getResources().getColor(R.color.md_red_700));
}
Эти два метода меняют навигацию и цвет строки состояния. Помните, что если вы установите прозрачную панель навигации, вы не сможете изменить ее цвет.
Это должен быть окончательный код:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.MyRandomTheme);
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.myrandomcolor1));
getWindow().setStatusBarColor(getResources().getColor(R.color.myrandomcolor2));
}
setContentView(R.layout.activity_main);
}
Вы можете использовать переключатель и генерировать случайное число, чтобы использовать случайные темы, или, как и в приложении контактов, каждому контакту, вероятно, присвоен заранее определенный номер.
Образец темы:
<style name="MyRandomTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/myrandomcolor1</item>
<item name="colorPrimaryDark">@color/myrandomcolor2</item>
<item name="android:navigationBarColor">@color/myrandomcolor1</item>
</style>
Извините за мой английский.