Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android上使用慢速onDraw平滑滚动_Android_Scrollview - Fatal编程技术网

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

在Android上使用慢速onDraw平滑滚动,android,scrollview,Android,Scrollview,我有一个很大的自定义视图,我在上面画了很多丰富的文本,很多字体,多种颜色和字体大小。我已经尽可能优化了这张图。重新绘制大约需要300毫秒 这300毫秒对于一次调用来说是可以的,但是由于我的视图比屏幕大,它被插入到ScrollView中,现在一旦用户用手指滚动,就会重复调用onDraw()。这使得滚动非常草率 同样的应用程序以前是为iOS编写的,iOS不会调用onDraw(我认为它在iOS世界中被称为drawRect()),并且所有绘制的图像都存储在某种缓冲区中,因此滚动实际上非常快且非常平滑,可

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

这300毫秒对于一次调用来说是可以的,但是由于我的
视图
比屏幕大,它被插入到ScrollView中,现在一旦用户用手指滚动,就会重复调用
onDraw()
。这使得滚动非常草率

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

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


谢谢

使用关联的
画布
将整个图形制作成
位图
对象,然后在
onDraw
中刷新此
位图
。当您更改数据时,将所有内容重新绘制为
位图