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