私は1.6をターゲットにしていますが、スタックビューを使用できる素敵なウィジェットと、ユーザーが3.0以上のデバイスを使用している場合にAndroid SDKがウィジェットに提供するその他の改善が必要です。および 1.6-2.3/ の単純なウィジェット
その2つのバージョンのウィジェットをどのようにすればよいですか?
どうもありがとう
私は1.6をターゲットにしていますが、スタックビューを使用できる素敵なウィジェットと、ユーザーが3.0以上のデバイスを使用している場合にAndroid SDKがウィジェットに提供するその他の改善が必要です。および 1.6-2.3/ の単純なウィジェット
その2つのバージョンのウィジェットをどのようにすればよいですか?
どうもありがとう
私の推奨事項:
アプリ ウィジェットの 2 つのバージョンを作成し、リソース値メソッドを使用して有効化/無効化します。
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
のようなサフィックスを追加することで、ディレクトリAPIレベルのサブフォルダを特定できます-v11
。
たとえば、レイアウトの名前が。であるとしますmain.xml
。1.6〜2.3main.xml
のファイルをフォルダーに入れてから、新しいウィジェットを含む新しいlayout
派手なファイルをフォルダーに入れることができます。Honeycomb以降を使用する場合、 。のようにファイルを参照すると、フォルダ内のレイアウトが選択されます。main.xml
layout-v11
-v11
R.layout.main
そこから、新しいウィジェットオブジェクトの存在をチェックし(またはBuild.VERSIONクラスをチェックする)、それに応じて分岐するロジックをアクティビティに含めることができます。
詳細については、Androidのドキュメントにある修飾子名のルールを確認してください。
次のようにデバイスのAPIバージョンを確認できます。
int apiLevel = android.os.Build.VERSION.SDK_INT;
apiLevelから、if-elseを使用して、さまざまなapi/のさまざまなレイアウト/ビューをロードできます。