Ako zahrnúť temnú tému do aplikácie pre Android

Pre vývojárov je vytvorenie aplikácie pre Android ľahký proces - navrhnutie atraktívneho používateľského rozhrania je skutočne ťažké. Preto sme pre vývojárov, ktorí potrebujú nejakú inšpiráciu pri vytváraní jednoduchých, no atraktívnych používateľských rozhraní, napísali príručku „Ako navrhnúť používateľské rozhranie aplikácie pre Android, ktoré nie je na hovno“. V tomto sprievodcovi sme sa stručne zmienili o pridaní témy temného / nočného režimu k vašim aplikáciám a v tomto sprievodcovi vás prevedieme.

Pridanie témy temný / nočný režim do aplikácie môže byť pre používateľov skvelou voľbou - šetrí životnosť batérie a je v noci omnoho jednoduchšie pre oči. Biele pozadie na čiernom texte alebo akákoľvek kombinácia 'jasných' farieb v používateľskom rozhraní je skutočne stresujúca pre oči, najmä v noci. Tmavé pozadie so svetlejším textom je teda oveľa menej stresujúce a škodlivé pre oči, a preto sa začalo veľa populárnych aplikácií vrátane temnej témy - YouTube a Reddit naposledy, aj keď ich Facebook po zverejnení sľubu ešte nezverejnil. Smieť.

Ak chcete do svojej aplikácie pre Android ľahko pridať prepínateľný tmavý režim, postupujte podľa tohto sprievodcu aplikáciami a v prípade problémov sa vyjadrte.

Vytvorenie atribútov XML

Najprv musíte vytvoriť súbor atribútov XML, ktorý bude pracovať s tematikou. Je to omnoho lepšie ako zahrnúť do súboru APK dve sady zdrojov pre dve rôzne témy, a tak nafúknuť veľkosť súboru APK, pretože systém Android môže natívne meniť farby atribútov prostredníctvom tohto XML.

Takže v priečinku „Zdroje“ aplikácie vytvorte súbor s názvom attrs.xml a pridajte tieto riadky ( jedná sa o štýlové atribúty):

Pred Lollipopom sme nemohli zadať atribúty pre drawables, takže sme museli špecifikovať ID zdrojov pre drawables - to už však neplatí.

Pridanie štýlov

Aby to fungovalo, musíme vytvoriť dva samostatné štýly, ktoré budú zdieľať rovnakú základňu. Prvou bude zrejme vaša primárna „svetlá“ téma a druhou bude vaša „temná“ téma.

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

Tu sú skutočné štýly pre danú aktivitu:

 # F4F4F6 # 33343B 

Musíte uviesť jednu z týchto tém do manifestu pre činnosť aplikácie, ktorým je v tomto prípade FeedActivity.

Štylizácia pohľadov

Tu je príklad štylizácie vašich zobrazení - v tomto príklade je to chyba presmerovania „Stránka sa nenašla“.

Ako povoliť dynamické prepínanie tém

Najlepším a najúčinnejším spôsobom, ako povoliť dynamické prepínanie tém, je načítať hodnotu SharedPreference, ktorá sa používa na uloženie nastavenia do inštancie aplikácie pomocou vzoru Singleton, čo znamená, že to nebudeme musieť robiť na začiatku každej aktivity.

 public class App rozširuje Application {public static final String TAG = "App"; private boolean isNightModeEnabled = false; @Override public void onCreate () {super.onCreate (); // Tu načítame stav nočného režimu SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (this); this.isNightModeEnabled = mPrefs.getBoolean („NIGHT_MODE“, false); } public boolean isNightModeEnabled () {return isNightModeEnabled; } public void setIsNightModeEnabled (boolean isNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

Pretože táto inštancia sa spúšťa skôr, ako čokoľvek iné, umožňuje vám zavolať boNean isNightModeEnabled (), kedykoľvek budete chcieť, v akejkoľvek aktivite patriacej aplikácii po jej otvorení.

 verejná konečná trieda FeedActivity rozširuje AppCompatActivity {private final static String TAG = „FeedActivity“; @Override chránené void onCreate (Bundle uloženéInstanceState) {if (MyApplication.getInstance (). IsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (uloženéInstanceState); setContentView (R.layout.activity_feed); }} 

Ak však chcete použiť inú tému, ako je tá, ktorá je uvedená v súbore manifestu, musí sa to urobiť pred zavolaním nadradenej metódy onCreate ().

Nastavenie štátu pomocou AppCompat

AppCompat je skutočne užitočný pre celý rad vecí av tomto prípade ho použijeme na nastavenie režimu. To znamená, že už nemusíte používať inštanciu aplikácie na vytvorenie stavu v vyrovnávacej pamäti, čím sa obmedzí nadúvanie vyrovnávacej pamäte aplikácie ( aj keď s veľmi malým okrajom ).

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

Tu môžete použiť:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

Získavanie štátu

 AppCompatDelegate.getDefaultNightMode (); verejná konečná trieda FeedActivity rozširuje AppCompatActivity {private final static String TAG = „FeedActivity“; @Override chránené void onCreate (Bundle uloženéInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (uloženéInstanceState); setContentView (R.layout.activity_feed); }} 

Malo by to tak byť - môžete naďalej upravovať a vylepšovať hodnoty podľa svojich predstáv, ale tento sprievodca je skvelým úvodom, ktorý vám pomôže začať zahrnutím natívnej temnej témy do aplikácie pre Android.

Zaujímavé Články