我正在尝试为游戏加载背景图像以及一些较小的图像,将它们放在画布上,并让人们与较小的叠加图像进行交互(如移动、旋转)
为了保持纵横比(例如 5:3),我尝试将图像作为位图加载并自己调整大小。这个想法是根据画布的宽度/高度对背景进行裁剪/字母装箱,并为较小的图像保持正确的大小比例。
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), resourceImg);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg2, 0, 0, width, height, matrix, true);
为了满足平板电脑/手机的需求,我有一个 1600x1000 和 200kb 的背景 PNG 背景图像。
但是,由于位图在尝试调整大小时为 1600x1000x4byte=6.4 mb 和更多内存,我现在正在努力解决内存不足的问题。(发生这些问题时,我正在使用模拟器)
我决定将其更改为使用 canvas.setBackgroundResource
SceneCanvas sceneCanvas = (SceneCanvas) findViewById(R.id.the_canvas);
sceneCanvas.setBackgroundResource(R.drawable.my_scene_1600x900);
这很好用,除了它填满屏幕并且不保持纵横比。
有没有办法设置背景保持纵横比?或者我是否完全走错了路线,应该使用 ImageViews 并以某种方式渲染到画布以避免 OutOfMemory 问题