2016-04-03 2 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

Замените метод onTouch() с onTouchEvent().

@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

Спасибо, это работает! –