0

ボタンは、を介してキャンバスに描画されますonDraw。次の方法では、描画されたボタンの位置を取得し、その中のタッチを検出しています。それが感知snapShot();されると、が呼び出されます。snapShot();の内容をに置き換えましたSystem.out.println("snapShot(); is called");。タッチするたびに、常に4行が印刷されます。このメソッドが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/

AndroidACTION_MOVEしきい値

于 2012-10-12T13:55:51.237 に答える