タッチイベントのフック【Android/Kotlin】



動画のように画面に指を触れて動かしたときの移動量を取得できるようなプログラムを作ってみた。







TouchableFragmentクラス




今回はフラグメントを使用してタッチイベントのフックを行った。
TouchableFragmentクラスを作成し、フラグメントのレイアウトファイルにイベントフック専用のビューであるtouchableViewを配置した。
このビューをフラグメントのonCreateViewで取得しリスナー登録を済ませておく。



次にTouchableFragmentクラスにView.OnTouchListenerインタフェースを実装する。そしてそのメンバメソッドであるonTouchメソッドを次のようにオーバーライドする。



今回は移動量を計算させているが他にもVelocityTrackerを使って指の速度を得ることも出来るようになっている。詳しくはこちらを参考にしてもらいたい。

Track touch and pointer movements

さてTouchableFragmentクラスの全体のプログラム内容は次のようになっている。







MainActivityクラス


次にMainActivityクラスでの実装を行っていく。アクティビティのレイアウトファイルの左半分にはテキストビューを設置し、右半分にはフラグメントを入れ込むためにフレームレイアウトを設置した。

そしてMainActivityから動的にフラグメントを生成させるためのコードは次のようになる。



フラグメントをファクトリメソッドで生成し引数を渡せるようにしている。またフラグメントからのコールバックを受けて取れるようにインターフェースを使った実装を行っている。先頭のactionDownactionMoveactionUpメソッドはTouchableFragmentからのコールバック関数となる。actionMoveでは指の移動量が渡されるのでその値をテキストビューにセットして表示させている。

最後にプロジェクトを実行し、画面右半分の中で指を動かせばテキストビューに移動量が表示されるだろう。



タッチイベントの処理をアクティビティに直接書いてしまうとアクティビティが読みづらくなってしまうので、このようにフラグメントに追い出した方が管理しやすくなるので参考にしたい。


基本からしっかり身につくAndroidアプリ開発入門

圧倒的な多数のユーザーが使っているヤフーのアプリ。その制作の最前線にいる黒帯エンジニアが、ユーザーが使いやすいアプリの大切な基本をしっかりと解説します。

KindleAmazon

Kotlinプログラミング

Kotlinは、Javaとの相互運用を可能にし、Android OSでGoogleがフルサポートする静的型プログラミング言語です。この言語は、Javaだけでは十全ではない(Javaだけでは実装に手間がかかりすぎる)、軽量かつ豊かな表現形式や、他言語ではすでに実装されている最新の機能を盛り込んでいます。

KindleAmazon




参考


Track touch and pointer movements
android: move a view on touch move (ACTION_MOVE)


あなたにおすすめ