展会信息港展会大全

Android手势识别简单封装类
来源:互联网   发布日期:2016-01-19 12:11:06   浏览:1249次  

导读:在做一个项目时用到了简单的手势功能(向左,向右滑切屏),于是简单地封装了下 import android content Context; import android util DisplayMetrics; import android view GestureDetector; 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(R.layout.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);

}

}

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港