Ich habe die Kommentare zur Kontakt-App gelesen und wie sie für jeden Kontakt ein Thema verwendet.
Wahrscheinlich hat die Kontakt-App einige vordefinierte Themen (für jede Materialprimärfarbe von hier: http://www.google.com/design/spec/style/color.html ).
Sie können ein Thema vor der setContentView-Methode in der onCreate-Methode anwenden.
Dann kann die Kontakt-App jedem Benutzer zufällig ein Thema zuweisen.
Diese Methode ist:
setTheme(R.style.MyRandomTheme);
Diese Methode hat jedoch ein Problem, z. B. kann sie die Farbe der Symbolleiste, die Farbe des Bildlaufeffekts, die Farbe der Welligkeit usw. ändern, aber die Farbe der Statusleiste und der Navigationsleiste kann nicht geändert werden (wenn Sie sie auch ändern möchten).
Um dieses Problem zu lösen, können Sie die Methode vor und verwenden:
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.md_red_500));
getWindow().setStatusBarColor(getResources().getColor(R.color.md_red_700));
}
Diese beiden Methoden ändern die Farbe der Navigations- und Statusleiste. Denken Sie daran, wenn Sie Ihre Navigationsleiste durchscheinend einstellen, können Sie ihre Farbe nicht ändern.
Dies sollte der endgültige Code sein:
@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);
}
Sie können einen Schalter verwenden und eine Zufallszahl generieren, um zufällige Themen zu verwenden, oder wie in der Kontakt-App ist jedem Kontakt wahrscheinlich eine vordefinierte Nummer zugeordnet.
Ein Beispiel für ein Thema:
<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>
Entschuldigung für mein Englisch.