Android 为什么使用imageview';s的宽度和高度小于可拉伸的';s的宽度和高度?

Android 为什么使用imageview';s的宽度和高度小于可拉伸的';s的宽度和高度?,android,android-imageview,Android,Android Imageview,我正在测试ImageView的功能,同时遇到了一些问题。 我有一张1000*562的图像。我的测试设备是三星I9103,屏幕尺寸是480*800。我的项目布局非常简单,只是一个ImageView <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match

我正在测试
ImageView
的功能,同时遇到了一些问题。 我有一张1000*562的图像。我的测试设备是三星I9103,屏幕尺寸是480*800。我的项目布局非常简单,只是一个
ImageView

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView 
    android:id="@+id/test1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:src="@drawable/pic_1000_562"/>
 </RelativeLayout>
但我明白了

11-17 17:48:46.865: V/Testresult(15225): width= 480 height= 690
11-17 17:48:46.865: V/Testresult(15225): drawawidth= 1000 drawableheight= 562

我的问题是为什么drawabldwidth是1000而不是480,因为图像必须缩放以适应屏幕?

这是因为您的
ImageView
占据整个屏幕,因此它将占据设备的分辨率。我想这部分很清楚

至于可绘制的,不管
ImageView
大小如何,它都将获得与资源中相同的可绘制内容和大小。
ImageView
越小越好,drawable还是一样的


要获取缩放图像的尺寸,可以获取水平和垂直比例:

  • 水平方向:480/1000=0.48
  • 垂直方向:562/800=0.7025
图像将按较低的值缩放(在本例中为0.48)。因此,缩放尺寸为:

  • 水平方向:1000*0.48=480
  • 垂直方向:562*0.48=269.76

正如我所看到的,图片的宽度适合父级(480),高度也被缩放到大约(269.76)保持原始比例。那么我如何才能得到缩放后的图片大小(480*269.76)?我想你可以检查它是水平缩放还是垂直缩放(哪个比例更小),然后得到另一个。
11-17 17:48:46.865: V/Testresult(15225): width= 480 height= 690
11-17 17:48:46.865: V/Testresult(15225): drawawidth= 1000 drawableheight= 562