Android厨も度を越すと「音量ボタンでスクロールできないアプリは◯◯」みたいな捨て台詞を吐いて使わないような人間もたまに居たりします。
(実例:私。他不明)

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など・・は音量ボタンを片手操作でも押しやすいような配慮された配置になっていますが、中にはありえないくらい押しづらくデザインされている端末もあります。

また、音量ボタンでのスクロールは慣れている人には必須ですが習慣として身について居ない人も多いので、音量ボタン操作に依存しすぎた作りにするのは避けた方が良いかもしれません。


ボタンの配置に関して別の話をすると、一般のスマートフォン携帯であれば縦向きに持ったときに
  • 上側の音量ボタン:ボリュームアップ
  • 下側の音量ボタン:ボリュームダウン
という配置になっている携帯が多く、ボリュームアップに上スクロール、ダウンに下スクロールを機械的に割り当てればOK、という風に思えます。

しかしすべての端末でそうではなく、たとえば一部のタブレット端末(たとえば私が所持しているAcerのICONIA TAB)ではボリュームボタンが上にくるように縦向きに持ったときに、上側のボタンがボリュームダウンになったりします。

なので、音量ボタンでスクロールをするような実装をしたアプリは、設定画面などで音量ボタンを押された時に上下どちら側にスクロールするかを設定できるようにすると、とても親切になると思います。


Twitterクライアントの神アプリとして有名なtwiccaはこの辺の配慮もされていて、さすがだな、と思う次第です。

今までありがとうございました。
(写真が無断で勝手に引用されることは想像してなかったので、すみませんが消しました)
ブログ アーカイブ
ブログ アーカイブ
読み込んでいます
「動的ビュー」テーマ. Powered by Blogger.