Obsługa różnych wersji platformy

Najnowsze wersje Androida często zawierają świetne interfejsy API dla aplikacji, ale nadal musisz obsługiwać starsze wersje Androida, dopóki więcej urządzeń nie zostanie zaktualizowanych. Z tej lekcji dowiesz się, jak korzystać z najnowszych interfejsów API, zachowując przy tym obsługę starszych wersji.

Użyj kreatora Nowy projekt w Android Studio, aby znaleźć dystrybucję aktywnych urządzeń z każdą wersją Androida. Ten rozkład jest oparty na liczbie urządzeń, otwórz Sklep Google Play. Ogólnie zalecamy obsługę około 90% aktywnych urządzeń, kierowanie aplikacji do najnowszej wersji.

Wskazówka: aby zapewnić najlepsze funkcje i najlepszą funkcjonalność w różnych wersjach Androida, użyj w swojej aplikacji Biblioteki pomocy dla Androida, która umożliwia korzystanie z kilku najnowszych interfejsów API platformy w starszych wersjach.

Określanie minimalnego i docelowego poziomu interfejsu API

Plik AndroidManifest.xml zawiera szczegółowe informacje o aplikacji oraz określa, które wersje Androida obsługuje. Konkretnie: minSdkVersion i atrybuty targetSdkVersion dla elementu <uses-sdk> Zidentyfikować najniższy poziom API, z którym Twoja aplikacja jest zgodna, oraz najwyższy poziom API z którym zaprojektowaną i przetestowaną aplikację.

Na przykład:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
    ...
</manifest>

W miarę pojawiania się nowych wersji Androida niektóre style i działania mogą się zmieniać. Aby umożliwić aplikacji skorzystanie z tych zmian i dostosowanie aplikacji do stylu na urządzeniach poszczególnych użytkowników, ustaw targetSdkVersion aby pasowała do najnowszej wersji Androida. i dostępności informacji.

Sprawdzanie wersji systemu w czasie wykonywania

Android udostępnia unikalny kod dla każdej wersji platformy w Build klasy stałych. Za pomocą tych kodów w aplikacji możesz utworzyć warunki, które zagwarantują, że kod zależy od wyższych poziomów API, jest wykonywana tylko wtedy, gdy te interfejsy API są dostępne w systemie.

Kotlin

private fun setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        actionBar.setDisplayHomeAsUpEnabled(true)
    }
}

Java

private void setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

Uwaga: podczas analizowania zasobów XML Android ignoruje atrybuty XML, które nie są obsługiwane przez bieżące urządzenie. Możesz więc bezpiecznie używać atrybutów XML, które są obsługiwane tylko przez nowsze wersje, bez obaw, że starsze wersje przestaną działać po napotkaniu tego kodu. Jeśli na przykład ustawisz wartośćtargetSdkVersion="11", Twoja aplikacja będzie domyślnie zawierać element ActionBar w Androidzie 3.0 lub nowszym. Aby dodać pozycje menu do paska działań, musisz ustawić android:showAsAction="ifRoom" w pliku XML zasobu menu. Można to zrobić bezpiecznie w pliku XML dla różnych wersji, ponieważ starsze wersje Androida po prostu ignorują atrybut showAsAction (czyli nie musisz tworzyć osobnej wersji w pliku res/menu-v11/).

Używanie stylów i motywów platformy

Android zapewnia motywy dla użytkowników, które nadają aplikacjom wygląd i systemu operacyjnego. Te motywy można zastosować do aplikacji w pliku manifestu. Jeśli użyjesz tych wbudowanych stylów i motywów, aplikacja będzie w naturalny sposób dostosowują się do wyglądu i stylu Androida w każdej nowej wersji.

Aby aktywność wyglądała jak okno dialogowe:

<activity android:theme="@android:style/Theme.Dialog">

Aby aktywność miała przezroczyste tło:

<activity android:theme="@android:style/Theme.Translucent">

Aby zastosować własny motyw niestandardowy zdefiniowany w sekcji /res/values/styles.xml:

<activity android:theme="@style/CustomTheme">

Aby zastosować motyw do całej aplikacji (wszystkich aktywności), dodaj android:theme atrybut do elementu <application>:

<application android:theme="@style/CustomTheme">

Więcej informacji o tworzeniu i używaniu motywów znajdziesz w przewodniku Style i motywy.