假设我们有一个 100x100 的显示器,一个 100x50 的图像,我想放大该图像,使其具有与屏幕相同的高度。所以图像将是200x100。之后,我想制作图像向左和向右移动的动画。我找到了两种实现我的任务的方法:
- 使用
Bitmap.createScaledBitmap()
. 但是以这种方式创建的图像将占用两倍以上的 RAM。 - 在
matrix.setScale()
每个onDraw()
. 但这工作非常缓慢。还有其他更好的解决方案吗?
假设我们有一个 100x100 的显示器,一个 100x50 的图像,我想放大该图像,使其具有与屏幕相同的高度。所以图像将是200x100。之后,我想制作图像向左和向右移动的动画。我找到了两种实现我的任务的方法:
Bitmap.createScaledBitmap()
. 但是以这种方式创建的图像将占用两倍以上的 RAM。matrix.setScale()
每个onDraw()
. 但这工作非常缓慢。还有其他更好的解决方案吗?第二种方法很慢,因为你在每一帧上计算你的“矩阵”!由于您的矩阵始终是相同的并且它不会改变,您可以预先计算您的矩阵并将其保存为类中的“字段”,然后只需使用此函数在屏幕上绘制它:
canvas.drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)
它应该足够快。另一种选择是使用:
canvas.drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)
再次,尝试尽可能多地预先计算东西。在这种情况下,预先计算 src 和 dst 矩形。