39

私はAndroid<3.0で使用されているメニューボタンのファンです。これは、ゲームアプリにとって非常に便利だったためです。これにより、重要ではあるがゲームプレイに関係のない機能(ゲームの保存、情報リンクの参照)を使用して、どこかに配置することができました。メインのゲームインターフェイスが乱雑になることはありませんでしたが、それでも簡単にアクセスできました(オプションメニュー)。

このキーの使用は、メニューボタンを削除してアクションバーに置き換えたため、3.0では問題になりました。アクションバーは、フルスクリーンで実行するのが好きなゲームには本当に適していないので、それは本当に苦痛でした。アクションバーなし-オプションメニューへのアクセスなし。ただし、タブレットを使用するユーザーがそれほど多くなく、これをテストする時間がなかったため、しばらくは無視することができました。

ただし、メニューボタンが明らかに戻ってこないため、ICSはこれを深刻な問題にします。今では、タブレットだけでなく電話でもこの問題に対処する必要があります。

この問題に対する私の最初の解決策は、GUIにソフトボタンを配置して、ハードMENUボタンを置き換えることでした。

this.openOptionsMenu();

そして、すべてがICSで完全に機能するようになりました。

ただし、これはHoneycombでは機能しません。ActionBarが表示されていない場合、openOptionsMenuを呼び出してもまったく何も起こりません。

これに対処する方法について何か考えはありますか?

  • TargetSDK <11の使用にいつでも戻ることができると思いますが(これにより、ActionBarがタブレットに表示されるようになります)、私が見る限り、これは問題を将来に押しやるだけであり、やりたくないと思います。

  • オプションメニューを完全に削除し、コンテキストメニューのみを使用するようにしますか?[明確化:これは、オプションメニューを開く代わりに、コンテキストメニューのみを使用することを意味します。少なくとも今のところ、これらはすべてのデバイスで機能するからです]。

オプションメニュー/アクションバーの混乱全体で同様の問題を抱えている他の人が何をすることに決めたかを聞くことに興味があります。

4

6 に答える 6

17

ゲームではないのに、メニュー ボタンがクリティカルになる別のシナリオを共有させてください。

ActionBarのように動作する独自のツールバーをアプリに実装しています。私のアプリは 1.5 SDK でリリースされました。当時はそのような概念はありません。また、ツールバーに対応するために、デフォルトのタイトル バーを非表示にしています。ただし、一部のアクションはメニュー機能を介して実行されます。

Galaxy Nexus では、ActionBar を使用していない場合はメニュー ボタンがありません。私のアプリはまだ 1.5 をサポートしているため、これは私を悩ませています。

さまざまな回避策がありますが、どれも簡単ではありません。

とはいえ、私が思いついた唯一の回避策は、ユーザーにツールバーのすべてのオプションを提供することです。そのため、Menu はまったく必要ありません。ツールバーの一部ではない 2 つのアクションしかないため、これを行うことができます。

あなたの状況では、ボタンのコンテキスト メニューは、すべてのアイテムが異なるコンテキストであるリスト アイテムのコンテキスト メニューと比較して、ゲームが実行されているコンテキストが 1 つしかないため、ゲームの悪い解決策ではありません。

ところで、openOptionsMenuICS で動作し、しばらくして HoneyComb を捨てることができる場合 (ユーザーベースが低すぎる場合でも) 、バージョンに基づいて両方のメニューを提供してみてください。

編集:下のナビゲーションバーにメニューs / wボタンを表示する別の方法もあります。を 11 未満に設定するだけtargetSdkVersionです。詳細については、ソリューション全体をお読みください。

于 2012-01-08T19:33:31.770 に答える
2

そして、メニューボタンのことわざの棺に最後のスパイクを入れるために、Googleは最後の別れを量ります:

http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html

于 2012-01-27T00:58:43.513 に答える
2

ただし、メニューボタンが明らかに戻ってこないため、ICS はこれを深刻な問題にしています。

より正確には、MENU などのオフスクリーン ボタンを使用するかどうかは、デバイス メーカー次第です。Android 4.0 の互換性定義ドキュメントを引用します。

ホーム、メニュー、および戻る機能は、Android ナビゲーション パラダイムに不可欠です。デバイス実装は、アプリケーションを実行しているときに、これらの機能をユーザーがいつでも利用できるようにしなければなりません。これらの機能は、専用の物理ボタン (メカニカルまたは静電容量式タッチ ボタンなど) を介して実装するか、専用のソフトウェア キー、ジェスチャ、タッチパネルなどを使用して実装することができます。

したがって、画面外の MENU ボタンがあるとは限りませんが、あるかもしれません。

これに対処する方法について何か考えはありますか?

ゲーム UI の一部として独自の「メニュー」を記述します。オプション メニューを使用するためにフル スクリーンが必要だと考えるゲームは期待できません。 . 私がプレイしたすべてのゲームは、メニューを押しても何もしません。むしろ、「メニュー」と見なされる可能性のあるものはすべて、ゲーム UI に直接実装されます (たとえば、ゲーム UI のルック アンド フィールでフォーマットされ、実行することの選択肢を提供する画面につながるボタン)。

オプション メニューを完全に削除して、コンテキスト メニューのみを使用しますか?

ユーザーはどこを長押ししてメニューを表示すればよいかわからなくなるため、これはひどいことです。

于 2012-01-08T13:19:29.687 に答える
0

その最近のブログ投稿に応えて、彼らは開発者がメニューよりもアクション バーを使い始めることを望んでいるようですが、API => 3.0 および API < 3.0 をサポートしたい場合、これは苦痛になります。したがって、API < 3.0 と互換性のあるカスタム アクション バーを作成するか (SDK で例を見つけることができます)、または... 先週これを試していました。

ICS タブレットにメニュー ボタンが表示されないという問題もありました。ActionBar を実装したかったので、その時点で targetSdk を 11 に設定していたと思います。次に、minSdk を 3 に、targetSdk を 4 に設定しました。ActionBar とメニュー オーバーフロー ボタンの両方が表示されました。したがって、これが現在の回避策です(少なくとも私が取り組んでいるプロジェクトでは)。

于 2012-01-28T02:12:12.990 に答える
0

マイケル、私はまったく同じ状況にあり、カスタム ダイアログを使用してオプション メニューを実装することで解決しました。下部にある従来のオプション メニューよりも ICS の方が見栄えがします。このように構成されています

minSdkVersion = 8 targetSdkVersion = 14 SDK ビルド バージョン 8 (Eclipse 設定では 14 に設定できますが、それが提供するタイプ セーフが気に入っています)

API が 10 未満のユーザーは、ハード メニュー ボタンを使用して、標準のオプション メニューを表示します。API >= 10 を持つユーザーには、アプリに 3 つのドット アイコン (オーバーフロー メニュー) が表示され、クリックするとカスタム ダイアログ メニューが表示されます。また、[設定] などで新しい ICS の外観も確認できます。

メニュー ボタンが戻ってくるとは思えず、ICS を使用しているユーザーは 1% 未満ですが、レガシーの壁を打ち破りたいと考えていました。

于 2012-01-12T18:06:39.317 に答える
-2

3.x リリース用の特別なロジックを追加しました。これらのリリースでのみ、アクション バーを使用します。

            if (Build.VERSION.SDK_INT == Build.VERSION_CODES.HONEYCOMB
             || Build.VERSION.SDK_INT == Build.VERSION_CODES.HONEYCOMB_MR1
             || Build.VERSION.SDK_INT == Build.VERSION_CODES.HONEYCOMB_MR2) {
                requestWindowFeature(Window.FEATURE_ACTION_BAR);        
            }
            else{
//              hide the status bar, do not use action bar         
                requestWindowFeature(Window.FEATURE_NO_TITLE);    
                getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);               
            }

他のすべてのリリースでは、独自のメニュー ボタンを表示し、ゲームをフルスクリーン モードで実行します。メニュー ボタンを押すときは、次のコード行を使用します。「act」は現在のアクティビティです。

act.openOptionsMenu();

メニュー xml の一部として、「showAsAction」を設定する次のような行があることを確認してください。

showAsAction="ifRoom"
于 2012-07-04T07:00:52.233 に答える