Android自定义标签LabelView详细思路及过程

自定义LabelTextView

项目需要,实现一个圆角矩形加上标签的自定义View。大概的效果是这样的

难点

  • 标签页的范围需要贴合圆角矩形的范围
  • 标签内的字体需要和和线平行
  • 以及各种坑

遇到问题和解决方式

标签文字

问题

按照需求,标签的文字需要斜着展示,而默认的方式只有水平展示

解决方式

标签文字的显示之前走了不少弯路,开始想到使用画布的旋转以及计算角度来实现文字的斜着显示.。
但是效果都不好。
后来发现一个更简单的方法,通过下面方法轻松实现

canvas.drawTextOnPath(@NonNull String text, @NonNull Path path, float hOffset,
            float vOffset, @NonNull Paint paint)

圆角矩形和三角形混合绘制

问题

绘制不规则图形,像是一个圆角矩形和一个三角形的超集在减去三角形不相交的那部分

解决方式

而圆角矩形的绘制,我采取了混合模式。

先通过path绘制一个三角形,再通过混合模式将三角形和圆角矩形重合区域之外给遮盖。
我称之为混合模式其实就是使用了方法。

path.op(Path path, Path.Op op)

借用一张图展示混合模式

以及小结

         android.graphics.PorterDuff.Mode.SRC:只绘制源图像
         android.graphics.PorterDuff.Mode.DST:只绘制目标图像
         android.graphic
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值