Kako uključiti tamnu temu u svoju Androidovu aplikaciju

Za programere izrada Android aplikacije jednostavan je postupak - dizajniranje privlačnog korisničkog sučelja zapravo je teško. Zato smo napisali vodič „Kako dizajnirati korisničko sučelje za Android aplikaciju koja ne spušta“, za programere koji trebaju inspiraciju za stvaranje jednostavnih, ali privlačnih korisničkih sučelja. U tom smo vodiču kratko spomenuli dodavanje teme mračnog / noćnog načina u vaše aplikacije, a u ovom ćemo vas vodiču provesti kroz vas.

Dodavanje teme mračnog / noćnog načina u aplikaciju može biti izvrsna opcija za vaše korisnike - štedi život baterije, a noću je puno lakše. Bijela pozadina na crnom tekstu ili bilo koja kombinacija "svijetlih" boja na vašem korisničkom sučelju doista je stresna za oči, posebno noću. Dakle, tamna pozadina sa svjetlijim tekstom mnogo je manje stresna i štetna za oči, zbog čega su mnoge popularne aplikacije počele uključivati ​​tamnu temu - YouTube i Reddit odnedavno, iako Facebook još uvijek nije objavio njihovu nakon obećanja. Svibanj.

Ako želite jednostavno dodati zaobilazni mračni način u svoju Android aplikaciju, slijedite ovaj vodič za komentare i komentirajte ako naiđete na bilo kakve probleme!

Stvaranje XML atributa

Prvo morate stvoriti datoteku atributa XML koja će obraditi tematiku. Ovo je puno bolje nego da u svoj APK uključite dva seta resursa za dvije različite teme i na taj način povećate veličinu APK-a, jer Android može izvorno mijenjati boje na atributima kroz ovaj XML.

Dakle, u mapi s resursima vaše aplikacije stvorite datoteku s imenom attrs.xml i dodajte ove retke ( to su atributi koji se mogu stilizirati):

Prije Lollipopa nismo mogli odrediti atribute za nacrte, tako da smo morali odrediti ID-ove resursa za nacrte. Međutim, to više nije slučaj.

Dodavanje stilova

Da bismo ovo učinili, moramo stvoriti dva odvojena stila koji će dijeliti istu bazu. Prva će očito biti vaša primarna 'svijetla' tema, a druga će biti vaša 'mračna' tema.

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

Evo stvarnih stilova za određenu aktivnost:

 # F4F4F6 # 33343B 

Morate navesti jednu od tih tema u Manifestu za aktivnost aplikacije, što je u ovom slučaju FeedActivity.

Stiliziranje pogleda

Evo primjera stiliziranja pogleda - u ovom primjeru greška za preusmjeravanje stranice nije pronađena.

Kako omogućiti dinamičko prebacivanje tema

Najbolji i najučinkovitiji način da se omogući dinamično prebacivanje tema je učitavanje vrijednosti SharedPreference koja se koristi za spremanje postavki u instancu aplikacije pomoću uzorka Singleton, što znači da to nećemo morati činiti na početku svake aktivnosti.

 App javne klase proširuje Application {javni statički konačni String TAG = "App"; privatni boolean jeNightModeEnabled = false; @Override javno nevažeće onCreate () {super.onCreate (); // Ovdje učitavamo stanje noćnog načina. SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (ovo); this.isNightModeEnabled = mPrefs.getBoolean ("NIGHT_MODE", netočno); } javni boolean jeNightModeEnabled () {return isNightModeEnabled; } javni void setIsNightModeEnabled (boolean jeNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

Budući da se ovaj primjerak pokreće prije bilo čega drugog, omogućava vam da nazovete isNightModeEnabled () Boolean kad god želite, u bilo kojoj aktivnosti koja pripada aplikaciji nakon što je otvorite.

 javna finalna klasa FeedActivity proširuje AppCompatActivity {privatni konačni statički niz TAG = “FeedActivity”; @Override zaštićen void onCreate (Bundle saveInstanceState) {if (MyApplication.getInstance (). IsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (spremljenoInstanceState); setContentView (R.layout.activity_feed); }} 

Međutim, ako želite primijeniti neku drugu temu od one koja je navedena u datoteci manifesta, to treba učiniti prije pozivanja roditeljske metode onCreate ().

Postavljanje stanja pomoću aplikacije AppCompat

AppCompat je zaista koristan za širok raspon stvari, a u ovom slučaju koristit ćemo ga za postavljanje stanja načina. To znači da više ne trebate koristiti instancu aplikacije za izradu predmemoriranog stanja, čime ćete smanjiti količinu predmemorije aplikacije ( iako vrlo malenu maržu ).

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

Ovdje možete koristiti bilo koje:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

Dohvaćanje države

 AppCompatDelegate.getDefaultNightMode (); javna finalna klasa FeedActivity proširuje AppCompatActivity {privatni konačni statički niz TAG = “FeedActivity”; @Override zaštićen void onCreate (Bundle saveInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (spremljenoInstanceState); setContentView (R.layout.activity_feed); }} 

To bi trebalo biti - možete nastaviti s prilagođavanjem i prilagođavanjem vrijednosti po vašoj želji, ali ovaj je vodič izvrstan uvod za započinjanje s uključivanjem izvorne mračne teme u Androidovu aplikaciju.

Zanimljivi Članci