在Android中绘图会使UI变慢

时间:2017-02-06 20:33:56

标签: android android-canvas

我按照示例here创建了一个绘图应用。一切都运作良好,但FPS在画了一段时间后降到了10。我确实检查了调用Path.lineTo()onDraw的时间。两者都很快。我不知道为什么会这样,以及如何找出造成缓慢的原因。我注意到的一件事是,在调用Path.reset()后,一切都恢复正常,所以当调用Path减慢用户界面时,我会假设lineTo()中发生了一些事情。这是绘图时我的设备的监视器。 enter image description here

请帮帮我!感谢

被修改

@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()会使一切恢复正常。

0 个答案:

没有答案