具有宽高比的Android方形图像

时间:2013-06-16 07:57:41

标签: android imageview android-imageview

我只是有一个来自手机图库的图片,其中大部分是肖像,即(高度>宽度)或横向(宽度>高度)

我想以方形显示每张照片 每个图像都比我要放入的图像视图大,没关系,我希望图像被裁剪和居中,

我一直在使用imageview scaleType

FitXY

它给了我想要的东西,一个正方形,但它没有保持纵横比,所以图像看起来很扭曲。

所以我用

centerCrop

保持纵横比,但是imageview不再是正方形(由于保持纵横比)

我想我想要的是centerCrop + fitXY,即我想要保持宽高比的sqaure图像

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以创建自定义ImageView,它将使用图片高度/宽度,并调整宽度/高度以保持宽高比。

像这样覆盖onMeasure

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    Drawable d = getDrawable();

    if (d != null) {
        // ceil not round - avoid thin vertical gaps along the left/right edges
        int width = MeasureSpec.getSize(widthMeasureSpec);
        int height = (int) Math
                .ceil((float) width * (float) d.getIntrinsicHeight() / (float) d.getIntrinsicWidth());
        setMeasuredDimension(width, height);
    } else {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
}

使用此onMeasure的ImageView会将图片拉伸到其宽度并调整其高度以保持图像的纵横比。您还可以设置与宽度相同的高度以获得方形图像。

可能与:Android ImageView adjusting parent's height and fitting width

有关