CommentsView上において、ジェスチャー操作を扱うためのクラスGestureDetectorとスクロール処理を扱うためのクラスScrollerを組み合わせた使用例を示す。アプリの概要は以下の通りである。・画面をタッチして指を移動したとき、それに追従する図形を描画する。・そこからさらに、はじくような操作をしたときに図形を慣性スクロールさせて描画する。最終的なイメージは以下のようになる。このサンプルのレイアウトxmlは以下のようになっている。/></RelativeLayout>このように、FlingLessonViewという独自のViewを画面全体に表示している。それではこの独自のViewのソースを見てみよう。||super.onTouchEvent(event);}}47行目からのinit()メソッドがこのViewの初期化処理となる。setLongClickable()をtrueで呼んでいる。これをしておかないとOnGestureListenerのonScroll()、onFling()が呼ばれないようである。51行目でGestureDetectorのインスタンスを生成している。今回の例ではonScroll()とonFling()の2つだけを使用している。65行目のonScroll()メソッドは、View上でタッチし、そのまま指を移動したときに呼び出される。現在の位置は2番目の引数のMotionEventから取得できるので、Viewのインスタンス変数に保持しておき、invalidate()を呼び出してonDraw()のタイミングで新しい座標で図形が描画されるようにしておく。85行目のonFling()メソッドは、View上で指をはじくような動作をすると呼び出される。ここでScrollerのfling()メソッドに渡ってきた引数をそのまま渡している。fling()メソッドでは移動後の最小座標と最大座標を指定できるので、画面内で収まる範囲とした。この後、定期的にScrollerのgetCurrX(),getCurrY()メソッドで得られる座標を監視するとScrollerが内部で計算した値を取得できる。今回の例ではスクロールが起きている間は10msごとにその座標を監視し、画面を更新するようにしてみた。129行目からのonDraw()メソッドでは、単に現時点での座標に青い円を描画しているだけである。135行目のonTouch()メソッドではGestureDetectorにタッチイベントを委譲している。このようにして、フリック操作と慣性スクロールを連動させることができた。続きに、エミュレーターで録画した動画を掲載する。※実機では、もう少しスムーズに描画される。誤)(int)e2.getX(),(int)e2.getY(),正)currX,currY,でしょ。コメントをキャンセルメールアドレスが公開されることはありません。