Intereting Posts
Что происходит, когда моя активность уничтожается, когда я использую IntentService с ResultReceiver Как получить контакты, связанные с социальными сетями (google, yahoo, …), синхронизированными с телефоном, в android Как определить, когда устройство BLE больше не находится в зоне действия? Установка Android при сбое устройства Ошибка Token FCM в некоторых устройствах Android «Кордоба-платформа add android» терпит неудачу с неожиданной ошибкой Мое приложение не совместимо с Nexus 7 в Google Playstore Рендеринг PDF-файла с помощью Java на Android Интеграция Crashlytics в проект библиотеки Как может PreferenceActivity использовать пользовательский файл настроек Ошибка Android Marshmallow «Невозможно воспроизвести это видео» ImageView: метод onDraw рисует «позади» фон изображения, а не вверху Android In App Subscription всегда возвращает начальную квитанцию, я никогда не получаю обновление Visual Studio 2015 Android NDK ARM архитектура Начать экран активности, даже если экран заблокирован на Android

Как обеспечить различные виджеты Android для 1.6 и 3.0+?

Я ориентируюсь на 1.6, но я бы хотел иметь хороший виджет, который может использовать stackview и другие улучшения. SDK для Android обеспечивает виджет, если пользователь находится на устройстве выше 3.0. И простой виджет на 1.6-2.3 /

Как мне сделать эту две версии виджета?

большое спасибо

Solutions Collecting From Web of "Как обеспечить различные виджеты Android для 1.6 и 3.0+?"

Моя рекомендация:

Создайте две версии виджета приложения и используйте метод значений ресурсов для включения / отключения.

В res / values ​​/ bools.xml:

<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="atLeastHoneycomb">false</bool> <bool name="notHoneycomb">true</bool> </resources> 

В res / values-v11 / bools.xml:

 <?xml version="1.0" encoding="utf-8"?> <resources> <bool name="atLeastHoneycomb">true</bool> <bool name="notHoneycomb">false</bool> </resources> 

В AndroidManifest.xml:

 <receiver android:name="MyOldAppWidgetProvider" android:enabled="@bool/notHoneycomb"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/example_oldappwidget_info" /> </receiver> <receiver android:name="MyNewAppWidgetProvider" android:enabled="@bool/atLeastHoneycomb"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/example_newappwidget_info" /> </receiver> 

Вы можете создавать вспомогательные папки в вашем уровне API каталогов res , добавив суффикс типа -v11 .

Например, предположим, что ваш макет называется main.xml . У вас может быть ваш файл main.xml в папке layout , а затем добавить новый, причудливый файл main.xml который включает ваш новый виджет в папке layout-v11 . При использовании Honeycomb и up, расположение в папке -v11 будет выбрано, если вы ссылаетесь на свой файл, например, R.layout.main .

Оттуда у вас может быть какая-то логика в вашей деятельности, которая проверяет наличие вашего нового объекта виджета (или просто проверяет класс Build.VERSION ) и ветви соответственно.

Для получения дополнительной информации об этом ознакомьтесь с правилами имени классификатора из документации по Android.

Вы можете проверить версию api устройства, например:

int apiLevel = android.os.Build.VERSION.SDK_INT;

Из apiLevel вы можете использовать if-else для загрузки разных макетов / представлений для разных apis /