Jak dołączyć ciemny motyw do aplikacji na Androida

Dla programistów tworzenie aplikacji na Androida jest łatwym procesem - zaprojektowanie atrakcyjnego interfejsu użytkownika jest naprawdę trudne. Dlatego napisaliśmy przewodnik „Jak zaprojektować interfejs aplikacji na Androida, który nie jest do kitu”, dla programistów, którzy potrzebują inspiracji do tworzenia prostych, ale atrakcyjnych interfejsów użytkownika. W tym przewodniku krótko wspomnieliśmy o dodaniu motywu trybu ciemnego / nocnego do twoich aplikacji, a w tym przewodniku przeprowadzimy cię przez ten temat.

Dodanie motywu trybu ciemnego / nocnego do aplikacji może być świetną opcją dla użytkowników - oszczędza żywotność baterii i jest znacznie łatwiejsze dla oczu w nocy. Białe tło na czarnym tekście lub dowolna kombinacja „jasnych” kolorów w interfejsie użytkownika jest naprawdę stresująca dla oczu, szczególnie w nocy. W związku z tym ciemne tło z jaśniejszym tekstem jest znacznie mniej stresujące i szkodliwe dla oczu, dlatego wiele popularnych aplikacji zaczęło mieć ciemny motyw - ostatnio YouTube i Reddit, chociaż Facebook nadal nie opublikował ich po obiecaniu jednego z nich Może.

Jeśli chcesz łatwo dodać przełączany tryb ciemny do swojej aplikacji na Androida, postępuj zgodnie z tym przewodnikiem i komentarzem Appuals, jeśli napotkasz jakiekolwiek problemy!

Tworzenie atrybutów XML

Najpierw musisz utworzyć plik atrybutów XML, który będzie obsługiwał temat. Jest to o wiele lepsze niż dołączenie dwóch zestawów zasobów do pliku APK dla dwóch różnych motywów, a tym samym zwiększenie rozmiaru pliku APK, ponieważ Android może natywnie zmieniać kolory atrybutów za pomocą tego pliku XML.

Dlatego w folderze „zasobów” aplikacji utwórz plik o nazwie attrs.xml i dodaj te wiersze ( są to atrybuty, które można stylizować):

Przed Lollipop nie mogliśmy określić atrybutów dla drawable, więc musieliśmy określić identyfikatory zasobów dla drawable - jednak tak już nie jest.

Dodawanie stylów

Aby to zadziałało, musimy stworzyć dwa osobne style, które będą miały tę samą bazę. Pierwszy będzie oczywiście Twoim głównym „jasnym” motywem, a drugi będzie Twoim „ciemnym” motywem.

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

Oto aktualne style dla danego działania:

 # F4F4F6 # 33343B 

Musisz określić jeden z tych motywów w Manifeście dla działania aplikacji, którym w tym przypadku jest FeedActivity.

Stylizowanie widoków

Oto przykład stylizowania widoków - w tym przykładzie jest to błąd przekierowania „Nie znaleziono strony”.

Jak włączyć dynamiczne przełączanie motywów

Najlepszym i najbardziej wydajnym sposobem na włączenie dynamicznego przełączania motywów jest załadowanie wartości SharedPreference, która służy do przechowywania ustawienia w instancji aplikacji przy użyciu wzorca Singleton, co oznacza, że ​​nie będziemy musieli tego robić na początku każdego działania.

 Aplikacja klasy publicznej rozszerza aplikację {public static final String TAG = "App"; private boolean isNightModeEnabled = false; @Override public void onCreate () {super.onCreate (); // Ładujemy tutaj stan trybu nocnego 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; }} 

Ponieważ ta instancja jest uruchamiana przed czymkolwiek innym, pozwala ona na wywołanie isNightModeEnabled () Boolean w dowolnym momencie, w dowolnym działaniu należącym do aplikacji po jej otwarciu.

 publiczna klasa końcowa FeedActivity rozszerza AppCompatActivity {private final static String TAG = „FeedActivity”; @Override chronione void onCreate (pakiet saveInstanceState) {if (MyApplication.getInstance (). IsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (saveInstanceState); setContentView (R.layout.activity_feed); }} 

Jeśli jednak chcesz zastosować inny motyw niż ten określony w pliku manifestu, musisz to zrobić przed wywołaniem nadrzędnej metody onCreate ().

Ustawianie stanu za pomocą AppCompat

AppCompat jest naprawdę przydatny do wielu różnych rzeczy, w tym przypadku użyjemy go do ustawienia stanu trybu. Oznacza to, że nie trzeba już używać instancji aplikacji do tworzenia stanu pamięci podręcznej, co ogranicza rozdęcie pamięci podręcznej aplikacji ( choć z bardzo małym marginesem ).

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

Tutaj możesz użyć:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

Odzyskiwanie stanu

 AppCompatDelegate.getDefaultNightMode (); publiczna klasa końcowa FeedActivity rozszerza AppCompatActivity {private final static String TAG = „FeedActivity”; @Override chroniony void onCreate (pakiet saveInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (saveInstanceState); setContentView (R.layout.activity_feed); }} 

To powinno być to - możesz nadal dostosowywać i dostosowywać wartości według własnych upodobań, ale ten przewodnik jest świetnym wprowadzeniem na początek, w którym możesz włączyć natywny ciemny motyw do aplikacji na Androida.

Ciekawe Artykuły