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();
我认为这不是解决办法,因为在Actoin_Up计时器没有取消时ACTION_DOWN – 2013-03-11 19:43:16