2013年2月20日水曜日
[Swipestarter]メニューボタンが無い端末で変な感じに
メールで知らせていただきましたので、こちらでも報告させていただきます。
メニューボタンが無い端末(HTC J butterfly)にてフォルダ等を起動した際にドックの下あたりに「:」←こんな感じのソフトウェアキーのメニューボタンが表示されます。
これは何かというと、メニューボタンが無いので4.X系に最適化されていないアプリを起動したときに、メニューを押せるようにOSが判断して表示しているっぽいです。
4.X系に最適化って何?っていうのは、アクションバー対応です。
4.X系ではボタン構成が従来の「メニュー」「ホーム」「戻る」「検索」から「アプリ履歴」「ホーム」「戻る」になりました。
メニューボタンが消されちゃいました。そのかわり、アクションバーっていうのをアプリ内に組み込んでそこからメニューを起動しろと。
まぁ、メニューなんてアプリの中で完結できるはずだから、わざわざハードに実装する必要もないんだろうけど。
この方向性は間違っていないとは思うんですけど、それを強制しちゃうところがAndroidのニクいところ。
Swipestarter(に限らず、僕のアプリ全般)では、Android2.1くらいから使えるように作っています。
なので、アクションバーも実装していないです。
このような実装のアプリを起動した際には、メニューキーの無い端末の場合、OSが勝手に判断してメニューを表示してくれます。
たとえばGalaxyNexusのようなソフトウェアキーの場合、端っこにちょこんと「:」←こんな感じのメニューが追加されます。
そして、HTC J butterflyのようなハードキーの場合、ドックの下あたりに「:」←こんな感じのソフトウェアキーのメニューボタンが表示されます。
超かっこ悪いですね。
今のところハードキーかつメニューキーの無い端末は、まだそんなに出回っていない(と思っている)ので、この現象にぶち当たる人は少ないかもしれません。
で、結論を言うと、これは治せます。
アプリのターゲットSDKバージョンを4.X系にしちゃえばいいです。
そうすると、OSがアクションバーを実装してあるとみなして「:」←これが出なくなります。
対応自体は簡単そうですが、ターゲットを変更したことによる動作検証をしなければいけないので、まとまった時間が作れたら対応します。
あ、あとメニューがある画面(ドロワーだけかな)にメニューを表示できるボタンを追加しないとダメですね。
どんどんたまっていく。。。ごめんなさい。
なぜ対応を後回しにしたかというと、HTC J butterflyにはハードキーの設定があるらしく、そこでメニューを割り当てるとOSがメニューボタンありと判断して「:」これが出なくなるとの報告を貰ったからです。
という事で、いったん端末の設定側で逃げてください。
よろしくお願いします。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿