android - Android 中离屏绘制到 Canvas 的性能

标签 android bitmap android-canvas

我的问题是关于绘图性能的。假设我有一个图像宽度为 2400 像素、高度为 800 像素的位图。

我的 Canvas 只有 800 像素宽和 800 像素高。包含 CanvasViewHorizo​​ntalScrollView 的子级,因此用户可以滚动查看整个图像。

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

谢谢。

最佳答案

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

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

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

关于android - Android 中离屏绘制到 Canvas 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20140979/

相关文章:

安卓应用 : Support all screen sizes

android - 手机锁定时键盘不显示并且 Activity 禁用键盘保护

C# 图形.CopyFromScreen "parameter is not valid"

android - 如何从sdcard获取位图

android - 如何在表面上绘制平滑的运动

android - Zendesk SDK与API

android - 从 Android 中的 HTML 页面调用电话号码时获取 net::ERR_UNKNOWN_URL_SCHEME

android - 如何从SimpleDraweeView获取Bitmap?

android - 在 Android Canvas 上绘制空心圆

android - 如何在 ImageView 中缩放特定 XY 坐标(点)