在Android中,我定义了一个ImageView的layout_width为fill_parent(它占用了手机的全宽度)。
如果我放入ImageView的图像大于layout_width, Android会缩放?那么高度呢?当Android缩放图像时,它会保持纵横比吗?
我发现在ImageView的顶部和底部有一些空白当Android缩放一个比ImageView大的图像时。这是真的吗?如果是,我如何消除空白?
在Android中,我定义了一个ImageView的layout_width为fill_parent(它占用了手机的全宽度)。
如果我放入ImageView的图像大于layout_width, Android会缩放?那么高度呢?当Android缩放图像时,它会保持纵横比吗?
我发现在ImageView的顶部和底部有一些空白当Android缩放一个比ImageView大的图像时。这是真的吗?如果是,我如何消除空白?
当前回答
使用ImageView中的这些属性来保持纵横比:
android:adjustViewBounds="true"
android:scaleType="fitXY"
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitXY"
/>
其他回答
以下代码用于缩放图像作为纵横比:
Bitmap bitmapImage = BitmapFactory.decodeFile("Your path");
int nh = (int) ( bitmapImage.getHeight() * (512.0 / bitmapImage.getWidth()) );
Bitmap scaled = Bitmap.createScaledBitmap(bitmapImage, 512, nh, true);
your_imageview.setImageBitmap(scaled);
我用这个:
<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" />
您可以缩放图像,这也将减少图像的大小。 你可以下载并使用它的库。 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在保持适当的纵横比的情况下,既能放大又能缩小,把这个添加到你的XML中:
android:adjustViewBounds="true"
android:scaleType="fitCenter"
在代码中添加:
// We need to adjust the height if the width of the bitmap is
// smaller than the view width, otherwise the image will be boxed.
final double viewWidthToBitmapWidthRatio = (double)image.getWidth() / (double)bitmap.getWidth();
image.getLayoutParams().height = (int) (bitmap.getHeight() * viewWidthToBitmapWidthRatio);
我花了一段时间才让它工作,但这似乎在图像小于屏幕宽度和大于屏幕宽度的情况下都可以工作,而且它不会将图像框起来。
imageView.setImageBitmap(Bitmap.createScaledBitmap(bitmap, 130, 110, false));