FrameLayout中的Imageview是拉伸scaletype是centercrop

时间:2018-03-16 08:23:28

标签: android layout imageview rounded-corners

在我的应用程序中,我需要带有圆角的ImageView,所以我在ImageView内设置framelayout,当我设置scaleType centerCrop时,图像在ImageView内设置在第一次加载时伸展,再次刷新页面图像没有拉伸并设置圆角。我怎样才能避免第一次拉伸。提前谢谢。 以下是XML代码

<FrameLayout
    android:id="@+id/imageframe"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/image"
        android:layout_width="@dimen/dp_80"
        android:layout_height="@dimen/dp_80"
        android:background="@drawable/image_rounded"
        android:src="@drawable/dummypost1"
        android:scaleType="centerCrop"/>

    <ImageView
        android:src="@drawable/image_rounded"
        android:layout_width="@dimen/dp_80"
        android:layout_height="@dimen/dp_80"
        android:scaleType="centerCrop"/>

</FrameLayout>

1 个答案:

答案 0 :(得分:2)

如果你想要一个圆角的ImageView,就不需要像这样包装。

您只能在布局中使用ImageView并使用glide,您可以使用此方法应用圆角。

首先在你的gradle写中,

  

编译'com.github.bumptech.glide:glide:3.7.0'

对于带圆角的图像,

public void loadImageWithCorners(String url, ImageView view) {
    Glide.with(context)
            .load(url)
            .asBitmap()
            .centerCrop()
            .placeholder(R.color.gray)
            .error(R.color.gray)
            .diskCacheStrategy(DiskCacheStrategy.SOURCE)
            .into(new BitmapImageViewTarget(view) {
                @Override
                protected void setResource(Bitmap resource) {
                    RoundedBitmapDrawable circularBitmapDrawable =
                            RoundedBitmapDrawableFactory.create(context.getResources(), resource);
                    circularBitmapDrawable.setCornerRadius(32.0f); // radius for corners
                    view.setImageDrawable(circularBitmapDrawable);
                }
            });
}

通话方法:

loadImageWithCorners("your url","your imageview");