1

SDK ドキュメントから引用します。

「Android 3.0 (API レベル 11) 以降、Android 搭載デバイスは専用のメニュー ボタンを提供する必要がなくなりました。この変更により、Android アプリは従来の 6 項目のメニュー パネルへの依存から移行し、代わりに一般的なユーザー アクションを表示するアクション バー。"

さらに、「Android 2.3 以前向けに開発している場合、ユーザーは [メニュー] ボタンを押すことでオプション メニュー パネルを表示できます。Android 3.0 以降では、オプション メニューの項目は on の組み合わせとしてアクション バーに表示されます。 -screen アクション アイテムとオーバーフロー オプション。Android 3.0 以降、メニュー ボタンは非推奨になっているため (一部のデバイスにはボタンがありません)、アクション バーを使用してアクションやその他のオプションにアクセスできるように移行する必要があります。"

そのため、私が正しく理解していれば、Android 3.0 以降を搭載したデバイスではメニュー ボタンがあり、廃止されたコードは引き続き機能しますが、Android 3.0 以降を搭載したメニュー ボタンのないデバイスでは、廃止されたコードは機能しません。

5 つの質問が発生します。

  1. これらの互換性の問題は、Android 互換性ライブラリを通じて処理できますか?
  2. はいの場合、どのように?
  3. いいえの場合、Android 3 以降を搭載し、メニュー ボタンのないデバイスのリストを持っている人はいますか?
  4. 現在、これらのデバイスの市場シェアはどのくらいですか?
  5. 最大 SDK を指定すると、メニュー ボタンがあるかどうかに関係なく、すべてのデバイスが除外されます。アプリが互換性のあるデバイスにのみインストールされるようにするためのより良い方法はありますか?
4

4 に答える 4

5

これらの互換性の問題は、Android 互換性ライブラリを通じて処理できますか? はいの場合、どのように?

ターゲット API を 11 以上に設定します (利用可能な最新バージョンに設定することをお勧めします: そのため、ターゲット API を 15 に設定します)。次に、アプリケーションで ActionBar を有効にします。メニュー キーを介して表示されていたものが、ActionBar のオーバーフロー メニューに表示されるようになりました。または、それぞれの「showIfRoom」を true に設定すると、バー自体の個々のアクションとして表示されます。

いいえの場合、Android 3 以降を搭載し、メニュー ボタンのないデバイスのリストを持っている人はいますか?

特殊なケースをコーディングしようとするのは、間違ったアプローチです。メニューボタンのあるデバイスでは、メニューボタンで動作します。メニュー ボタンのないものには、オーバーフロー メニューがあります。Android Developer Blogに、これに関するブログ投稿があります。

現在、これらのデバイスの市場シェアはどれくらいですか?

小さいけれど成長中。

最大 SDK を指定すると、メニュー ボタンがあるかどうかに関係なく、すべてのデバイスが除外されます。アプリが互換性のあるデバイスにのみインストールされるようにするためのより良い方法はありますか?

はい: 私が説明した方法は両方のシナリオを処理し、すべてのデバイスで機能します :) maxSdk を使用する理由はありません。

編集:コメントからの質問に対処するには:

では、ターゲットが 8 の場合、11 のデバイスはメニュー ボタンを適切に処理しませんか?

ターゲットを 11 未満に設定すると、メニュー キーのないデバイスには、他のソフト ボタンの横に「レガシー」メニュー ボタンが表示されます 。 -goodbye-to-menu-button.html

一方、ターゲットを 11 に設定した場合、8 を超える機能を使用すると、Eclipse は警告を表示しませんか?

ターゲットを 11 に設定し、最小値を 8 に設定した場合、Eclipse は 9 つ以上の機能を使用しても警告を表示しません。それについてはアプリをテストする必要があります。これを行う簡単な方法: ターゲット SDK を一時的に 8 に戻して、コンパイラがどこで警告を発するかを確認し、これらのコード パスが処理できないデバイスでヒットしないようにします。

Google Play マーケットでの配布にどのような影響がありますか?

良いものだけ。Max SDK を設定すると、時間の経過とともに、アプリケーションが互換性のあるデバイスの数が減っていきます。(下位互換性をすべて破棄するのではなく) 8 の最小バージョンを使用するということは、アプリケーションが Honeycomb 以降だけでなく、Froyo および Gingerbread デバイスにインストール可能であることを意味します。

于 2012-05-10T18:24:52.597 に答える
2

これらの互換性の問題は、Android 互換性ライブラリを通じて処理できますか?

いいえ。

いいえの場合、Android 3 以降を搭載し、メニュー ボタンのないデバイスのリストを持っている人はいますか?

それらのほとんどすべて。Android 2.x を実行していて、Android 4.x にアップグレードするデバイスには、専用のメニュー ボタンがあります (Nexus S など)。Android 3.0 以降用に新しく構築されたデバイスには、専用の MENU ボタンがほとんどありません。

現在、これらのデバイスの市場シェアはどのくらいですか?

Android 3.0 以降は、5 月初旬の時点でGoogle Play ストアにアクセスするデバイスの 8.2% を占めています。それらのほとんどは、MENU ボタンがないデバイスになります。

アプリが互換性のあるデバイスにのみインストールされるようにするためのより良い方法はありますか?

互換性の問題の唯一の理由は、オプション メニューの表示以外の操作を MENU ボタンに依存していた場合です。MENU ボタンに依存しないようにコードを書き直すだけで、互換性の問題はなくなります。

于 2012-05-10T18:21:03.127 に答える
1

非推奨のコードは、メニュー ボタンのないデバイスでも機能します。ターゲット SDK が 3.0 未満の場合、メニュー ボタンのないデバイスでは、画面の下部にソフトウェア メニュー ボタンが表示されます。

これは、Galaxy Nexus や永続的なソフトウェア ボタンを備えたその他のデバイスでは問題ないように見えますが、通常ソフトウェア ボタン バーがない HTC One X などのデバイスでは見栄えが悪くなります。

于 2012-05-10T18:25:32.870 に答える
0

古いデバイスでアクションバーを使用するサンプルがここにあります。Android のバージョンに基づいてさまざまなレイアウトとアクティビティ/メソッドを構成するオプションもあるため、古いデバイスでは通常のメニューを使用し、それをサポートするデバイスではアクションバーを使用できます。(実行時にプラットフォームを確認する方法についてはこちらを、プラットフォームに基づいて異なるレイアウト フォルダーを使用する方法についてはこちらを参照してください)

于 2012-05-10T18:26:26.637 に答える