Eu li os comentários sobre o aplicativo de contatos e como ele usa um tema para cada contato.
Provavelmente, o aplicativo de contatos tem alguns temas predefinidos (para cada cor primária do material a partir daqui: http://www.google.com/design/spec/style/color.html ).
Você pode aplicar um tema antes do método setContentView dentro do método onCreate.
Em seguida, o aplicativo de contatos pode aplicar um tema aleatoriamente a cada usuário.
Este método é:
setTheme(R.style.MyRandomTheme);
Mas esse método tem um problema, por exemplo, ele pode alterar a cor da barra de ferramentas, a cor do efeito de rolagem, a cor da ondulação, etc.
Em seguida, para resolver esse problema, você pode usar o método antes e:
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.md_red_500));
getWindow().setStatusBarColor(getResources().getColor(R.color.md_red_700));
}
Este método dois altera a cor da barra de navegação e status. Lembre-se, se você definir sua barra de navegação como translúcida, não poderá mudar sua cor.
Este deve ser o código final:
@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);
}
Você pode usar um comutador e gerar um número aleatório para usar temas aleatórios ou, como no aplicativo de contatos, cada contato provavelmente tem um número predefinido associado.
Uma amostra do tema:
<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>
Desculpe pelo meu Inglês.