Android手势识别简单封装类
Android手势识别简单封装类
发布时间:2015-06-05 来源:查字典编辑
摘要:在做一个项目时用到了简单的手势功能(向左,向右滑切屏),于是简单地封装了下importandroid.content.Context;imp...

在做一个项目时用到了简单的手势功能(向左,向右滑切屏),于是简单地封装了下

import android.content.Context;

import android.util.DisplayMetrics;

import android.view.GestureDetector;

import android.view.GestureDetector.OnGestureListener;

import android.view.MotionEvent;

public class GestureHelper implements OnGestureListener {

private GestureDetector gesture_detector;

private int screen_width;

private OnFlingListener listener_onfling;

public static abstract class OnFlingListener {

public abstract void OnFlingLeft();

public abstract void OnFlingRight();

}

public GestureHelper(Context context) {

DisplayMetrics dm = context.getResources().getDisplayMetrics();

screen_width = dm.widthPixels;

gesture_detector = new GestureDetector(context, this);

}

public void setOnFlingListener(OnFlingListener listener) {

listener_onfling = listener;

}

public boolean onTouchEvent(MotionEvent event) {

return gesture_detector.onTouchEvent(event);

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

// 触发条件 :

// X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒

final int FLING_MIN_DISTANCE = (int) (screen_width / 3.0f), FLING_MIN_VELOCITY = 200;

if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) {

listener_onfling.OnFlingLeft();

} else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) {

listener_onfling.OnFlingRight();

}

return true;

}

@Override

public boolean onDown(MotionEvent e) {

return false;

}

@Override

public void onLongPress(MotionEvent e) {

}

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,

float distanceY) {

return false;

}

@Override

public void onShowPress(MotionEvent e) {

}

@Override

public boolean onSingleTapUp(MotionEvent e) {

return false;

}

}

使用方法如下:

public class TestActivity extends Activity {

private GestureHelper gh;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(yout.activity_start);

gh = new GestureHelper(this);

gh.setOnFlingListener(new OnFlingListener() {

@Override

public void OnFlingLeft() {

//向左滑动

}

@Override

public void OnFlingRight() {

//向右滑动

}

});

}

@Override

public boolean onTouchEvent(MotionEvent event) {

return gh.onTouchEvent(event);

}

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新安卓软件开发学习
热门安卓软件开发学习
编程开发子分类