应该是一个简单的.
当我拉image.getDrawable().getIntrinsicWidth()时,我得到一个大于源图像宽度的值.它的X坐标是返回2880而不是1920,这是1.5倍太大了?
我想知道具有scaleType“center”的ImageView是否影响了它,但根据documentation:
“Center the image in the view,but perform no scaling.“
这是来源:
<ImageView android:id="@+id/backgroundImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/background" android:scaleType="center"/>
解决方法
你说drawable来自你的/ res文件夹.它在哪个文件夹中?
> / res / drawable
> / res / drawable-mdpi
> / res / drawable-hdpi
等等..
您正在测试的设备的密度是多少?它是一般密度为240dpi的Nexus S吗?因为如果您的源可绘制文件位于drawable-mdpi文件夹中并且您正在240dpi设备上进行测试,那么Android系统将自动将可绘制对象缩放1.5倍,以便物理大小与基线设备密度一致在160dpi.
当你调用getIntrinsicWidth()时,返回的是在Android缩放drawable之后drawable想要的大小.你会注意到2880 = 1920 * 1.5
如果您将drawable放在/ res / drawable中,Android系统会将这些drawable视为mdpi设备,因此Nexus S中的升级版本如果这是针对hdpi屏幕的,并且您不希望它升级,那么请尝试将其放入绘制,华电国际