Saya membaca komentar tentang aplikasi kontak dan bagaimana menggunakan tema untuk setiap kontak.
Mungkin, aplikasi kontak memiliki beberapa tema yang telah ditentukan sebelumnya (untuk setiap warna primer materi dari sini: http://www.google.com/design/spec/style/color.html ).
Anda dapat menerapkan tema sebelum metode setContentView di dalam metode onCreate.
Kemudian aplikasi kontak dapat menerapkan tema secara acak untuk setiap pengguna.
Metode ini adalah:
setTheme(R.style.MyRandomTheme);
Tetapi metode ini memiliki masalah, misalnya dapat mengubah warna bilah alat, warna efek gulir, warna riak, dll, tetapi tidak dapat mengubah warna bilah status dan warna bilah navigasi (jika Anda ingin mengubahnya juga).
Kemudian untuk mengatasi masalah ini, Anda dapat menggunakan metode ini sebelumnya dan:
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.md_red_500));
getWindow().setStatusBarColor(getResources().getColor(R.color.md_red_700));
}
Dua metode ini mengubah warna bilah navigasi dan status. Ingat, jika Anda mengatur bilah navigasi Anda tembus, Anda tidak dapat mengubah warnanya.
Ini harus menjadi kode terakhir:
@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);
}
Anda dapat menggunakan sakelar dan menghasilkan nomor acak untuk menggunakan tema acak, atau, seperti di aplikasi kontak, setiap kontak mungkin memiliki nomor yang telah ditentukan terkait.
Contoh 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>
Maaf untuk bahasa inggris saya.