我用这种方法调整大小:
public static Bitmap resize(Bitmap png, float scaleX, float scaleY){
Bitmap testBitmap = new Bitmap((int)(png.getWidth()*scaleX), (int)(png.getHeight()*scaleY));
int[] argb = new int[testBitmap.getWidth() * testBitmap.getHeight()];
testBitmap.getARGB(argb, 0, testBitmap.getWidth(), 0, 0, testBitmap.getWidth(), testBitmap.getHeight());
for (int index = 0; index < argb.length; index++) {
argb[index] = 0x00000000;
}
testBitmap.setARGB(argb, 0, (int)(png.getWidth()*scaleX), 0, 0,(int)(png.getWidth()*scaleX), (int)(png.getHeight()*scaleY));
png.scaleInto(testBitmap, Bitmap.FILTER_BILINEAR, Bitmap.SCALE_TO_FIT);
return testBitmap;
}
这是绘图:
图形图形;
graphics.drawBitmap(int x,int y,int width,int height,Bitmap bitmap,int left,int top);
所以,如果有人理解我说的话,请帮助我。非常感谢
答案 0 :(得分:1)
我怀疑你的屏幕是否冻结,因为你在UI线程上做了太多繁重的工作。
如果您需要开始游戏,那么在游戏开始之前创建(读取,调整大小)所有图像会更好。你应该尽量避免在游戏过程中加载/调整大小。为此,您可以创建一些游戏初始化任务,该任务在后台线程下运行,在弹出窗口中说“请等待,初始化...”。因此,当您加载/调整所有图像时,用户会被弹出窗口阻止,只是坐着等待。然后你隐藏弹出窗口,然后开始玩游戏。
另一点是你如何调整大小。有一种更有效的方法可以调整图像大小 - 可以调整图像大小而无需创建Bitmap对象(处理速度很大且速度很慢)。请改用EncodedImage
。 BB API允许将图像资源加载为EncodedImage
。然后EncodedImage
提供API来调整自身大小。最后Graphics
有API来自己绘制EncodedImage
。
我希望我的回答很有帮助。感谢。