Ho letto i commenti sull'app dei contatti e su come utilizzare un tema per ciascun contatto.
Probabilmente, l'app dei contatti ha alcuni temi predefiniti (per ogni colore primario del materiale da qui: http://www.google.com/design/spec/style/color.html ).
È possibile applicare un tema prima di un metodo setContentView all'interno del metodo onCreate.
Quindi l'app dei contatti può applicare un tema in modo casuale a ciascun utente.
Questo metodo è:
setTheme(R.style.MyRandomTheme);
Ma questo metodo ha un problema, ad esempio può cambiare il colore della barra degli strumenti, il colore dell'effetto di scorrimento, il colore dell'ondulazione, ecc., Ma non può cambiare il colore della barra di stato e il colore della barra di navigazione (se si desidera cambiarlo anche).
Quindi, per risolvere questo problema, è possibile utilizzare il metodo prima 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));
}
Questi due metodi cambiano il colore della barra di stato e di navigazione. Ricorda, se imposti la tua barra di navigazione in modo traslucido, non puoi cambiarne il colore.
Questo dovrebbe essere il codice finale:
@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);
}
Puoi usare un interruttore e generare un numero casuale per usare temi casuali o, come nell'app dei contatti, probabilmente a ciascun contatto è associato un numero predefinito.
Un esempio di 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>
Mi scusi per il mio inglese.