偶然间看到了这位老哥的 https://juejin.cn/post/6869376452040196109#comment 文章,发现了ShapeableImageView–一个多形状的ImageView ,虽然似乎发布了很久了,现在学习不晚。
效果图
布局文件
<com.google.android.material.imageview.ShapeableImageViewandroid:layout_width="100dp"android:layout_height="100dp"android:scaleType="centerCrop"android:src="@mipmap/header_icon"app:shapeAppearanceOverlay="@style/roundStyle" />
样式
<!-- 圆形样式--><style name="circleStyle"><item name="cornerFamily">rounded</item><item name="cornerSize">50%</item></style><!--圆角样式--><style name="roundStyle"><item name="cornerFamily">rounded</item><item name="cornerSize">8dp</item></style><!--切角样式,多边形那样的--><style name="cutStyle"><item name="cornerFamily">cut</item><item name="cornerSize">12dp</item></style><!--菱形样式,在切角的样式基础上,将cornersize加大到50%--><style name="diamondStyle"><item name="cornerFamily">cut</item><item name="cornerSize">50%</item></style><!--在圆角样式的基础上,可以单独为四角之一、之二、之三、之四... 设置圆弧度数--><!--右上角扇形--><style name="topRightRoundStyle"><item name="cornerFamilyTopRight">rounded</item><item name="cornerSizeTopRight">100%</item></style><!--弧形拱门--><style name="topLeftRightRoundStyle"><item name="cornerFamilyTopLeft">rounded</item><item name="cornerSizeTopLeft">50dp</item><item name="cornerFamilyTopRight">rounded</item><item name="cornerSizeTopRight">50dp</item></style><!--小船形状--><style name="groupRoundStyle"><item name="cornerFamilyTopRight">rounded</item><item name="cornerSizeTopRight">50dp</item><item name="cornerFamilyBottomLeft">rounded</item><item name="cornerSizeBottomLeft">50dp</item></style><!--tips形状--><style name="tipsGroupRoundStyle"><item name="cornerFamilyTopLeft">rounded</item><item name="cornerSizeTopLeft">10dp</item><item name="cornerFamilyBottomLeft">rounded</item><item name="cornerSizeBottomLeft">10dp</item><item name="cornerFamilyTopRight">cut</item><item name="cornerSizeTopRight">50%</item><item name="cornerFamilyBottomRight">cut</item><item name="cornerSizeBottomRight">50%</item></style><!--酒杯形状--><style name="cupsRoundStyle"><item name="cornerFamilyBottomRight">rounded</item><item name="cornerSizeBottomRight">100%</item><item name="cornerFamilyBottomLeft">rounded</item><item name="cornerSizeBottomLeft">100%</item></style>
代码详情参考:https://github.com/ShirleyLuoppx/DailyStudy/blob/master/app/src/main/java/com/ppx/dailystudy/material/ShapeImageviewDemoActivity.java