6

私は1.6をターゲットにしていますが、スタックビューを使用できる素敵なウィジェットと、ユーザーが3.0以上のデバイスを使用している場合にAndroid SDKがウィジェットに提供するその他の改善が必要です。および 1.6-2.3/ の単純なウィジェット

その2つのバージョンのウィジェットをどのようにすればよいですか?

どうもありがとう

4

3 に答える 3

13

私の推奨事項:

アプリ ウィジェットの 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>
于 2012-05-02T18:07:21.553 に答える
7

resのようなサフィックスを追加することで、ディレクトリAPIレベルのサブフォルダを特定できます-v11

たとえば、レイアウトの名前が。であるとしますmain.xml。1.6〜2.3main.xmlのファイルをフォルダーに入れてから、新しいウィジェットを含む新しいlayout派手なファイルをフォルダーに入れることができます。Honeycomb以降を使用する場合、 。のようにファイルを参照すると、フォルダ内のレイアウトが選択されます。main.xmllayout-v11-v11R.layout.main

そこから、新しいウィジェットオブジェクトの存在をチェックし(またはBuild.VERSIONクラスをチェックする)、それに応じて分岐するロジックをアクティビティに含めることができます。

詳細については、Androidのドキュメントにある修飾子名のルールを確認してください。

于 2012-05-02T18:03:03.653 に答える
2

次のようにデバイスのAPIバージョンを確認できます。

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

apiLevelから、if-elseを使用して、さまざまなapi/のさまざまなレイアウト/ビューをロードできます。

于 2012-05-02T18:02:25.700 に答える