在参考了网上前辈们的经验后终于搞明白了Android滑屏手势编程。关于手势处理的具体介绍就不多说了直接上代码。
1、首先定义一个手势监控载体,你可以new一个控件如:LinerLayout、Button、TexView等等,或者从xml文件定义的控件中得到,以监控整个屏幕为例。
示例代码:
LinearLayout lean = new LinearLayout(this); //控件的属性设置就不上代码了
或:
LinearLayout lean =(LinearLayout)this.findViewById(R.id.layout);
2、对得到的控件设置触屏监听事件。
示例代码:
lean.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
gd.onTouchEvent(event); //gd为定义的GestureDetector类,调用手势处理事件方法
return true;
}
});
3、定义一个GestureDetector类。
示例代码:
//onGestureListener专业名称不知道怎么称呼,姑且叫他手势监听器,第4步对其进行实现
GestureDetector gd = new GestureDetector(this, onGestureListener);
4、实现第3步的onGestureListener。
示例代码:
GestureDetector.OnGestureListener onGestureListener = new GestureDetector.SimpleOnGestureListener() {
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {
float x = e2.getX() - e1.getX(); //获取手势滑动后x轴方向差值(从左往右x从0递增)
float y = e2.getY() - e1.getY(); //获取手势滑动后y轴方向差值(从上到下y从0递增)
float x_limit = 50; //x方向滑动距离参考值
float y_limit = 50; //y方向滑动距离参考值
float x_abs = Math.abs(x);
float y_abs = Math.abs(y);
if (x_abs >= y_abs) { //x方向比y方向滑动距离大,判定为左右滑动
// gesture left or right
if (x > x_limit || x < -x_limit) { //x为正值时比参考值大、或x为负值时比参考值取负值小为滑动事件
if (x > 0) {
// right
//在此添加向左滑屏的处理方法
} else {
// left
//在此添加向右滑屏的处理方法
}
}
} else { //x方向比y方向滑动距离小,判定为上下滑动
// gesture down or up
if (y > y_limit || y < -y_limit) {//y为正值时比参考值大、或y为负值时比参考值取负值小为滑动事件
if (y > 0) {
// down
//在此添加向下滑屏的处理方法
} else {
// up
//在此添加向上滑屏的处理方法
}
}
}
return true;
}
};
以上代码就能实现手势的简单处理实现了,还有其他的实现方式就不多说了(如:通过让Activity实现GestureDetector接口的onFling方法)。