我的目标是1.6,但我希望有一个漂亮的小部件可以使用stackview和Android SDK为小部件提供的其他改进,如果用户在3.0以上的设备上。以及1.6-2.3 /
上的普通小部件我该怎么做两个版本的小部件?
非常感谢
答案 0 :(得分:13)
我的建议:
创建应用程序窗口小部件的两个版本,并使用资源值方法启用/禁用。
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>
答案 1 :(得分:7)
您可以通过添加res
之类的后缀来使-v11
目录API级别中的子文件夹具体。
例如,假设您的布局名为main.xml
。您可以在main.xml
文件夹中放置1.6 - 2.3 layout
文件,然后将包含新窗口小部件的新的,花哨的main.xml
文件放在layout-v11
文件夹中。使用Honeycomb及更高版本时,当您引用-v11
等文件时,将选择R.layout.main
文件夹中的布局。
从那里,您可以在活动中使用一些逻辑来检查新窗口小部件对象是否存在(或者只检查Build.VERSION类)并进行相应的分支。
有关详细信息,请查看Android文档中的Qualifier name rules。
答案 2 :(得分:2)
您可以检查设备api版本,如:
int apiLevel = android.os.Build.VERSION.SDK_INT;
,您可以使用if-else为不同的apis加载不同的布局/视图/