我正在与一个Android游戏团队合作。创建了一个图形spritesheet资源,其初始图块宽度为96像素,后来缩小为64像素。在作者的计算机上,项目在新的维度上正确运行,但在我的机器上,即使图像已更新到新的分辨率,当我进入调试并在BMP资源上调用getHeight()时,它返回96和动画显示不正确(被剪裁)。
我试过了: 刷新eclipse文件系统 重新克隆项目并在eclipse中创建一个干净的项目 用-clean开始日食 清理构建
问题仍然存在,我已经没有想法了。请问,我如何得到eclipse以解除它在某处保留的任何问题,并使用明显位于/ res /文件夹中的新图像?
我正在模拟器上测试项目。运行android api 2.1,等级7。
Bitmap bmp;
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.blah);
答案 0 :(得分:1)
如果要强制原始大小,则需要在加载位图时设置“inScaled”标志。当我的Open GL textures weren't showing up on larger screen devices时,我发现了这个问题。
这样的事情应该这样做:
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inScaled = false;
Bitmap bmp = BitmapFactory.decodeResource(getResources(),
R.drawable.my_image, opts);
答案 1 :(得分:0)
Android会自动缩放资源文件夹中的图像以获取设备的屏幕分辨率。因此,即使源图像的高度为64像素,也无法保证.getHeight()将返回64.
故事的道德:不要硬编码图像大小的值 - 使用存取方法。