前言
V5.5: 增加优化绘制的选项,可优化绘制速度和性能,纵享丝滑。
boolean optimizeDrawing = true; // 是否优化绘制,建议开启,可优化绘制速度和性能.
DoodleView mDoodleView = new DoodleView(this, bitmap, optimizeDrawing, doodleListener);
复制代码
真是太不容易了!
其实在很早之前,笔者就已经感受到涂鸦时的卡顿,特别是随着涂鸦越多卡顿越明显,奈何当时心有余而力不足,一直找不到最佳的解决方法。直到最近灵感爆发,终于解决之,纵享丝滑!
问题的初步解决
当涂鸦越来越多时,操作时的卡顿越明显,同时也导致涂鸦的轨迹不够圆滑。初步分析是因为DoodleView每次刷新绘制都会把所有的涂鸦都绘制一遍,因此涂鸦越多,绘制越耗时。
private void doDraw(Canvas canvas){
...
for (IDoodleItem item : mItemStack) { // 耗时:绘制所有涂鸦
...
item.draw(canvas);
...
}
}
复制代码
借助Android Studio的Profiler工具查看cpu的主要耗时在绘制方法里: