J'ai lu les commentaires sur l'application Contacts et comment elle utilise un thème pour chaque contact.
Probablement, l'application Contacts a des thèmes prédéfinis (pour chaque couleur primaire du matériau à partir d'ici: http://www.google.com/design/spec/style/color.html ).
Vous pouvez appliquer un thème avant une méthode setContentView dans la méthode onCreate.
Ensuite, l'application Contacts peut appliquer un thème au hasard à chaque utilisateur.
Cette méthode est:
setTheme(R.style.MyRandomTheme);
Mais cette méthode pose un problème, par exemple, elle peut changer la couleur de la barre d'outils, la couleur de l'effet de défilement, la couleur de l'ondulation, etc., mais elle ne peut pas changer la couleur de la barre d'état et la couleur de la barre de navigation (si vous voulez aussi la changer).
Ensuite, pour résoudre ce problème, vous pouvez utiliser la méthode avant et:
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.md_red_500));
getWindow().setStatusBarColor(getResources().getColor(R.color.md_red_700));
}
Ces deux méthodes modifient la navigation et la couleur de la barre d'état. N'oubliez pas que si vous définissez votre barre de navigation translucide, vous ne pouvez pas changer sa couleur.
Cela devrait être le code 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);
}
Vous pouvez utiliser un commutateur et générer un nombre aléatoire pour utiliser des thèmes aléatoires, ou, comme dans l'application Contacts, chaque contact a probablement un numéro prédéfini associé.
Un échantillon de thème:
<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>
Désolé pour mon anglais.