Hogyan lehet egy sötét témát felvenni az Android alkalmazásába

A fejlesztők számára az Android alkalmazás létrehozása egyszerű folyamat - valójában nehéz feladat egy vonzó felhasználói felület megtervezése. Ezért írtuk a „Nem szopó Android alkalmazás felhasználói felület megtervezése” című útmutatót azoknak a fejlesztőknek, akiknek valamilyen inspirációra van szükségük az egyszerű, de vonzó felhasználói felületek létrehozásához. Ebben az útmutatóban röviden megemlítettük a sötét / éjszakai mód témájának hozzáadását az alkalmazásokhoz, és ebben az útmutatóban végigvezetjük rajta.

A sötét / éjszakai mód témájának hozzáadása az alkalmazáshoz nagyszerű lehetőség lehet a felhasználók számára - ez megtakarítja az akkumulátort, és sokkal könnyebb a szemén éjszaka. A fekete háttér, a fekete háttér, vagy a felhasználói felület „élénk” színeinek bármilyen kombinációja valóban stresszt okoz a szemén, különösen éjszaka. Így a világosabb szövegű sötét háttér sokkal kevésbé stresszes és káros a szemre, ezért sok népszerű alkalmazás megkezdte a sötét témát is - a YouTube és a Reddit legutóbb, bár a Facebook még mindig nem tette közzé a sajátját, miután megígérte egy Lehet.

Ha könnyedén hozzá szeretne kapcsolni egy átkapcsolható sötét módot Android-alkalmazásához, kövesse ezt az Appuals útmutatót és kommentálja, ha bármilyen problémája merül fel!

XML-attribútumok létrehozása

Először létre kell hoznia egy XML-attribútumfájlt, amely kezeli az összerakást. Ez sokkal jobb, ha két erőforráscsoportot két különböző témakörbe beépít az APK-ba, és ezzel felfúvja az APK-méretét, mivel az Android az XML-en keresztül natívan megváltoztathatja az attribútumok színét.

Tehát az alkalmazás „erőforrásai” mappájában hozzon létre egy attrs.xml nevű fájlt, és adja hozzá ezeket a sorokat ( ezek stílusos attribútumok):

A Lollipop előtt nem tudtuk meghatározni a fiókokhoz tartozó attribútumokat, ezért meg kellett határoznunk a forrásanyagok erőforrás-azonosítóit - ez azonban már nem ez a helyzet.

Stílusok hozzáadása

A munka elkészítéséhez két különálló stílust kell létrehoznunk, amelyek ugyanazt az alapot fogják használni. Az első nyilvánvalóan az elsődleges „könnyű” témája, a második pedig a „sötét” témája.

 # F4F4F6 # 96F4F4F6 #FFFF # F2F2F3 @ húzható / i_light_plholder # 33343B / item> # 8033343B # 28292e # F2F2F3 @ húzható / i_dark_pholder 

Íme egy adott tevékenység aktuális stílusa:

 # F4F4F6 # 33343B 

Meg kell adnia ezeknek a témáknak az egyikét az alkalmazás tevékenységének manifesztumában, amely ebben az esetben a FeedActivity.

A nézetek stilizálása

Íme egy példa a nézetek stilizálására - ebben a példában az „Az oldal nem található” átirányítási hibára vonatkozik.

A dinamikus témaváltás engedélyezése

A dinamikus témaváltás engedélyezésének legjobb és leghatékonyabb módja a SharedPreference érték betöltése, amelyet arra használnak, hogy a beállítást az alkalmazáspéldányba Singleton mintázat segítségével tárolja, ami azt jelenti, hogy nem kell megtennünk minden tevékenység elején.

 public class App kiterjeszti az alkalmazást {public statical final String TAG = "App"; private boolean isNightModeEnabled = false; @A nyilvános érvénytelen onCreate () {super.onCreate (); // Az éjszakai üzemmódot töltjük ide. SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (ez); this.isNightModeEnabled = mPrefs.getBoolean (“NIGHT_MODE”, hamis); } nyilvános logikai isNightModeEnabled () {return isNightModeEnabled; } public void setIsNightModeEnabled (logikai isNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

Mivel ezt a példányt már valami más elõtt elindítják, ezáltal bármikor felhívhatja az isNightModeEnabled () Boolean-t, bármilyen, az alkalmazáshoz tartozó tevékenységben, miután megnyitották.

 A nyilvános végső osztályú FeedActivity kiterjeszti az AppCompatActivity {magán végleges statikus karakterlánc TAG = "FeedActivity"; @A felülírott védett void onCreate (Bundle savedInstanceState) {if (MyApplication.getInstance (). IsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (SaveInstanceState); setContentView (R.layout.activity_feed); }} 

Ha azonban a manifeszt fájlban megadottaktól eltérő témát szeretne alkalmazni, akkor ezt meg kell tenni a szülő onCreate () metódusának meghívása előtt .

Az állam beállítása az AppCompat használatával

Az AppCompat nagyon sokféle szempontból hasznos, és ebben az esetben ezt fogjuk használni az üzemmód beállításához. Ez azt jelenti, hogy többé nem kell az alkalmazáspéldányt használnia a gyorsítótárazott állapot létrehozásához, ezáltal csökkentve az alkalmazás gyorsítótárának puffadását ( bár nagyon apró margóval ).

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

Itt használhatja az alábbiakat:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

Az állam visszaszerzése

 AppCompatDelegate.getDefaultNightMode (); A nyilvános végső osztályú FeedActivity kiterjeszti az AppCompatActivity {magán végleges statikus karakterlánc TAG = "FeedActivity"; @A felülírja a védett érvénytelen onCreate (Bundle savedInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (SaveInstanceState); setContentView (R.layout.activity_feed); }} 

Ennek így kellene lennie - folytathatja az értékek testreszabását és hozzáigazítását saját igényei szerint, ám ez az útmutató nagyszerű bevezető, amely elkezdi a natív sötét téma beillesztését az Android alkalmazásába.

Érdekes Cikkek