Android 用onTouchEvent判断上下左右滑动

论坛 期权论坛 脚本     
匿名技术用户   2021-1-5 16:57   53   0

package com.qing.leftrightdemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.Toast;

public class MainActivity extends Activity implements
android.view.GestureDetector.OnGestureListener {
// 定义手势检测器实例
GestureDetector detector;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 创建手势检测器
detector = new GestureDetector(this, this);
}

// 将该activity上的触碰事件交给GestureDetector处理
public boolean onTouchEvent(MotionEvent me) {
return detector.onTouchEvent(me);
}

@Override
public boolean onDown(MotionEvent arg0) {
return false;
}

/**
* 滑屏监测
*
*/
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
float minMove = 120; // 最小滑动距离
float minVelocity = 0; // 最小滑动速度
float beginX = e1.getX();
float endX = e2.getX();
float beginY = e1.getY();
float endY = e2.getY();

if (beginX - endX > minMove && Math.abs(velocityX) > minVelocity) { // 左滑
Toast.makeText(this, velocityX + "左滑", Toast.LENGTH_SHORT).show();
} else if (endX - beginX > minMove && Math.abs(velocityX) > minVelocity) { // 右滑
Toast.makeText(this, velocityX + "右滑", Toast.LENGTH_SHORT).show();
} else if (beginY - endY > minMove && Math.abs(velocityY) > minVelocity) { // 上滑
Toast.makeText(this, velocityX + "上滑", Toast.LENGTH_SHORT).show();
} else if (endY - beginY > minMove && Math.abs(velocityY) > minVelocity) { // 下滑
Toast.makeText(this, velocityX + "下滑", Toast.LENGTH_SHORT).show();
}

return false;
}

@Override
public void onShowPress(MotionEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public boolean onSingleTapUp(MotionEvent arg0) {
// TODO Auto-generated method stub
return false;
}

@Override
public void onLongPress(MotionEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {

return false;
}
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP