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