我刚刚开始使用SurfaceView
用Android开发我的第一款游戏。
我缩放Bitmap
以支持不同的屏幕尺寸。但是我不知道在加载位图或使用Matrix将其绘制到Canvas
时进行缩放是否更好。
我想第一个会占用更多内存,但性能会更好。但是我不知道这里的实际情况如何,因此专家的任何建议都会受到赞赏。
最佳答案
最好的办法是根本不缩放位图。您可以只缩放SurfaceView的表面。
有关示例,请参见Grafika中的“硬件缩放器练习器”,有关说明,请参见this post。基本想法是调用类似surfaceView.getHolder().setFixedSize(1280, 720)
的东西将表面的大小设置为1280x720,然后始终像显示720p一样进行渲染。硬件会将其缩放到当前屏幕尺寸。
比这稍微复杂一点-您想要选择一个与显示长宽比匹配的大小,以使您的内容看起来不会拉伸(无论如何,这是您必须在Android上处理的事情)。 Grafika这样做是为了确保正方形保持正方形。
与缩放单个位图相比,此方法在CPU和内存消耗方面均效率更高。