【发布时间】:2011-06-01 09:28:13
【问题描述】:
我创建了一个自定义 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 中简单地恢复它,而不是重新绘制所有位图?
问题本质上是用大量动态图像刷新视图及其优化。
【问题讨论】:
-
嗨,Pravin 你有这个问题的解决方案吗,我也面临同样的问题。请分享你的发现。
标签: android android-layout android-imageview