我按照示例here创建了一个绘图应用。一切都运作良好,但FPS在画了一段时间后降到了10。我确实检查了调用Path.lineTo()
和onDraw
的时间。两者都很快。我不知道为什么会这样,以及如何找出造成缓慢的原因。我注意到的一件事是,在调用Path.reset()
后,一切都恢复正常,所以当调用Path
减慢用户界面时,我会假设lineTo()
中发生了一些事情。这是绘图时我的设备的监视器。
请帮帮我!感谢
被修改
@Override
public boolean onTouchEvent(MotionEvent event) {
float touchX = event.getX();
float touchY = event.getY();
//respond to down, move and up events
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
drawPath.moveTo(touchX, touchY);
break;
case MotionEvent.ACTION_MOVE:
long time = System.currentTimeMillis();
drawPath.lineTo(touchX, touchY);
Log.d(TAG, "TIME in move: " +(System.currentTimeMillis() - time));
break;
case MotionEvent.ACTION_UP:
drawPath.lineTo(touchX, touchY);
drawCanvas.drawPath(drawPath, drawPaint);
drawPath.reset();
break;
default:
return false;
}
//redraw
invalidate();
return true;
}
@Override
protected void onDraw(Canvas canvas) {
long time = System.currentTimeMillis();
canvas.drawBitmap(canvasBitmap, 0 , 0, canvasPaint);
canvas.drawPath(drawPath, drawPaint);
Log.d(TAG, "TIME in onDraw: " +(System.currentTimeMillis() - time));
}
基本上所有内容都来自教程。它确实可以完成它的工作,但我不知道什么会减慢用户界面以及为什么调用reset()
会使一切恢复正常。