当我遇到问题时,我正在测试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>
我使用下面的代码来获取drawable和ImageView
大小
public void onWindowFocusChanged(boolean hasFocus){
ImageView imageView=(ImageView)findViewById(R.id.test1);
Log.v("Testresult","width= "+imageView.getWidth()+" height= "
+imageView.getHeight());
Log.v("Testresult","drawawidth= "+imageView.getDrawable().getBounds().width()+
" drawableheight= "
+imageView.getDrawable().getBounds().height());
}
但是我得到了
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,因为图像必须缩放以适应屏幕?
答案 0 :(得分:2)
这是因为您的ImageView
占据整个屏幕,因此需要设备的分辨率。我想这部分很清楚。
至于drawable,无论ImageView
大小如何,它都将获得与您的资源相同的drawable和大小。 ImageView
较小,可绘制仍然相同无关紧要。
要获得缩放图像的尺寸,您可以获得水平和垂直比例:
图像将按较低值(本例中为0.48)进行缩放。所以缩放的尺寸是: