SSブログ

Android:フリック/スワイプジェスチャーの実装での注意事項 [スマートフォン]

Androidのフリック/スワイプジェスチャーの実装はあちこちで紹介されているのでご存じの方も多いはず。
Googleで『Android swipe』で検索すればごろごろしています。例えば
 http://www.codeshogun.com/blog/2009/04/16/how-to-implement-swipe-action-in-android/
なんかは結構そのまま使えます。

問題は実装、生成したGestureDetectorをどのView/ViewGroupに適用するかということ(最終的にはActivityに適用することもありますね)。
AndroidOSのバージョンによってうまく動いたり動かなかったりするんです。

私が経験した例で言えば、ScrollViewの内側にあるLinearLayoutにGestureDetectorを適用した場合。(ScrollViewには適用していない)
Android2.1までは期待通りの動きをしていたんです。でもAndroid2.2で突如まったく動かなくなった・・・。
最初は原因がわからず困っていたのですが、LinearLayoutでの適用を止めScrollViewに適用するように変更したところAndroid1.6~Android2.2までは期待通りの動きをしました(たぶんAndroid2.3以降でも大丈夫)。

View自体でフリック/スワイプジェスチャーを補足しているScrollViewなどの内側にGestureDetectorを適用するのはいろいろ問題になりそうだ、と今ならば理解できるのですが以前実装したときはそこまで考えなかった。

しかもLayoutはxmlで規定し、ソースコードではレイアウト変更に対応しやすいようにしようとソースコード側はViewGroupで変数を定義するという意識が働いていたの、ScrollViewとかあまり意識しないようにした。
あまり考えなかった結果がOSによって動いたり動かなかったりという結果になり、数時間デバッグを繰り返しjavadocとにらめっこしてやっと理解する羽目に・・・。


タブレットなどを使うとフリック/スワイプジェスチャーを独自実装することも増えてくるでしょう。皆さんもジェスチャーそのものでなく、どこにそれを適用すべきかをよーく考えて実装しましょう。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:携帯コンテンツ

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。