1

我有一个很大的自定义View,我在上面画了很多富文本,很多字体,多种颜色和字体大小。我已经尽可能地优化了这张图。重绘大约需要 300 毫秒。

这 300ms 一次调用是可以的,但是由于 myView比屏幕大,所以插入到 ScrollView 中,现在一旦用户用手指滚动,onDraw()就会重复调用。这给出了非常草率的滚动。

同样的应用之前是为iOS写的,iOS不会调用onDraw(我想是drawRect()在iOS世界里调用的),所有绘制的图像都存储在某种缓冲区中,所以滚动实际上非常快而且非常流畅,大概硬件加速。

那么有没有办法实现“No onDraw”平滑滚动?我正在考虑在位图上绘图,然后在滚动阶段对位图进行 blitting。但它会比绘制文本更快吗?位图硬件是否在 Android 上加速?解决此类问题的最佳方法是什么?

谢谢

4

1 回答 1

2

Bitmap使用 associated将整个绘图变成一个对象Canvas,并且onDraw只需刷新 this Bitmap。当您的数据更改时,将所有内容重绘为Bitmap.

于 2013-06-11T09:17:25.463 回答