Cum să includeți o temă întunecată în aplicația dvs. de Android

Pentru dezvoltatori, crearea unei aplicații pentru Android este un proces ușor - proiectarea unei interfețe de utilizator atractive este ceea ce este de fapt dificil. Acesta este motivul pentru care am scris ghidul „Cum să proiectați o aplicație UI pentru Android care să nu sugă”, pentru dezvoltatorii care au nevoie de inspirație în crearea unor interfețe de utilizator simple, dar totodată atrăgătoare. În acel ghid am menționat pe scurt adăugarea unei teme despre modul întuneric / noapte în aplicațiile dvs., iar în acest ghid vă vom parcurge.

Adăugarea unei teme de mod întunecat / noapte în aplicație poate fi o opțiune excelentă pentru utilizatorii dvs. - economisește durata de viață a bateriei și este mult mai ușor la ochi noaptea. Un fundal alb cu text negru, sau orice combinație de culori „luminoase” din UI, este într-adevăr stresant pentru ochi, în special noaptea. Astfel, un fundal întunecat cu un text mai luminos este mult mai puțin stresant și dăunător pentru ochi, motiv pentru care multe aplicații populare au început să includă o temă întunecată - YouTube și Reddit cel mai recent, deși Facebook încă nu le-a publicat după ce a promis una înapoi Mai.

Dacă doriți să adăugați cu ușurință un mod de întunecare comutabil în aplicația dvs. Android, urmați acest ghid pentru Appuals și comentați dacă aveți probleme.

Crearea atributelor XML

Mai întâi trebuie să creați un fișier cu atribute XML care să se ocupe de tematică. Acest lucru este mult mai bun decât includerea a două seturi de resurse în APK-ul dvs. pentru două teme diferite și, astfel, balonarea dimensiunii APK, deoarece Android poate schimba în mod nativ culorile pe atribute prin acest XML.

Așadar, în folderul aplicației „resurse”, creați un fișier numit attrs.xml și adăugați aceste linii ( acestea sunt atribute stilate):

Înainte de Lollipop nu puteam specifica atribute pentru drawable, așa că a trebuit să specificăm ID-urile de resurse pentru drawable - cu toate acestea, acesta nu mai este cazul.

Adăugarea stilurilor

Pentru a face acest lucru, trebuie să creăm două stiluri separate care vor împărtăși aceeași bază. Primul va fi, evident, tema principală „ușoară”, iar a doua va fi tema ta „întunecată”.

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

Iată care sunt stilurile reale pentru o anumită activitate:

 # F4F4F6 # 33343B 

Trebuie să specificați una dintre aceste teme în Manifest pentru activitatea aplicației, care este, în acest caz, FeedActivity.

Stilizarea vizualizărilor

Iată un exemplu de stilizare a vizionărilor dvs. în acest exemplu, pentru o eroare de redirecționare „Pagina nu a fost găsită”.

Cum să activați comutarea dinamică a temelor

Cea mai bună și mai eficientă modalitate de a activa comutarea dinamică a temelor este încărcarea valorii SharedPreference care este utilizată pentru a stoca setarea în instanța de aplicare folosind modelul Singleton, ceea ce înseamnă că nu va trebui să o facem la începutul fiecărei activități.

 public class App extinde Aplicația {public static final String TAG = "App"; private boolean isNightModeEnabled = false; @ Supraversează public void onCreate () {super.onCreate (); // Încărcăm starea Modului Nocturn aici SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (aceasta); this.isNightModeEnabled = mPrefs.getBoolean („NIGHT_MODE”, fals); } public boolean isNightModeEnabled () {return isNightModeEnabled; } public void setIsNightModeEnabled (boolean isNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

Deoarece această instanță este lansată înainte de orice altceva, vă permite să apelați la booleanul isNightModeEnabled () oricând doriți, la orice activitate aparținând aplicației odată ce a fost deschisă.

 public class final FeedActivity extinde AppCompatActivity {private final static String TAG = „FeedActivity”; @Override protected void onCreate (Bundle savedInstanceState) {if (MyApplication.getInstance (). IsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (salvatInstanceState); setContentView (R.layout.activity_feed); }} 

Cu toate acestea, dacă doriți să aplicați o temă diferită de cea specificată în fișierul manifest, aceasta trebuie făcută înainte de a apela la metoda parent onCreate ().

Setarea statului folosind AppCompat

AppCompat este cu adevărat util pentru o gamă largă de lucruri și, în acest caz, îl vom folosi pentru a seta starea modului. Aceasta înseamnă că nu mai este necesar să utilizați instanța aplicației pentru a crea o stare în cache, reducând astfel funcția de cache a aplicației ( deși cu o marjă foarte mică ).

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

Aici, puteți utiliza fie:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

Recuperarea statului

 AppCompatDelegate.getDefaultNightMode (); public class final FeedActivity extinde AppCompatActivity {private final static String TAG = „FeedActivity”; @Override protected void onCreate (Bundle savedInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (salvatInstanceState); setContentView (R.layout.activity_feed); }} 

Asta ar trebui să fie - puteți continua să personalizați și să reglați valorile după bunul plac, dar acest ghid este o introducere excelentă pentru a vă începe să includeți o temă întunecată nativă în aplicația dvs. Android.

Articole Interesante