2011-05-06 65 views
1

我正在与一个Android游戏团队合作。有一个图形spritesheet资源是用96像素的初始图块宽度创建的,后来缩小为64像素。在作者的计算机上,即使图像已更新为新分辨率,当我进入调试并在BMP资源上调用getHeight()时,该项目仍以新维度在我的机器上正确运行,但返回96并显示动画显示不正确(被剪裁)。通过Git更新Eclipse Android项目 - 图像资源未更新

我曾尝试: 刷新文件系统日食重新 克隆项目,并在日食 创建一个全新的项目启动Eclipse与-clean 清洁构建

的问题仍然存在,我已经江郎才尽。请问,我如何获得eclipse来解密它保存在某个地方的任何东西,并使用明显位于/ res /文件夹中的新图像?

我正在模拟器上测试项目。运行android api 2.1,7级。

Bitmap bmp; 
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.blah); 
+0

只是为了确保,你有没有试过在Eclipse Package Explorer中的图像文件双击(至少打开Mac上的图像浏览器),并验证它的想象你在期待什么? – harism 2011-05-06 22:15:58

+0

是的。 Eclipse知道它在那里,Windows资源管理器同意在文件系统方面。我只是意识到,我可以编辑图像,并仍然有与尺寸相同的问题...我只是用红色涂在瓷砖上,它在运行时显示,但尺寸仍然是错误的。我目前的怀疑是,它必须与我运行不同的分辨率模拟器,而不是原作者。我需要明天测试。 – Jim 2011-05-06 23:52:20

回答

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); 
+0

谢谢你:) – Jim 2011-05-07 15:09:20

0

Android会自动缩放资源文件夹中的图像以获取设备的屏幕分辨率。因此,即使源图像的高度为64像素,也不能保证.getHeight()将返回64.

故事的道德:不要硬编码图像大小的值 - 使用访问器方法。