在Android中绘制屏幕外的画布性能

时间:2013-11-22 09:11:20

标签: android bitmap android-canvas

我的问题是关于绘画表现。假设我的图片宽度为Bitmap = 2400px,高度为800px。

我的Canvas只有800像素宽,800像素高。包含View的{​​{1}}是Canvas的孩子,因此用户可以滚动查看整个图片。

我加载HorizontalScrollView一次,并在Bitmap方法的每一帧中绘制它。在这种情况下,“屏幕外”绘图是否会导致性能问题?如果是这样,如何让它更顺畅?

感谢。

1 个答案:

答案 0 :(得分:0)

当然,位图大小是个问题。在典型的Android实现中,无法呈现尺寸超过4000像素的纹理。在某些Android设备中,此限制为2000px。

由于你的目标是允许用户滚动查看整个图像,如果我是你,我不会使用Horizo​​ntalScrollView。相反,您应该实现View的子类并覆盖onDraw(Canvas画布)方法。然后,您可以检测触摸并修改矩阵。这样的矩阵将用于调用Canvas.drawBitmap(Bitmap,Matrix,Paint)

特别是对于超大图像问题,在接收到Bitmap对象后,您可以将其分成6个部分。 (2400 x 800 - > 800 x 800 x 6)。然后,您应该控制视口位置并推断出图像的可见部分。在最好的情况下,您只需要绘制1 800x800位图。在最坏的情况下,您需要绘制4个800x800位图。