我创建了一个自定义 ImageView,在其 onDraw 方法中,我需要根据用户交互(如触摸)绘制一些位图。一切都很好,但是当我开始添加越来越多的位图时,应用程序确实变慢了。
这就是我在自定义 ImageView 的 onDraw 中所做的
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Log.e(TAG, "onDraw called");
for (int i=0; i < bitmapList.size(); i++){
drawBitmap(canvas, bitmapList.get(i));
}
}
如您所见,每次 onDraw 被自然调用时,我都会重绘 List 中的所有位图,当位图的数量超过 4-5 时,操作变得非常昂贵并减慢了应用程序的速度。
关于如何优化这个问题的任何解决方案?
在不同的线程中调用 drawBitmap 可以降低操作成本吗?
有没有办法保留前一个画布的副本,然后简单地在 onDraw 中恢复它,而不是再次绘制所有位图?
问题本质上是用大量动态图像刷新视图及其优化。