标签:
1,触屏一刹那,触发MotionEvent事件
2,被OntouchListener 监听,在onTouch()中获取得到MotionEvent对象
3,GestureDetector转发MotionEvent对象至OnGestureListener
GestureDetector.onTouchEvent(event);
4,OnGestureListener获取该对象,根据该对象封装的信息做出合适的反馈。
class myGestureLis ener extends SimpleOnGestureListener{
onFling(...){
if(e1.getX() - e2.getX()>50){
Toash.("xxxx");
}
}
}
GestureDetector myGestureDetector;
class MaiActivity extends Activity{
onCreate(...){
myGestureDetector = new GestureDetector(new myGestureLis());
img.setOnTouchListener(new OnTouchListener(){
//
onTouch(View){
myGestureDetector.onTouchEvent(event);
}
});
}
}
or:
detector = new GestureDetector(context, new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
/**
* 响应手指在屏幕上的滑动事件。
*/
@Override
public boolean onScroll
(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
//移动屏幕
System.out.println("zuobiao " + distanceX);
/**
* 移动当前view的内容
* disX表示移动Y的距离
* disY表示移动y的距离
*/
scrollBy((int) distanceX, 0);
/**
* 将当前视图的基准点移动到 某个点 上。
* x 水平方向x的坐标,y
* scrollTo(x,y)
*/
return false;
}
@Override
public void onLongPress(MotionEvent e) {
//长点击的时候。
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
return false;
}
});
GestureOverlayView
<android.gesture.GestureOverlayView
android:id="@+id/gestureOverlayView"
width;
height;
>
<><><><>....</></></>
<android.gesture.GestureOverlayView/>
GestureOverlayView gestureOverlayView;
class Mainactivity extends Activity{
onCreate(...){
gestureOverlayView = findByID(R...);
//从资源中将手势库文件加载进来了。
GestureLibrary library = GestureLibraries.fromRawRessource(this,R.raw.gesture); library.load();
gestureOverlayView.addOnGesturePerformedListener(new OnGesturePerFormedListener(){
@Override
public void onGesturePerformed(GestureOverlayVfiew overlay,Gesture gesture){
//读出手势库文件的内容,识别手势
ArrayList<Prediction> myGesture = library.recognize(gesture);
Prediction prediction = myGesture.get(0);
if(predction.score >= 5.0){
if(predction .name.equals("next");){
//TODO 执行的操作
}
}else{
Toash.("没有该手势");
}
}
});
}
}
一些常见的XML属性
Android:eventsInterceptionEnabled
定义当手势已经被识别出来了,是否拦截该手势的动作
Android:fadeDuration
当用户画完, 手势效果淡出的时间
Android:fadeEnabled
用户画完之后,手势效果淡出的时间
Android:gestureColor
手势的颜色
Android:gestureStrokeType
画笔的类型
Android:gestureStokeWidth
笔画的粗细
标签:
原文地址:http://blog.csdn.net/xs15073722800/article/details/51331324