Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何向应用程序添加onTouchEvent?_Java_Android_Events_Touch_Screen - Fatal编程技术网

Java 如何向应用程序添加onTouchEvent?

Java 如何向应用程序添加onTouchEvent?,java,android,events,touch,screen,Java,Android,Events,Touch,Screen,我为android创建了一个非常简单的乒乓球应用程序 看起来不错,但我有一个问题: 我尝试执行onScreenTouch事件,以便将球拍放置在用户的触摸位置 我的问题是-在哪里添加Obj.addOnTouchEvent(this) 什么对象可以处理屏幕触摸?屏幕对象是什么 任何图形小部件都可以处理触摸事件。通常情况下,视图或活动用于案例 有几种处理触摸的方法,但我建议使用手势监听器: public class GestureListener implements GestureDetector.

我为android创建了一个非常简单的乒乓球应用程序

看起来不错,但我有一个问题:

我尝试执行onScreenTouch事件,以便将球拍放置在用户的触摸位置

我的问题是-在哪里添加
Obj.addOnTouchEvent(this)


什么对象可以处理屏幕触摸?屏幕对象是什么

任何图形小部件都可以处理触摸事件。通常情况下,视图或活动用于案例

有几种处理触摸的方法,但我建议使用
手势监听器

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;
    }
}
在您的视图类中:

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              
    }
}

如何实现图形化?如果您使用的是SurfaceView/openGL,则将其onTouchEvent()设置为您的实现,请参见此。