我有一个很大的自定义View
,我在上面绘制了很多富文本,很多字体,多种颜色和字体大小。我已经尽可能地优化了这张图。重绘大约需要300毫秒。
这300ms对于一次性调用是可以的,但由于我的View
比屏幕大,所以它被插入到ScrollView中,现在一旦用户用手指滚动,就会调用onDraw()
反复。这给了非常草率的滚动。
以前为iOS编写了相同的应用程序,iOS不会调用onDraw(我认为它在iOS世界中称为drawRect()
),并且所有绘制的图像都存储在某种缓冲区中,因此实际滚动非常快速和超平滑,可能是硬件加速。
那么有没有办法实现像“No onDraw”平滑滚动?我正在考虑绘制位图,然后在滚动阶段blitting位图。但它会比绘制文字更快吗? Android上的位图硬件加速吗?解决这类问题的最佳方法是什么?
谢谢
答案 0 :(得分:2)
使用关联的Bitmap
将整个绘图制作成Canvas
对象,并在onDraw
中将此Bitmap
刷新。数据更改后,将所有内容重绘为Bitmap
。