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

謝謝,它的工作原理! –