问题描述
|
我正在尝试查找图像的大小,但未加载到内存中。我使用流动代码
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeResource(a.getResources(),R.drawable.icon,o);
int width1 = o.outWidt;
int height1 = o.outHeight;
现在,我进行一些比较:
Bitmap icon = BitmapFactory.decodeResource(a.getResources(),R.drawable.icon);
int width = icon.getWidth();
int height = icon.getHeight();
为什么width,height不等于width1和height1?
解决方法
我几乎可以肯定这是因为从资源中引用该图像并对其进行解码是针对密度预先缩放的。
在文档上在此处签出#1:http://developer.android.com/guide/practices/screens_support.html#DensityConsiderations
, 我不确定这是怎么回事,但可能是BitmapFactory在实际返回位图时(如此处所述)应用了密度缩放,而不是仅在解码其大小时才应用。 (如果发生这种情况,我将考虑提交错误报告。)
您可以通过将图像从
drawables
目录移动到drawables-nodpi
来检验该理论。