前回と同様に、Activity の切り替えをフリックで実行する為のクラス。
これも、android.view.View.setOnTouchListener で指定する。
import android.app.Activity;
import android.content.Intent;
import android.view.MotionEvent;
import android.view.View;
/**
* FlickTouchTransition
*
* 右 → 左 startActivity(Intent)
* 左 → 右 finish()実行
*/
public class FlickTouchTransition implements View.OnTouchListener{
private float lastTouchX;
private float currentX;
private Activity activity;
private Intent startIntent;
private int play;
/**
* コンストラクタ
* @param myactivity
* @param startIntent 右フリックで開始する Intent
* @param touchPlay 遊び 100以上が妥当
*/
public FlickTouchTransition(Activity myactivity,Intent startIntent,int touchPlay){
this.activity = myactivity;
this.startIntent = startIntent;
this.play = touchPlay;
}
/**
* コンストラクタ(右フリックで開始する Intent無い場合)
* @param myactivity
* @param touchPlay 遊び 100以上が妥当
*/
public FlickTouchTransition(Activity myactivity,int touchPlay){
this.activity = myactivity;
this.startIntent = null;
this.play = touchPlay;
}
@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)){
// 前に戻る動作
activity.finish();
}else if(lastTouchX > (currentX + play)){
// 次に移動する動作
if (startIntent != null){
activity.startActivity(startIntent);
}
}
}
return true;
}
}