Browse » Home » Documentation, Resource » Blog article: GestureDetector

June 8th, 2009, EGGer

探测当前用户各种不同的操作手势,通过 GestureDetector.OnGestureListener callback来获取当前被触发的操作手势(Single Tap Up、Show Press、Long Press、Scroll、Down、Fling)。

使用方法:

private GestureDetector mGestureDetector;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mGestureDetector = new GestureDetector(this, new LearnGestureListener());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
    if (mGestureDetector.onTouchEvent(event))
        return true;
    else
        return false;
}
class LearnGestureListener extends GestureDetector.SimpleOnGestureListener{
    @Override
    public boolean onSingleTapUp(MotionEvent ev) {
        Log.d("onSingleTapUp",ev.toString());
        return true;
    }
    @Override
    public void onShowPress(MotionEvent ev) {
        Log.d("onShowPress",ev.toString());
    }
    @Override
    public void onLongPress(MotionEvent ev) {
        Log.d("onLongPress",ev.toString());
    }
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        Log.d("onScroll",e1.toString());
        return true;
    }
    @Override
    public boolean onDown(MotionEvent ev) {
        Log.d("onDownd",ev.toString());
        return true;
    }
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        Log.d("d",e1.toString());
        Log.d("e2",e2.toString());
        return true;
    }
}

说明:

在当前类中创建一个GestureDetector实例。

private GestureDetector mGestureDetector;

创建一个Listener来实时监听当前面板操作手势。

class LearnGestureListener extends GestureDetector.SimpleOnGestureListener

在初始化时,将Listener实例关联当前的GestureDetector实例。

mGestureDetector = new GestureDetector(this, new LearnGestureListener());

利用onTouchEvent方法作为入口检测,通过传递MotionEvent参数来监听操作手势。

mGestureDetector.onTouchEvent(event)

其它帮助文档:

[Via Almond Mendoza]

Tags: ,

Posted in Documentation, Resource |

Random Posts



Leave a Reply

You must be logged in to post a comment.