为什么ImageView中drawable的宽度/高度错误?

Gra*_*eme 8 android imageview

应该是一个简单的.

当我拉动时,image.getDrawable().getIntrinsicWidth()我得到一个大于源图像宽度的值.它的X坐标是返回2880而不是1920,这是1.5倍太大了?

我想知道具有scaleType"center"的ImageView是否影响了它,但根据文档:

"将图像置于视图中心,但不执行缩放. "

这是来源:

<ImageView  
    android:id="@+id/backgroundImage"   
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:src="@drawable/background"
    android:scaleType="center"/>
Run Code Online (Sandbox Code Playgroud)

Ton*_*han 23

你说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/drawableAndroid系统中,则将这些drawable视为mdpi设备,因此在Nexus S中进行升级.如果这是针对hdpi屏幕的,并且您不希望它升级,那么请尝试将其放入drawable-hdpi