0

Android 用の非常にシンプルなピンポン アプリケーションを作成します。

それはかなり良いようですが、私には1つの問題があります:

ラケットをユーザーのタッチ位置に配置するために、onScreenTouch イベントを実行しようとしました。

私の質問は - どこに ? を追加するObj.addOnTouchEvent(this)かです。

画面タッチを処理するオブジェクトは何ですか? 画面オブジェクトは何ですか?

4

1 に答える 1

1

どのグラフィックウィジェットでもタッチイベントを処理できます。通常、ビューまたはアクティビティがケースに使用されます。

タッチを処理する方法はいくつかありますが、次のことをお勧めしGestureListenerます。

public class GestureListener implements GestureDetector.OnGestureListener 
{
    MyView appliedView; //view who responses to graphical gestures

    public GestureListener(MyView currentView) 
    {
        this.appliedView = currentView;
    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, 
            float dx,
            float dy) {
        //make your view response to gestures
        appliedView.onGestureMove(e1, e2, dx, dy);
        return true;
    }

    @Override
    public boolean onDown(MotionEvent arg0) {
        return true;
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, 
            float velocityX,
            float velocityY) {
        return true;
    }

    @Override
    public void onLongPress(MotionEvent e) {

    }

    @Override
    public void onShowPress(MotionEvent e) {

    }

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        return true;
    }
}

そしてあなたのViewクラスでは:

public class MyView extends View 
{
    private GestureDetector gestureMgr;

    public MyView(Context context) 
    {
        super(context);
        gestureMgr= new GestureDetector(context, new GestureListener(this));
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) 
    {
        return gestureMgr.onTouchEvent(event);
    }

    public void onGestureMove(MotionEvent e1, MotionEvent e2, float dx, float dy)
    {
        //check obj is touched or not
        //do moving objects around              
    }
}
于 2012-09-07T02:11:48.443 に答える