view_round_image
https://blog.csdn.net/xiaohanluo/article/details/52945791
https://guides.codepath.com/android/Working-with-the-ImageView
https://guides.codepath.com/android/Working-with-the-ImageView
全圆角
OutLine
1 |
|
1 |
|
https://blog.csdn.net/weixin_43499030/article/details/92799689
CardView
部分圆角
ShapeableImageView
这种方式官方的无风险
1 |
|
需要通过设置 app:shapeAppearance 才有用
1 |
|
左边是圆角,右边是“切角”
https://juejin.cn/post/6913083202387050509
BitmapShader
setShader
setShader,顾名思义,设置着色器,我们知道在Canvas中,我们调用drawXXX可以绘制出各种各样的图形,如圆形、矩形、扇形等等,而Shader是给Paint设置的属性,决定paint绘制图形的时候如何给图形上色,比如绘制一个矩形,我想要矩形中铺满一张图片,那这些平铺的图片就相当于是给这个矩形上色了。好了,概念先说到这,Shader是一个基类,setShader中设置的都是Shader的子类
https://blog.csdn.net/huxin1875/article/details/89133025
1 |
|
1 |
|
先来看看BitmapShader属性的作用
bitmap 指的是要作为纹理的图片,
tileX 指的是在x方向纹理的绘制模式
tileY 指的是Y方向上的绘制模式。
1 |
|
*CLAMP 拉伸*:设置x , 横向的最后一个横行像素,不断的重复,设置y,那么纵项的那一列像素,不断的重复;
*REPEAT 重复*:就是横向、纵向不断重复这个bitmap
*MIRROR 镜像*:横向不断翻转重复,纵向不断翻转重复;
CLAMP
1 |
|

REPEAT
1 |
|

MIRROR
1 |
|

可以看到, x y 镜像映射
DECAL
最后这种就是正常显示的了

https://juejin.cn/post/6844903480809766920
全部圆角
有了scale,就可以设置给我们的matrix;
然后使用mBitmapShader.setLocalMatrix(mMatrix);
最后将bitmapShader设置给paint。
关于drawable转bitmap的代码:
1 |
|
View宽度 / 图片宽度 , View的高度/图片高度
他们取最大值,进行缩放,图片短的那一部分就会填满View,长的那一部分会被截掉,显示不全
计算scale
比如:view的宽高为50 * 100;图片的宽高为5*100 ; 最终我们应该按照宽的比例放大,而不是按照高的比例缩小;因为我们需要让缩放后的图片,自定大于我们的view宽高,并保证原图比例。
那么高度就被放大10倍到1000,值能显示到1/10
1 |
|
1 |
|
可以看到,高度部分截取了
https://blog.csdn.net/lmj623565791/article/details/41967509
https://developer.android.com/reference/android/graphics/PorterDuff.Mode
https://segmentfault.com/a/1190000012253911
部分圆角

第二张图就可以看到,这样做的原理

1 |
|
一个脚
前两步绘制的效果

1 |
|
Xfermode绘制圆角
概览
先绘制 绘制黄色的圆
然后绘制蓝色正方形
模式 说明
PorterDuff.Mode.CLEAR 所有绘制不会绘制到画布上
PorterDuff.Mode.SRC 显示上层绘制图形
PorterDuff.Mode.DST 显示下层绘制图形
PorterDuff.Mode.SRC_OVER 图形叠加,上层盖住下层
PorterDuff.Mode.DST_OVER 图形叠加,下层盖住上层
PorterDuff.Mode.SRC_IN 显示上层交集部分
PorterDuff.Mode.DST_IN 显示下层交集部分
PorterDuff.Mode.SRC_OUT 显示上层非交集部分
PorterDuff.Mode.DST_OUT 显示下层非交集部分
PorterDuff.Mode.SRC_ATOP 显示下层非交集部分和上层交集部分
PorterDuff.Mode.DST_ATOP 显示下层交集部分与上层非交集部分
PorterDuff.Mode.XOR 去除交集部分
PorterDuff.Mode.DARKEN 交集部分颜色加深
PorterDuff.Mode.LIGHTEN 交集部分颜色变亮
PorterDuff.Mode.MULTIPLY 显示交集部分,颜色混合叠加
PorterDuff.Mode.SCREEN 取两图层全部区域,交集部分变为透明色
https://blog.csdn.net/xiaohanluo/article/details/52945791
https://developer.android.google.cn/reference/android/graphics/PorterDuff.Mode
1 |
|
圆角图片
1 |
|