0

onTouchlistener の助けを借りて、私の画像は動いていますが、特定の位置で停止して、特定の位置で何らかのアクションを実行できるようにしたいです。つまり、正確な位置をクリックすると、実行する別のアクティビティにポップアップが表示されます。

これは私が行ったコーディングです。目的の操作を実行できるように、ontouchlistner の方法はありますか

    ...
    ...        
        case MotionEvent.ACTION_DOWN:
            float xdiff = Math.abs( x - event.getX());
            float ydiff =  Math.abs( y - event.getY());
            if( xdiff < 23 || ydiff < 23 ){
                isStarted = true;
            }
            break;

        case MotionEvent.ACTION_MOVE:
            if(isStarted)
            {
                x = event.getX() - img.getWidth()/2;
                y = event.getY() - img.getHeight()/2;
                Log.v("X:" + x, "Y: " + y);
                this.invalidate();
            }
            break;

        case MotionEvent.ACTION_UP:
            isStarted = false;

    }
    return true;
}
4

2 に答える 2

0

あなたのコメントに基づいて、使用できる一般的な解決策を次に示します。

    ...
    ...        
        case MotionEvent.ACTION_DOWN:
            float xdiff = Math.abs( x - event.getX());
            float ydiff =  Math.abs( y - event.getY());
            if( xdiff < 23 || ydiff < 23 ){
                isStarted = true;
            }
            break;

        case MotionEvent.ACTION_MOVE:
            if(isStarted)
            {
                x = event.getX() - img.getWidth()/2;
                y = event.getY() - img.getHeight()/2;
                Log.v("X:" + x, "Y: " + y);
                this.invalidate();
            }
            break;

        case MotionEvent.ACTION_UP:
            if(isStarted) 
            {
                Rect imgRect = new Rect();
                img.getGlobalVisibleRect(imgRect);

                // compare if imgRect is close enough to correct place
                // if: imgRect.left, imgRect.top are near door knob position
                //      then: open dialog/ start activity
            }
            isStarted = false;

    }
    return true;
}

基本的にはACTION_UP、 の位置を比較imgし、必要な位置に近いかどうかを確認してから(X,Y)アクションを実行します。

ビューのドアとノブを初期化/描画する方法を教えていただければ、より具体的な解決策を提供できます..

于 2013-11-01T06:08:05.287 に答える