OnTouchListener で、フリック(スワイプ)の処理を記述を外のクラスで書く為
(作成している Activity クラスで書いてもいいが、決まった処理の記述を毎回コーディングしたくない)
以下のように。。
import android.view.MotionEvent;
import android.view.View;
/**
* FlickTouchListner
*
* interface FlickTouchListner.FlickAction を指定して
* 左 → 右 / 右 → 左 の動作を指定する。
*/
public class FlickTouchListner implements View.OnTouchListener{
public interface FlickAction{
/** 右 → 左 の処理
* @param len 移動した長さ
*/
public void left(int len);
/** 左 → 右 の処理
* @param len 移動した長さ
*/
public void right(int len);
}
private float lastTouchX;
private float currentX;
private FlickAction action;
private int play;
/**
* コンストラクタ
* @param touchPlay 遊び 100以上が妥当
* @param action FlickAction
*/
public FlickTouchListner(int touchPlay,FlickAction action){
this.play = touchPlay;
this.action = action;
}
@Override
public boolean onTouch(View v,MotionEvent event){
if (event.getAction()==MotionEvent.ACTION_DOWN){
lastTouchX = event.getX();
}else if(event.getAction()==MotionEvent.ACTION_UP){
currentX = event.getX();
if (lastTouchX < (currentX + play)){
// 左 → 右
action.right*1;
}else if(lastTouchX > (currentX + play)){
// 右 → 左
action.left*2;
}
}
return true;
}
}
これを、
android.view.View.setOnTouchListener で指定するだけ