在Android中,我定义了一个ImageView的layout_width为fill_parent(它占用了手机的全宽度)。

如果我放入ImageView的图像大于layout_width, Android会缩放?那么高度呢?当Android缩放图像时,它会保持纵横比吗?

我发现在ImageView的顶部和底部有一些空白当Android缩放一个比ImageView大的图像时。这是真的吗?如果是,我如何消除空白?


当前回答

以编程方式应用宽高比到Imageview:

aspectRatio = imageWidth/imageHeight   
ratioOfWidth = imageWidth/maxWidth  
ratioOfHeight = imageHeight/maxHeight  


if(ratioOfWidth > ratioOfHeight){​​​​​​​
    imageWidth = maxWidth 
    imageHeight = imageWidth/aspectRatio
}​​​​​​​ else if(ratioOfHeight > ratioOfWidth){​​​​​​​
    imageHeight = maxHeight
    imageWidth = imageHeight * aspectRatio
}​​​​​​​

之后,您可以使用缩放位图图像视图

Bitmap scaledBitmap= Bitmap.createScaledBitmap(bitmap, (int) imageWidth , (int) imageHeight , true);

其他回答

看一下ImageView。ScaleType来控制和理解在ImageView中发生大小调整的方式。当图像被调整大小时(同时保持其纵横比),图像的高度或宽度可能会小于ImageView的维度。

如果图像质量在以下情况下下降: 使用

android:adjustViewBounds="true"

而不是

android:adjustViewBounds="true"
android:scaleType="fitXY"

您可以缩放图像,这也将减少图像的大小。 你可以下载并使用它的库。 https://github.com/niraj124124/Images-Files-scale-and-compress.git

如何使用 1)导入压缩器-v1.0。Jar到您的项目。 2)添加下面的示例代码进行测试。 ResizeLimiter resize = ImageResizer.build(); 调整大小。scale("inputImagePath", "outputImagePath",imageWidth, imageHeight); 根据您的要求,还有更多的方法

我用这个:

<ImageView
android:id="@+id/logo"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true"
android:scaleType="centerInside"
android:src="@drawable/logo" />

如果你想让你的图像占据尽可能大的空间,那么最好的选择是

android:layout_weight="1"
android:scaleType="fitCenter"