Cara Sertakan Tema Gelap dalam Apl Android anda

Bagi pemaju, mewujudkan aplikasi Android adalah proses yang mudah - merancang UI yang menarik adalah apa yang sebenarnya sukar. Itulah sebabnya kami menulis panduan "Bagaimana Reka Bentuk Aplikasi Android UI Yang Tidak Menyedut", untuk pemaju yang memerlukan sedikit inspirasi dalam membuat UI yang mudah dan menarik. Dalam panduan itu, kami sebut secara ringkas sebutan tema mod gelap / malam untuk aplikasi anda, dan dalam panduan ini kami akan membimbing anda menerusinya.

Menambah tema mod gelap / malam untuk apl anda boleh menjadi pilihan hebat untuk pengguna anda - ia menjimatkan masa hayat, dan lebih mudah pada mata pada waktu malam. Latar belakang putih pada teks hitam, atau kombinasi warna 'terang' di UI anda, benar-benar tertekan pada mata, terutama pada waktu malam. Oleh itu, latar belakang yang gelap dengan teks yang lebih ringan kurang tertekan dan membahayakan mata, itulah sebabnya banyak aplikasi popular telah dimulakan termasuk tema gelap - YouTube dan Reddit yang paling baru-baru ini, walaupun Facebook masih belum menerbitkannya setelah menjanjikan satu kembali Mungkin.

Jika anda ingin dengan mudah menambah mod gelap yang gelap kepada apl Android anda, ikuti panduan Appuals ini dan komen jika anda menghadapi sebarang masalah!

Mewujudkan Sifat XML

Mula-mula anda perlu mencipta fail sifat atribut XML yang akan menanganinya. Ini jauh lebih baik daripada termasuk dua set sumber dalam APK anda untuk dua tema yang berbeza, dan dengan itu membekalkan saiz APK anda, kerana Android boleh mengubah warna pada atribut melalui XML ini.

Jadi dalam folder 'sumber' app anda, buat fail yang bernama attrs.xml dan tambahkan baris ini ( ini adalah atribut gaya):

Sebelum Lollipop kami tidak dapat menentukan atribut untuk menjawab pertanyaan, jadi kami perlu menentukan ID sumber untuk pembantah - namun ini tidak lagi berlaku.

Menambah Gaya

Untuk membuat kerja ini, kita perlu mencipta dua gaya berasingan yang akan berkongsi pangkalan yang sama. Yang pertama akan menjadi tema 'cahaya' utama anda, dan yang kedua akan menjadi tema 'gelap' anda.

 # F4F4F6 # 96F4F4F6 #FFFF # F2F2F3 @ drawable / i_light_plholder # 33343B / item> # 8033343B # 28292e # F2F2F3 @ drawable / i_dark_pholder 

Berikut adalah gaya sebenar untuk aktiviti yang diberikan:

 # F4F4F6 # 33343B 

Anda perlu menentukan satu daripada tema ini ke dalam manifes untuk aktiviti aplikasinya, yang dalam kes ini adalah FeedActivity.

Menggambar Views

Berikut adalah contoh memodenkan pandangan anda - dalam contoh ini, untuk ralat redirect "Halaman tidak dijumpai".

Bagaimana untuk Membolehkan Menukar Tema Dinamik

Cara terbaik dan paling berkesan untuk mengaktifkan pensuisan tema dinamik ialah memuat nilai SharedPreference yang digunakan untuk menyimpan tetapan ke dalam contoh Permohonan menggunakan corak Singleton, yang bermaksud kita tidak perlu melakukannya pada permulaan setiap Aktiviti.

 App kelas awam memanjangkan Aplikasi {String akhir statik awam TAG = "App"; boolean peribadi isNightModeEnabled = false; @Override public void onCreate () {super.onCreate (); // Kami memuatkan keadaan Mod Malam di sini SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (this); this.isNightModeEnabled = mPrefs.getBoolean ("NIGHT_MODE", false); } boolean awam adalahNightModeEnabled () {return isNightModeEnabled; } public void setIsNightModeEnabled (boolean isNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

Kerana contoh ini sedang dilancarkan sebelum apa-apa lagi, ia membolehkan anda memanggil isNightModeEnabled () Boolean bila-bila masa anda mahu, dalam apa-apa aktiviti yang dimiliki oleh aplikasi sebaik sahaja ia dibuka.

 FeedActivity kelas akhir awam meluaskan AppCompatActivity {String statik terakhir peribadi TAG = "FeedActivity"; @Override dilindungi tidak sah onCreate (Bundle savedInstanceState) {if (MyApplication.getInstance (). IsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState); setContentView (R.layout.activity_feed); }} 

Walau bagaimanapun, jika anda ingin memohon tema yang berbeza daripada yang dinyatakan dalam fail manifes, ia mesti dilakukan sebelum memanggil kaedah induk onCreate ().

Menetapkan Negeri Menggunakan AppCompat

AppCompat sangat berguna untuk pelbagai perkara, dan dalam kes ini, kami akan menggunakannya untuk menetapkan keadaan mod. Ini bermakna anda tidak lagi perlu menggunakan contoh aplikasi untuk membuat keadaan cache, dengan itu mengurangkan penggunaan cache aplikasi ( walaupun dengan margin yang sangat kecil ).

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

Di sini, anda boleh menggunakan:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

Mengambil Negeri

 AppCompatDelegate.getDefaultNightMode (); FeedActivity kelas akhir awam meluaskan AppCompatActivity {String statik terakhir peribadi TAG = "FeedActivity"; @Override dilindungi tidak sah onCreate (Bundle savedInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState); setContentView (R.layout.activity_feed); }} 

Itu sahaja - anda boleh terus menyesuaikan dan mengubah nilai mengikut keinginan anda, tetapi panduan ini adalah pengenalan hebat untuk membolehkan anda bermula dengan memasukkan tema gelap asli dalam apl Android anda.

Artikel Yang Menarik