Obsługa różnych wersji platformy

Najnowsze wersje Androida często mają świetne interfejsy API, ale zalecamy dalsze obsługę starszych wersji, dopóki nie zaktualizujesz kolejnych urządzeń. Z tej lekcji dowiesz się, jak korzystać z najnowszych interfejsów API przy jednoczesnym zapewnieniu obsługi starszych wersji.

Użyj kreatora nowego projektu w Android Studio, aby znaleźć informacje o dystrybucji aktywnych urządzeń z poszczególnymi wersjami Androida. Dystrybucja na podstawie liczby urządzeń odwiedzanych Sklep Google Play. Zalecamy obsługę około 90% aktywnych urządzeń i kierowanie aplikacji na najnowszą wersję.

Wskazówka: aby korzystać z najlepszych funkcji w kilku wersjach Androida, zalecamy korzystanie w niej z biblioteki pomocy na Androida, która umożliwia korzystanie w starszych wersjach z kilku najnowszych interfejsów API platformy.

Określanie minimalnych i docelowych poziomów interfejsu API

Plik AndroidManifest.xml zawiera szczegółowe informacje o Twojej aplikacji i wskazuje, które wersje Androida są przez nią obsługiwane. W szczególności atrybuty minSdkVersion i targetSdkVersion elementu <uses-sdk> wskazują najniższy poziom interfejsu API, z którym jest zgodna Twoja aplikacja, oraz najwyższy poziom interfejsu API, pod którym ją zaprojektowano i przetestowałaś.

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 elementy stylu i działania mogą się zmieniać. Aby umożliwić aplikacji wykorzystanie tych zmian i zapewnić jej dopasowanie do stylu urządzenia każdego użytkownika, ustaw wartość targetSdkVersion tak, aby pasowała do najnowszej dostępnej wersji Androida.

Sprawdzanie wersji systemu w czasie działania

Android udostępnia unikalny kod dla każdej wersji platformy w klasie stałych Build. Użyj tych kodów w aplikacji, aby stworzyć warunki, które zapewnią, że kod zależny od wyższych poziomów API będzie wykonywany tylko wtedy, gdy te interfejsy API będą 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 obecne urządzenie. Możesz więc bezpiecznie używać atrybutów XML, które są obsługiwane tylko przez nowsze wersje, i nie martwić się o uszkodzenie starszych wersji podczas napotkania kodu. Jeśli np. ustawisz właściwość targetSdkVersion="11", aplikacja będzie domyślnie zawierać ActionBar na Androidzie w wersji 3.0 i nowszych. Aby dodać pozycje menu do paska działań, musisz ustawić android:showAsAction="ifRoom" w pliku XML zasobu menu. Można to bezpiecznie zrobić w pliku XML zawierającym różne wersje, ponieważ starsze wersje Androida ignorują po prostu atrybut showAsAction (czyli nie potrzebujesz osobnej wersji w res/menu-v11/).

Używaj stylów i motywów platformy

Android udostępnia użytkownikom motywy, które nadają aplikacjom wygląd i sposób działania systemu operacyjnego. Motywy te możesz zastosować do aplikacji w pliku manifestu. Dzięki tym wbudowanym stylom i motywom aplikacja będzie w każdej odsłonie naturalnie zgodna z najnowszym wyglądem i stylem Androida.

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

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

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

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

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

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

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

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

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