(実例:私。他不明)
Android端末はiPhoneと比べてハードウェアボタンが多く、その点を指して「クールでは無い」という意見も有り、かつある程度的を得ていると思いますが、せっかくついているボタンなので有効活用しても良いかもしれません。
◯音量ボタン押下のイベントハンドリング
ActivityのdispatchKeyEventをオーバーライドしてハンドリングします。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_VOLUME_UP:
if (event.getAction() == KeyEvent.ACTION_DOWN) {
webview.pageUp(false);
return true;
}
case KeyEvent.KEYCODE_VOLUME_DOWN:
if (event.getAction() == KeyEvent.ACTION_DOWN) {
webview.pageDown(false);
return true;
}
}
super.dispatchKeyEvent(event);
}
webview#pageDown / #pageUp メソッドを用いると、それぞれページ下部/上部にスクロールします。
引数にtrueを指定するとページの一番下/一番上 に移動します。
ページのスクロール範囲を明示的に指定したい場合はWebView#flingScroll を使うことで明示的に動く幅を指定できます。
音量ボタンでのスクロールはボタン押しっぱなし(長押し)でひたすらスクロールできるようになっていると楽なので、KeyDownのイベントで処理をするのが良いと思います。
上記サンプルでは KeyEvent.ACTION_DOWN の際に処理をしています。
◯端末による音量ボタンの配置
人気のある多くのAndroid端末・・HTCやソニエリのXperia、SumsongのGalaxyなど・・は音量ボタンを片手操作でも押しやすいような配慮された配置になっていますが、中にはありえないくらい押しづらくデザインされている端末もあります。
また、音量ボタンでのスクロールは慣れている人には必須ですが習慣として身について居ない人も多いので、音量ボタン操作に依存しすぎた作りにするのは避けた方が良いかもしれません。
ボタンの配置に関して別の話をすると、一般のスマートフォン携帯であれば縦向きに持ったときに
- 上側の音量ボタン:ボリュームアップ
- 下側の音量ボタン:ボリュームダウン
しかしすべての端末でそうではなく、たとえば一部のタブレット端末(たとえば私が所持しているAcerのICONIA TAB)ではボリュームボタンが上にくるように縦向きに持ったときに、上側のボタンがボリュームダウンになったりします。
なので、音量ボタンでスクロールをするような実装をしたアプリは、設定画面などで音量ボタンを押された時に上下どちら側にスクロールするかを設定できるようにすると、とても親切になると思います。
Twitterクライアントの神アプリとして有名なtwiccaはこの辺の配慮もされていて、さすがだな、と思う次第です。
コメントを追加