1

我的应用程序中有一个画廊。我的照片来自互联网,所以它们是动态添加的。我的画廊并没有将它们裁剪成一个完美的正方形。我想这样做只是为了让我的画廊看起来更好。我在我的 XML 中试过这个;

 ImageView
        android:id="@+id/phone"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="15dp"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop"/>

但是因为我是动态添加图像而不是从srcxml 中添加图像,所以这不起作用。任何人都知道如何以另一种方式做到这一点?动态添加时,我找不到任何有关如何执行此操作的信息。提前致谢。

4

3 回答 3

3

如果我没有弄错,我们可以这样做

imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
于 2018-09-06T14:59:32.357 回答
1

如果您需要动态缩放图像,您可以使用位图的缩放位图方法以编程方式指定缩小/放大图像的大小。像这样的东西:

位图 scaledBitmap = Bitmap.createScaledBitmap(unscaledBitmap, WantedWidth, WantHeight, true);

有关缩放详细信息,您可以点击以下链接:

http://developer.sonymobile.com/2011/06/27/how-to-scale-images-for-your-android-application/

于 2013-08-15T23:54:07.450 回答
0

你把图像放在一个GridView? 如果是这样,那么以下将起作用。(如果没有,类似的东西可能会起作用,但我没有测试过)。

首先,强制视图为正方形实际上有点棘手,因为宽度和高度是分开测量的。您可以参考Simple way to do dynamic but square layout了解一些想法。最简单的一个(我认为)是创建一个继承自ImageView但覆盖的新视图onMeasure(),例如

public class SquareImageView {

    // add usual constructors here

    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        // this will change the height to match the measured width
        super.onMeasure(widthMeasureSpec, widthMeasureSpec);
    }
}

然后更改您的布局 xml 以创建实例SquareImageView而不是ImageView. 我认为您的其他属性都可以,特别是android:scaleType="centerCrop"可以确保图像填满整个正方形。

在此之后,您将图像从任何来源下载到Bitmap实例中,然后调用imageView.setImageBitmap(bitmap)以显示裁剪为完美正方形的图像。就是这样!

于 2013-08-15T23:57:38.957 回答