Java Android OnTouch给出了一个错误

Java Android OnTouch给出了一个错误,java,android,Java,Android,首先:我们是Android开发新手,我们有一个练习,我们不知道我们需要做什么 我们需要向touchView添加OnTouchListener,根据课程幻灯片,这可以按如下所述完成,但不起作用: public class MainActivity extends AppCompatActivity{ TouchView touchView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCr

首先:我们是Android开发新手,我们有一个练习,我们不知道我们需要做什么

我们需要向touchView添加OnTouchListener,根据课程幻灯片,这可以按如下所述完成,但不起作用:

public class MainActivity extends AppCompatActivity{

TouchView touchView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_main);
    LinearLayout ll = new LinearLayout(this);
    ll.setOrientation(LinearLayout.VERTICAL);
    this.setContentView(ll);

    float x = 500;
    float y = 500;
    float size = 1000;

    touchView = new TouchView(x,y,size,this);
    touchView.setOnTouchListener(this);
    ll.addView(touchView);
}

public boolean onTouch(View view, MotionEvent motionEvent){
    float x = motionEvent.getX();
    float y = motionEvent.getY();

    return  true;
}
使用touchView类,如下所示:

public class TouchView extends View {

public float x,y,size;
Paint paint = new Paint();

public TouchView(float xcor, float ycor, float sizenum, Context context) {

    super(context);
    x = xcor;
    y = ycor;
    size = sizenum;
    paint.setAntiAlias(true);

}



@Override
protected void onDraw(Canvas canvas){
    super.onDraw(canvas);

    paint.setColor(Color.BLUE);

    canvas.drawCircle(x, y, size, paint);
}

public TouchView(Context context, AttributeSet attributeSet){

    super(context, attributeSet);

}
}

不幸的是,它不起作用,我们完全不知道如何才能使它发挥作用。有人能帮我们吗?

谢谢,这确实解决了我们当前的问题,但由于某些原因,在我们之前尝试时,它不起作用。幸运的是,它现在可以了,必须让我做一些与另一个编辑有关的事情。有人知道为什么onTouch会被触发两次而不是一次点击一次吗?因为首先它会调用
动作\u向下
当你按视图时,第二次它会调用
动作\u向上
从视图中取下你的手指哦哇,那是我们党的严重疏忽。非常感谢你!
public class MainActivity extends AppCompatActivity implement OnTouchListener {

   TouchView touchView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        this.setContentView(ll);

        float x = 500;
        float y = 500;
        float size = 1000;

        touchView = new TouchView(x,y,size,this);
        touchView.setOnTouchListener(this);
        ll.addView(touchView);
    }

    public boolean onTouch(View view, MotionEvent motionEvent){
        float x = motionEvent.getX();
        float y = motionEvent.getY();

        return  true;
    }

}