我的问题是关于绘画表现。假设我的图片宽度为Bitmap
= 2400px,高度为800px。
我的Canvas
只有800像素宽,800像素高。包含View
的{{1}}是Canvas
的孩子,因此用户可以滚动查看整个图片。
我加载HorizontalScrollView
一次,并在Bitmap
方法的每一帧中绘制它。在这种情况下,“屏幕外”绘图是否会导致性能问题?如果是这样,如何让它更顺畅?
感谢。
答案 0 :(得分:0)
当然,位图大小是个问题。在典型的Android实现中,无法呈现尺寸超过4000像素的纹理。在某些Android设备中,此限制为2000px。
由于你的目标是允许用户滚动查看整个图像,如果我是你,我不会使用HorizontalScrollView。相反,您应该实现View的子类并覆盖onDraw(Canvas画布)方法。然后,您可以检测触摸并修改矩阵。这样的矩阵将用于调用Canvas.drawBitmap(Bitmap,Matrix,Paint)
特别是对于超大图像问题,在接收到Bitmap对象后,您可以将其分成6个部分。 (2400 x 800 - > 800 x 800 x 6)。然后,您应该控制视口位置并推断出图像的可见部分。在最好的情况下,您只需要绘制1 800x800位图。在最坏的情况下,您需要绘制4个800x800位图。