Како укључити тамну тему у своју Андроид апликацију

За програмере прављење Андроид апликације једноставан је процес - дизајнирање привлачног корисничког сучеља заправо је тешко. Зато смо написали водич „Како дизајнирати корисничко сучеље за Андроид апликацију која не сиса“, за програмере којима је потребна инспирација у стварању једноставних, али привлачних корисничких сучеља. У том смо водичу кратко споменули додавање теме мрачног / ноћног режима у ваше апликације, а у овом водичу ћемо вас провести кроз њу.

Додавање теме мрачног / ноћног начина у апликацију може бити одлична опција за ваше кориснике - штеди живот батерије, а ноћу је много лакше. Бијела позадина на црном тексту или било која комбинација „свијетлих“ боја у вашем корисничком сучељу, заиста је стресна за очи, посебно ноћу. Дакле, тамна позадина са лакшим текстом много је мање стресна и штетна за очи, због чега су многе популарне апликације почеле укључивати тамну тему - ИоуТубе и Реддит однедавно, мада Фацебоок и даље није објавио њихову објаву након што је обећао Може.

Ако желите да једноставно додате загасити мрачни режим у Андроид апликацију, следите овај водич за жалбе и коментаришите ако наиђете на било какве проблеме!

Стварање КСМЛ атрибута

Прво морате да креирате датотеку атрибута КСМЛ која ће обрадити обраду тема. Ово је много боље него да у свој АПК укључите два сета ресурса за две различите теме и на тај начин повећате величину АПК-а, јер Андроид може на природан начин променити боје на атрибутима кроз овај КСМЛ.

На тај начин у мапи „Ресурси“ апликације направите датотеку названу аттрс.кмл и додајте ове редове ( то су атрибути који се могу стилизирати):

Пре Лоллипопа нисмо могли да одредимо атрибуте за црне новине, па смо морали да одредимо ИД ресурса за црне новине - међутим, то више није случај.

Додавање стилова

Да бисмо ово учинили, морамо да створимо два одвојена стила који ће делити исту базу. Прва ће очигледно бити ваша примарна 'светла' тема, а друга ће бити ваша 'мрачна' тема.

 # Ф4Ф4Ф6 # 96Ф4Ф4Ф6 #ФФФФ # Ф2Ф2Ф3 @ дравабле / и_лигхт_плхолдер # 33343Б / итем> # 8033343Б # 28292е # Ф2Ф2Ф3 @ дравабле / и_дарк_пхолдер 

Ево стварних стилова за одређену активност:

 # Ф4Ф4Ф6 # 33343Б 

Морате да одредите једну од ових тема у Манифесту за активност апликације, што је у овом случају ФеедАцтивити.

Стилизовање погледа

Ево примера стилизације ваших погледа - у овом примеру грешка за грешку у преусмеравању „Страница није пронађена“.

Како омогућити динамичко пребацивање тема

Најбољи и најефикаснији начин да се омогући динамично пребацивање тема је учитавање вредности СхаредПреференце која се користи за чување поставки у инстанци апликације помоћу узорка Синглетон, што значи да то нећемо морати да радимо на почетку сваке активности.

 Апликација за јавну класу проширује апликацију {јавна статичка завршница Стринг ТАГ = "Апп"; приватни боолеан јеНигхтМодеЕнаблед = фалсе; @Оверриде јавно неважеће онЦреате () {супер.онЦреате (); // Овдје учитавамо стање ноћног режима. СхаредПреференцес мПрефс = ПреференцеМанагер.гетДефаултСхаредПреференцес (ово); тхис.исНигхтМодеЕнаблед = мПрефс.гетБоолеан („НИГХТ_МОДЕ“, лажно); } јавни боолеан исНигхтМодеЕнаблед () {ретурн исНигхтМодеЕнаблед; } јавни воид сетИсНигхтМодеЕнаблед (боолеан јеНигхтМодеЕнаблед) {тхис.исНигхтМодеЕнаблед = исНигхтМодеЕнаблед; }} 

Како се ова инстанца покреће пре било чега другог, омогућава вам да позовете исНигхтМодеЕнаблед () Боолеан кад год желите, у било којој активности која припада апликацији након што је отворите.

 јавна финална класа ФеедАцтивити проширује АппЦомпатАцтивити {приватни крајњи статички низ ТАГ = “ФеедАцтивити”; @Оверриде заштићен воид онЦреате (Бундле савеИнстанцеСтате) {иф (МиАпплицатион.гетИнстанце (). ИсНигхтМодеЕнаблед ()) {сетТхеме (Р.стиле.ФеедАцтивитиТхемеДарк); } супер.онЦреате (савеИнстанцеСтате); сетЦонтентВиев (Р.лаиоут.ацтивити_феед); }} 

Међутим, ако желите применити другачију тему од оне која је наведена у датотеци манифеста, то мора бити урађено пре него што назовете родитељски метод онЦреате ().

Подешавање стања помоћу апликације АппЦомпат

АппЦомпат је заиста користан за широк спектар ствари и у овом случају ћемо га користити за подешавање стања режима. То значи да више не требате користити инстанцу апликације да бисте креирали предмеморирано стање, чиме ћете смањити количину предмеморије апликације ( додуше, са врло малом маргином ).

 АппЦомпатДелегате .сетДефаултНигхтМоде (АппЦомпатДелегате.МОДЕ_НИГХТ_ИЕС); 

Овде можете користити било које:

  • АппЦомпатДелегате.МОДЕ_НИГХТ_ИЕС

    АппЦомпатДелегате.МОДЕ_НИГХТ_НО

    АппЦомпатДелегате.МОДЕ_НИГХТ_АУТО

Дохваћање државе

 АппЦомпатДелегате.гетДефаултНигхтМоде (); јавна финална класа ФеедАцтивити проширује АппЦомпатАцтивити {приватни крајњи статички низ ТАГ = “ФеедАцтивити”; @Оверриде заштићен воид онЦреате (Бундле савеИнстанцеСтате) {иф (АппЦомпатДелегате.гетДефаултНигхтМоде () == АппЦомпатДелегате.МОДЕ_НИГХТ_ИЕС) {сетТхеме (Р.стиле.ФеедАцтивитиТхемеДарк); } супер.онЦреате (савеИнстанцеСтате); сетЦонтентВиев (Р.лаиоут.ацтивити_феед); }} 

То би требало бити - можете наставити с прилагођавањем и прилагођавањем вриједности по вашој жељи, али овај је водич одличан увод за започињање са укључивањем матичне мрачне теме у Андроид апликацију.

Занимљиви Чланци