2016-04-03 59 views
0

我在画布上有一个动画类。我需要处理触摸,但OnTouchListener不起作用。我试图让一个听众主要活动,但它并没有工作。Android:如何将OnTouchListener添加到Canvas?

public class Animation extends View implements View.OnTouchListener{ 

    private Paint paint; 
    private Snake snake; 

    public Animation(Context context) { 
     super(context); 
     snake = new Snake(10, 10, 1, 0, 1, 50); 
     paint = new Paint(); 
     paint.setColor(Color.BLACK); 
    } 

    public void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     snake.move(canvas); 
     invalidate(); 
    } 

    public boolean onTouch(View v, MotionEvent event) { 
     System.out.println("asfaf"); 
     float x = event.getX(); 
     float y = event.getY(); 

     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       System.out.println(x + ' ' + y); 
       break; 
      case MotionEvent.ACTION_MOVE: 
       System.out.println(x + ' ' + y); 
       break; 
      case MotionEvent.ACTION_UP: 
      case MotionEvent.ACTION_CANCEL: 
       System.out.println(x + ' ' + y); 
       break; 
     } 
     return true; 
    } 

} 

回答

2

onTouchEvent()替换您onTouch()方法。

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    System.out.println("asfaf"); 
    float x = event.getX(); 
    float y = event.getY(); 

    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      System.out.println(x + ' ' + y); 
      break; 
     case MotionEvent.ACTION_MOVE: 
      System.out.println(x + ' ' + y); 
      break; 
     case MotionEvent.ACTION_UP: 
     case MotionEvent.ACTION_CANCEL: 
      System.out.println(x + ' ' + y); 
      break; 
    } 
    return true; 
} 

并删除implements View.OnTouchListener

+0

谢谢,它的工作原理! –

1

从您的班级中删除implements View.OnTouchListener,并将@Override放在您的onTouchEvent()方法中。

+0

谢谢,它的工作原理! –