/**
* 手勢監聽
*
* @author lifengfeng
*
*/
public class MainActivity extends Activity implements OnTouchListener,
OnGestureListener {
// 創建一個用於識別收拾的GestureDetector對象
@SuppressWarnings("deprecation")
private GestureDetector detector = new GestureDetector(this);
// 新建一個LinearLayout佈局對象,這裏是指主頁面的佈局
private LinearLayout myLayout;
// 限制最小移動像素
private int FLING_MIN_DISTANCE = 110;
// 定義的Toast提示框顯示時間
private int TIME_OUT = 1000;
private static final String TAG = "Main";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myLayout = (LinearLayout) findViewById(R.id.test_layout);
// 爲佈局綁定監聽
myLayout.setOnTouchListener(this);
}
/**
* 手勢滑動時別調用
*/
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// X軸的座標位移大於FLING_MIN_DISTANCE,且移動速度大於FLING_MIN_VELOCITY個像素/秒
if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE) {
// 向左滑動
Toast.makeText(this, "向左滑動", TIME_OUT).show();
} else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE) {
// 向右滑動
Toast.makeText(this, "向右滑動", TIME_OUT).show();
}
return false;
}
/**
* 長按時被調用
*/
@Override
public void onLongPress(MotionEvent e) {
Log.d(TAG, "觸發長按回調");
}
/**
* 滾動時調用
*/
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
return false;
}
/**
* 在按下動作時被調用
*/
@Override
public boolean onDown(MotionEvent e) {
Log.d(TAG, "按下回調");
return false;
}
/**
* 按住時被調用
*/
@Override
public void onShowPress(MotionEvent e) {
Log.d(TAG, "按住不松回調");
}
/**
* 擡起時被調用
*/
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.d(TAG, "觸發擡起回調");
return false;
}
/**
* 重寫OnTouchListener的onTouch方法 此方法在觸摸屏被觸摸,即發生觸摸事件(接觸和撫摸兩個事件)的時候被調用
*/
@Override
public boolean onTouch(View v, MotionEvent event) {
detector.onTouchEvent(event);
return true;
}
}
android手勢滑動——左右滑動效果實現
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.