Kā savā Android lietotnē iekļaut tumšu tēmu

Izstrādātājiem Android lietotnes izveidošana ir vienkāršs process - pievilcīgas lietotāja saskarnes noformēšana ir tas, kas patiesībā ir sarežģīts. Tāpēc mēs uzrakstījām ceļvedi “Kā noformēt Android lietotnes lietotāja saskarni, kas nepieredz” izstrādātājiem, kuriem nepieciešama zināma iedvesma vienkāršu, bet pievilcīgu saskarņu izveidē. Šajā ceļvedī mēs īsi pieminējām tumša / nakts režīma motīva pievienošanu jūsu lietotnēm, un šajā rokasgrāmatā mēs jums palīdzēsim.

Tumša / nakts režīma motīva pievienošana lietotnei var būt lieliska iespēja lietotājiem - tas ietaupa akumulatora enerģiju, un naktī tas ir daudz vieglāk acīm. Balts fons uz melna teksta vai jebkura “gaišu” krāsu kombinācija jūsu lietotāja saskarnē ir acīm patiešām satraucošs, it īpaši naktī. Tādējādi tumšs fons ar gaišāku tekstu ir daudz mazāk stresa un kaitīgs acīm, tāpēc nesen ir sākušās daudzas populāras lietotnes, ieskaitot tumšu tēmu - YouTube un Reddit, lai gan Facebook joprojām nav publicējis savējo, apsolot vienu atpakaļ. Maijā.

Ja vēlaties savai Android lietotnei viegli pievienot pārslēdzamu tumšo režīmu, izpildiet šo Appuals rokasgrāmatu un komentējiet, ja rodas kādas problēmas!

XML atribūtu izveidošana

Vispirms jāizveido XML atribūtu fails, kas tiks apstrādāts ar tiem. Tas ir daudz labāk, nekā iekļaut APK divos resursos divas dažādas tēmas, tādējādi uzpūšot APK lielumu, jo Android caur šo XML var dabiski mainīt atribūtu krāsas.

Tāpēc savas lietotnes mapē “resursi” izveidojiet failu ar nosaukumu attrs.xml un pievienojiet šīs rindas ( tie ir stilīgi atribūti):

Pirms Lollipop mēs nevarējām norādīt draiveru atribūtus, tāpēc mums bija jāprecizē draiveru resursu ID - tomēr tas vairs nav tas gadījums.

Stilu pievienošana

Lai veiktu šo darbu, mums jāizveido divi atsevišķi stili, kuriem būs viena un tā pati bāze. Pirmais acīmredzami būs jūsu galvenā “gaišā” tēma, bet otrais būs jūsu “tumšā” tēma.

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

Šeit ir norādīti konkrētās aktivitātes faktiskie stili:

 # F4F4F6 # 33343B 

Lietotnes aktivitātes manifestā jānorāda viena no šīm tēmām, kas šajā gadījumā ir FeedActivity.

Skatu stilizācija

Šis ir savu skatu stilizācijas piemērs - šajā piemērā tas paredzēts novirzīšanas kļūdai “Lapa nav atrasta”.

Kā iespējot dinamisku motīvu pārslēgšanu

Labākais un efektīvākais veids, kā iespējot dinamisku motīvu pārslēgšanu, ir ielādēt vērtēto SharedPreference, kas tiek izmantota iestatījuma saglabāšanai lietojumprogrammas instancē, izmantojot Singleton modeli, kas nozīmē, ka mums tas nebūs jādara katras darbības sākumā.

 sabiedriskās klases lietotne paplašina lietojumprogrammu {public static final String TAG = "App"; privāts Būla isNightModeEnabled = nepatiess; @Atvērt publisko tukšumu onCreate () {super.onCreate (); // Mēs ielādējam nakts režīma stāvokli šeit SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (this); this.isNightModeEnabled = mPrefs.getBoolean (“NIGHT_MODE”, nepatiess); } publiskā Būla isNightModeEnabled () {return isNightModeEnabled; } public void setIsNightModeEnabled (Būla isNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

Tā kā šis gadījums tiek palaists pirms kaut kā cita, tas ļauj jums jebkurā laikā piezvanīt isNightModeEnabled () Būla, jebkurai darbībai, kas pieder lietotnei, kad tā ir atvērta.

 publiskā fināla klase FeedActivity paplašina AppCompatActivity {privāta gala statiska virkne TAG = “FeedActivity”; @ Pārvērtēt aizsargāto tukšumu onCreate (Bundle savedInstanceState) {if (MyApplication.getInstance (). IsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState); setContentView (R.layout.activity_feed); }} 

Tomēr, ja vēlaties izmantot citu tēmu, nevis to, kas norādīta manifesta failā, tas jādara pirms vecāku izsaukšanas uz onCreate () metodi.

Valsts iestatīšana, izmantojot AppCompat

AppCompat ir patiešām noderīgs visdažādākajām lietām, un šajā gadījumā mēs to izmantosim, lai iestatītu režīma stāvokli. Tas nozīmē, ka jums vairs nav jāizmanto lietotnes piemērs, lai izveidotu kešatmiņā saglabātu stāvokli, tādējādi samazinot lietotnes kešatmiņas uzpūšanos ( kaut arī ar ļoti nelielu rezervi ).

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

Šeit jūs varat izmantot:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

Valsts atgūšana

 AppCompatDelegate.getDefaultNightMode (); publiskā fināla klase FeedActivity paplašina AppCompatActivity {privāta gala statiska virkne TAG = “FeedActivity”; @Override aizsargāts tukšums onCreate (Bundle savedInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState); setContentView (R.layout.activity_feed); }} 

Tam tā vajadzētu būt - jūs varat turpināt pielāgot un pielāgot vērtības savām vēlmēm, taču šis ceļvedis ir lielisks ievads, lai jūs sāktu ar dzimtā tumšās tēmas iekļaušanu savā Android lietotnē.

Interesanti Raksti