Можно ли "изящно деградировать" приложение для Android?

Мне интересно, возможно ли использовать подход изящной деградации в приложении для Android. То есть, используйте некоторые функции, скажем, API 15, но если это не поддерживается, используйте вместо этого API 10.

В частности, я имею в виду "перелистывание вкладок" в Android 4 против отсутствующей поддержки этой функции в Android 2.x (и, следовательно, с использованием обычных вкладок), но вопрос довольно общий.

Я хотел бы использовать расширенные функциональные возможности на устройствах, которые поддерживают его, но когда он не поддерживается, я хотел бы использовать альтернативу. Кажется, я не могу использовать библиотеки Android 4 в проекте Android 2, в то время как проект Android 4, по понятным причинам, не будет запускаться на устройстве Android 2.

Любое решение? Или, по крайней мере и на данный момент, какое-нибудь решение для "перелистывания вкладок" на Android 2?

3 ответа

Решение

Часть 1. Чтобы иметь возможность использовать функциональность для новых API, убедитесь, что в манифесте объявлен ваш android:minSdkVersion с самой низкой версией (10, в вашем случае), но установите для android:targetSdkVersion более новую версию с API, которые вы хотите использовать. (15). В своем коде вы можете сделать что-то вроде

if ( Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH ) {
    // Use the new APIs
} else {
    // Use the old APIs
}

Вам нужно будет добавить аннотацию, чтобы указать использование нового API.

Часть 2: перелистывание вкладок. Я использовал функцию ViewPagerIndicator Джейка Уортона и функцию ViewPager в библиотеке поддержки Android для достижения возможности перелистывания вкладок. Это довольно просто. Больше информации на странице http://viewpagerindicator.com/

Надеюсь это поможет.

Обязательно используйте директиву @TargetApi над классом или функцией, которая работает только с более новой версией API. Например

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
void foo() {

  /* function called only on ice cream sandwich (API level 14) and greater */

}

Я знаю, что вы уже отметили свой ответ, но, возможно, это может вам помочь, его библиотека андроидов называется actionbar sherlock, которая перенесла функции 4.x в 2.x. включая фрагменты, пейджеры, вкладки и панель действий, представленную в 3.0

Другие вопросы по тегам