Intereting Posts
Окно Eclipse Logcat отключает следы стека исключений Почему карта Google работает на одном из моих устройств, но отображается на всех остальных устройствах, но все же GPS-системы все еще работают? InflateException: не удалось разрешить пункт меню onClick handler Отправка DatagramPacket без подключения к Интернету – Android Нарисуйте прозрачный круг на заполненном андроидном холсте Получение / изменение кадров во время записи mp4 с помощью MediaRecorder Android Maps API v2 Marker с настраиваемыми привязными переходами при перетаскивании Как настроить статический IP-адрес, сетевую маску, шлюз программно на Android 3.x или 4.x Как отправлять данные через PendingIntent для трансляции? Android получает слишком много отладочных данных Bluetooth Как отобразить фоновое изображение в текстовом режиме Установить Google в качестве строки поиска на главном экране. Предоставление разрешения на использование Android-приложения Какая часть Android отвечает за выбор правильного профиля ресурсов? Расширение EditText в 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 /