使用慢速onDraw在Android上平滑滚动

时间:2013-06-11 08:35:03

标签: android scrollview

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

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

以前为iOS编写了相同的应用程序,iOS不会调用onDraw(我认为它在iOS世界中称为drawRect()),并且所有绘制的图像都存储在某种缓冲区中,因此实际滚动非常快速和超平滑,可能是硬件加速。

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

谢谢

1 个答案:

答案 0 :(得分:2)

使用关联的Bitmap将整个绘图制作成Canvas对象,并在onDraw中将此Bitmap刷新。数据更改后,将所有内容重绘为Bitmap