如何将从相册中选择的图片剪裁成圆形?

6
如何实现圆形 ImageView。这是我的 xml 代码:
<RelativeLayout
            android:id="@+id/imgUser"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="20dp"
            android:background="@drawable/circle_border">

            <ImageView
                android:id="@+id/studentimg"
                android:layout_width="120dp"
                android:layout_height="120dp"
                android:layout_margin="9dp"
                android:adjustViewBounds="true"
                android:background="@drawable/circlepf"
                android:padding="3dp"
                android:scaleType="centerInside"
                android:src="@drawable/ic_profile" />
</RelativeLayout>

这是我的问题图像样例:

1

但我希望这张图片以圆形视图展示:


你需要使用 CircularImageView 而不是 ImageView。 - Karan Mehta
1
这个回答解决了你的问题吗?通过XML实现圆形ImageView - Nikos Hidalgo
2个回答

24
您可以使用Material Components Library。版本1.2.0-alpha03 新增了 ShapeableImageView

  <com.google.android.material.imageview.ShapeableImageView
      ...
      android:scaleType="centerInside"
      android:adjustViewBounds="true"
      app:shapeAppearanceOverlay="@style/circleImageView"
      app:srcCompat="@drawable/ic_profile" />

随着:

  <style name="circleImageView" parent="">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">50%</item>
  </style>

输入图片描述


不,这不是我的问题,我的问题是当我通过onclicklistner从图库获取图像时,它显示为完整的形状而不是圆形的形状。 - Chudamani Meher
您可以在我下面的问题陈述图像中看到。 - Chudamani Meher
@ChudamaniMeher 抱歉,但对我来说不太清楚。答案中发布的代码允许将图像显示为圆形。 - Gabriele Mariotti

0

我最近在Github上发现了这个库。https://github.com/christophesmet/android_maskable_layout

任何包含在MaskableFrameLayout中的布局或ImageView都可以通过将所需形状提供给maskLayout的mask属性来裁剪成所需形状,如下所示:

<com.christophesmet.android.views.maskableframelayout.MaskableFrameLayout
    android:id="@+id/frm_mask_animated"
    android:layout_width="100dp"
    app:porterduffxfermode="DST_IN"
    app:mask="@drawable/drawable_circular"
    android:layout_height="100dp">

    <ImageView android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:scaleType="centerCrop"
               android:src="@drawable/unicorn"/>

</com.christophesmet.android.views.maskableframelayout.MaskableFrameLayout>

另外,您还可以使用Circleimageview库:https://github.com/hdodenhof/CircleImageView


不,这不是我的问题,我的问题是当我通过onclicklistner从图库获取图像时,它显示为完整的形状而不是圆形的形状。 - Chudamani Meher
您可以在我下面的问题陈述图像中看到。 - Chudamani Meher
是的,我明白如果你想让你的ImageView在圆形布局中被遮罩,你可以使用MaskableFrameLayout。在这种情况下它应该能够正常工作。 - Angeo Johny M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接