Kaip į „Android“ programą įtraukti tamsią temą

Kūrėjams „Android“ programos sukūrimas yra paprastas procesas - iš tiesų sudėtinga suprojektuoti patrauklią vartotojo sąsają. Štai kodėl mes parašėme vadovą „Kaip suprojektuoti„ Android App UI “, kuris neužsiima“, skirtą kūrėjams, kuriems reikia šiek tiek įkvėpimo kuriant paprastas, bet patrauklias UI. Tame vadove mes trumpai paminėjome, kad jūsų programose pridedama tamsaus / naktinio režimo tema, o šiame vadove mes jums padėsime.

Pridėję tamsiojo / naktinio režimo temą prie savo programos, jūsų vartotojams gali būti puikus pasirinkimas - tai taupo akumuliatoriaus energiją, o naktį yra daug lengviau. Baltas fonas ant juodo teksto arba bet koks „šviesių“ spalvų derinys jūsų vartotojo sąsajoje tikrai kelia stresą akims, ypač naktį. Taigi tamsus fonas su šviesesniu tekstu yra daug mažiau stresas ir žalingas akims, todėl pastaruoju metu pradėta naudoti daugybė populiarių programų, apimančių tamsią temą - „YouTube“ ir „Reddit“, nors „Facebook“ vis dar nepaskelbė savo, pažadėjusi vieną atgal Gegužė.

Jei norite lengvai prie savo „Android“ programos pridėti perjungiamą tamsųjį režimą, vadovaukitės šiuo „Appuals“ vadovu ir pakomentuokite, jei kyla kokių nors problemų!

XML atributų kūrimas

Pirmiausia turite sukurti XML atributų failą, kuris tvarkytų juos. Tai daug geriau, nei į APK įtraukti du išteklių rinkinius dviem skirtingoms temoms ir tokiu būdu išpūsti APK dydį, nes „Android“ per šį XML gali iš esmės pakeisti atributų spalvas.

Taigi programos aplanke „ Šaltiniai“ sukurkite failą pavadinimu attrs.xml ir pridėkite šias eilutes ( tai yra stiliaus atributai):

Prieš „Lollipop“ negalėjome nurodyti draiverių atributų, todėl turėjome nurodyti draustinių išteklių ID, tačiau to nebetenka.

Stilių pridėjimas

Norėdami atlikti šį darbą, turime sukurti du atskirus stilius, kurie turėtų tą pačią bazę. Pirmoji akivaizdžiai bus jūsų pagrindinė „šviesioji“ tema, o antroji bus jūsų „tamsi“ tema.

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

Čia yra faktiniai tam tikros veiklos stiliai:

 # F4F4F6 # 33343B 

Programos veiklos manifeste turite nurodyti vieną iš šių temų, kuri šiuo atveju yra „FeedActivity“.

Vaizdų stilizavimas

Čia yra jūsų nuomonių stilizavimo pavyzdys - šiame pavyzdyje nurodoma peradresavimo klaida „Puslapis nerastas“.

Kaip įjungti dinaminį temos perjungimą

Geriausias ir efektyviausias būdas įjungti dinaminį temų perjungimą yra įkelti „SharedPreference“ vertę, kuri naudojama norint išsaugoti parametrus programos egzemplioriuje naudojant „Singleton“ modelį, tai reiškia, kad mums nereikės to daryti kiekvienos veiklos pradžioje.

 viešosios klasės programa išplečia taikymą {viešas statinis galutinis eilutė TAG = "programa"; privati ​​boolean isNightModeEnabled = klaidinga; @Atšaukti viešą tuštumą onCreate () {super.onCreate (); // Čia įkeliame naktinio režimo būseną SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (this); this.isNightModeEnabled = mPrefs.getBoolean („NIGHT_MODE“, klaidinga); } viešoji loginė isNightModeEnabled () {return isNightModeEnabled; } public void setIsNightModeEnabled (loginė isNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

Kadangi šis egzempliorius yra paleistas anksčiau nei kas nors kitas, jis leidžia jums bet kada norite skambinti isNightModeEnabled () Boolean bet kokioje veikloje, priklausančioje programai, kai ji bus atidaryta.

 viešoji galutinė klasė „FeedActivity“ išplečia „AppCompatActivity“ {privati ​​galutinė statinė eilutė TAG = „FeedActivity“; @Apsaugoti negaliojantį „onCreate“ (Bundle savedInstanceState) {if (MyApplication.getInstance (). IsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState); „setContentView“ (R.layout.activity_feed); }} 

Tačiau, jei norite pritaikyti kitą, nei nurodyta manifesto faile, temą, tai reikia padaryti prieš skambinant tėvui „onCreate ()“ metodu.

Būsenos nustatymas naudojant „AppCompat“

„AppCompat“ yra tikrai naudinga įvairiems dalykams, ir šiuo atveju mes ją naudosime režimo būsenai nustatyti. Tai reiškia, kad jums nebereikės naudoti programos egzemplioriaus, kad sukurtumėte talpyklos būseną, taigi sumažinsite programos talpyklos padidėjimą ( nors ir labai mažą paraštę ).

 „AppCompatDelegate“ .setDefaultNightMode („AppCompatDelegate.MODE_NIGHT_YES“); 

Čia galite naudoti:

  • „AppCompatDelegate“ .MODE_NIGHT_YES

    „AppCompatDelegate.MODE_NIGHT_NO“

    „AppCompatDelegate.MODE_NIGHT_AUTO“

Valstybės susigrąžinimas

 „AppCompatDelegate.getDefaultNightMode“ (); viešoji galutinė klasė „FeedActivity“ išplečia „AppCompatActivity“ {privati ​​galutinė statinė eilutė TAG = „FeedActivity“; @Apsaugoti negaliojantį „onCreate“ (Bundle saveInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState); „setContentView“ (R.layout.activity_feed); }} 

Taip turėtų būti - galite ir toliau tinkinti bei koreguoti vertybes pagal savo skonį, tačiau šis vadovas yra puiki įžanga, padėsianti jums pradėti įtraukti gimtąją tamsiąją temą į „Android“ programą.

Įdomios Straipsniai