Android应用程序:定时器在手指上

问题描述:

我的代码有问题。 我想清除画布(通过重置功能)当Action_UP 3秒后(这里我用了一个Timer)。 在此期间,如果事件Action_Down或Action_Move我必须取消定时器任务。Android应用程序:定时器在手指上

(Action_down & Action_move应取消Action_up中的Timer) 我该怎么办? 请帮助我。

感谢

 public boolean onTouch(View view, MotionEvent event) { 
      // Check event type 

      switch (event.getAction()) { 

      // Finger down 
      case MotionEvent.ACTION_DOWN: 

        paint.setColor(Color.BLACK); 
        paint.setStrokeWidth(7f); 
        paint.setStrokeJoin(Paint.Join.ROUND); 
        paint.setStrokeCap(Paint.Cap.ROUND); 
        paint.setAntiAlias(true); 


        // Get current position 
        pX = event.getX(); 
        pY = event.getY(); 

        // Set beginning of path to (posX,posY) 

        path.moveTo(pX, pY); 

        if (start) 
        { 
         mytimer.cancel(); 
         start = false; 
        } 


        break; 

      // Finger moves 
      case MotionEvent.ACTION_MOVE: 
        mX = event.getX(); 
        mY = event.getY(); 

        // Set position of end of path 
        path.lineTo(mX, mY); 


        // Draw path 
        bitmapCanvas.drawPath(path, paint); 

        // Invalidate canvas (redraw the view) 

        if (start) 
        { 
         mytimer.cancel(); 
         start = false; 
        } 

        invalidate(); 
        break; 

      // Finger up 
      case MotionEvent.ACTION_UP: 

        //bitmap = getResizedBitmap(bitmap, 16, 16); 
        //here We have to start our neocogniton :) 

        mX = event.getX(); 
        mY = event.getY(); 

        if (mY == pY && mX == pX){      
         bitmapCanvas.drawPoint(pX, pY, paint); 
         invalidate(); 
        } 

        path.reset(); 

        mytimer.schedule(new TimerTask() {      
         @Override 
         public void run() {reset();}}, 3000); 




        break; 

      } 


      return true; 
    } 

复位()

public void reset(){ 
      bitmapCanvas.drawColor(Color.WHITE); 
      start = true;  
    } 

我想因为这个功能被取消计时器本身你有在第二timer.cancel错误。 尝试输入:

myTimer = new Timer(); 

myTimer.cancel(); 
+0

我认为这不是解决办法,因为在Actoin_Up计时器没有取消时ACTION_DOWN – 2013-03-11 19:43:16