Kako vključiti temno temo v aplikacijo za Android

Za razvijalce je ustvarjanje aplikacije za Android preprost postopek - oblikovanje privlačnega uporabniškega vmesnika je dejansko težko. Zato smo napisali priročnik "Kako oblikovati uporabniški vmesnik za Android, ki ne zanič", za razvijalce, ki potrebujejo nekaj navdiha pri ustvarjanju preprostih, a privlačnih uporabniških vmesnikov. V tem priročniku smo na kratko omenili dodajanje teme temnega / nočnega načina v vaše aplikacije, v tem priročniku pa vas bomo preučili skozi.

Če dodate temo temnega / nočnega načina v vašo aplikacijo, je za vaše uporabnike odlična možnost - prihrani življenjsko dobo baterije in je veliko lažje na očeh ponoči. Belo ozadje na črnem besedilu ali kakršna koli kombinacija "svetlih" barv v vašem uporabniškem vmesniku je resnično stresno za oči, zlasti ponoči. Tako je temno ozadje s svetlejšim besedilom veliko manj stresno in škodljivo za oči, zato so številne priljubljene aplikacije začele vključevati temno temo - YouTube in Reddit v zadnjem času, čeprav Facebook še vedno ni objavil svojega, potem ko je obljubil enega v Maj.

Če želite v aplikacijo za Android preprosto dodati zaskočen temen način, upoštevajte ta vodič za pripombe in komentirajte, če naletite na kakršne koli težave!

Ustvarjanje lastnosti XML

Najprej morate ustvariti datoteko z atributi XML, ki bo obravnavala tematiko. To je veliko bolje, kot da v svoj APK vključite dva nabora virov za dve različni temi in s tem povečate svojo velikost APK-ja, saj lahko Android izvirno spreminja barve atributov skozi ta XML.

Torej v mapi z viri v aplikaciji ustvarite datoteko z imenom attrs.xml in dodajte te vrstice ( to so atributi, ki jih je mogoče slog):

Pred Lollipopom nismo mogli določiti atributov za črpalke, zato smo morali določiti identifikacijske vire za črpalke - vendar to ne drži več.

Dodajanje slogov

Za to delo moramo ustvariti dva ločena sloga, ki bosta imela isto osnovo. Prva bo očitno vaša primarna 'svetla' tema, druga pa vaša 'temna' tema.

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

Tu so dejanski slogi za določeno dejavnost:

 # F4F4F6 # 33343B 

Eno od teh tem morate določiti v Manifestu za dejavnost aplikacije, kar je v tem primeru FeedActivity.

Stiliziranje pogledov

Tu je primer stiliziranja pogledov - v tem primeru gre za napako pri preusmeritvi »Stran ni najdena«.

Kako omogočiti dinamično preklapljanje tem

Najboljši in najučinkovitejši način za dinamično preklapljanje tem je nalaganje vrednosti SharedPreference, ki se uporablja za shranjevanje nastavitev v primerek aplikacije z vzorcem Singleton, kar pomeni, da nam tega ne bo treba izvajati na začetku vsake dejavnosti.

 javni razred App razširja aplikacijo {javni statični končni String TAG = "App"; zasebni logični isNightModeEnabled = false; @Override javno razveljavi onCreate () {super.onCreate (); // Tu naložimo stanje nočnega načina. SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (to); this.isNightModeEnabled = mPrefs.getBoolean ("NIGHT_MODE", napačno); } javni boolean isNightModeEnabled () {return isNightModeEnabled; } javna void setIsNightModeEnabled (logična vrednost jeNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

Ker se ta primerek zažene pred čim drugim, vam omogoča, da pokličete isNightModeEnabled () Boolean kadarkoli želite, v kateri koli dejavnosti, ki pripada aplikaciji, ko jo odprete.

 javni končni razred FeedActivity razširja AppCompatActivity {zasebni končni statični niz TAG = “FeedActivity”; @Override zaščiten void onCreate (Bundle saveInstanceState) {if (MyApplication.getInstance (). IsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (shranjenoInstanceState); setContentView (R.layout.activity_feed); }} 

Če pa želite uporabiti drugo temo od tiste, ki je določena v datoteki manifestov, morate to storiti, preden pokličete nadrejeni način onCreate ().

Nastavitev stanja z aplikacijo AppCompat

AppCompat je resnično uporaben za široko paleto stvari in v tem primeru ga bomo uporabili za nastavitev stanja načina. To pomeni, da vam ni več treba uporabljati primerka aplikacije, da ustvarite predpomnjeno stanje, s čimer zmanjšate količino predpomnilnika aplikacije ( čeprav zelo majhen rob ).

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

Tukaj lahko uporabite:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

Pridobivanje države

 AppCompatDelegate.getDefaultNightMode (); javni končni razred FeedActivity razširja AppCompatActivity {zasebni končni statični niz TAG = “FeedActivity”; @Override zaščiten void onCreate (Bundle saveInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (shranjenoInstanceState); setContentView (R.layout.activity_feed); }} 

To bi moralo biti to - lahko nadaljujete s prilagajanjem in spreminjanjem vrednosti po svojih željah, vendar je ta vodnik odličen uvod, da začnete z vključevanjem domače temne teme v aplikacijo za Android.

Zanimivi Članki