0

该按钮通过 绘制在画布上onDraw。在以下方法中,我获取了绘制按钮的位置并检测到其中的触摸。一旦被感应到snapShot();就被调用。我已将 的内容替换snapShot();System.out.println("snapShot(); is called");。每次触摸我都会不断打印出四行。我不明白这个方法是如何连续调用 snapShot() 的?

public boolean onTouch(View view, MotionEvent me) {
    Resources res = getResources();
    Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.camera);
    DisplayMetrics metrics = getResources().getDisplayMetrics();
        int w = metrics.widthPixels;
        int h = metrics.heightPixels;
        int heightOffset = - bitmap.getHeight() + h;
        int widthOffset = w - bitmap.getWidth();
    //See if the motion event is on a Marker
     if((me.getRawX() >= widthOffset && me.getRawX() < (widthOffset + bitmap.getWidth()) 
                && me.getRawY() >= heightOffset && me.getRawY() < (heightOffset + bitmap.getHeight()))) 
        {
            snapShot();
            return true; 

    }

    return super.onTouchEvent(me);
};
4

1 回答 1

2

因为当您的手指向下、移动和抬起时都会调用 onTouch。您需要检查 MotionEvent 以确定哪个手指在做什么。在不引起移动事件的情况下触摸也可能非常困难 - 请参阅触摸倾斜。

http://www.mybringback.com/tutorial-series/3279/android-the-basics-32-androids-ontouchlistener-and-motionevent/

Android ACTION_MOVE 阈值

于 2012-10-12T13:55:51.237 回答