android 布局加圆角,Android 实现一个通用的圆角布局

这篇博客介绍了如何在Android中实现一个通用的圆角布局,包括对布局进行圆角剪裁的原理和方法。通过复写`onDraw`和`dispatchDraw`方法,利用画布的save和restore机制,以及`PorterDuffXfermode`来实现抗锯齿的圆角效果。同时,针对Android P版本的行为变更,提供了兼容性处理。博客还提供了自定义的`RoundRelativeLayout`源码供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6fddcaa9595413ce89d5121c91bf5f0a.png

前言

我们在平时的开发中,经常会遇到圆角需求,比如下图

b297851ea06041c5149c762d5684dcaa.png

一般的实现方法是上面的图片左上和右上设置圆角,下面的文字部分左下和右下设置圆角,而 Glide 默认是不支持指定位置设置圆角的,需要通过自定义 Transformation 实现,而 GIF 动图也是不支持圆角的。

有些同学说了,加个遮罩不就行了吗?

先不说会不会被视觉小姐姐喷:一个圆角都做不了,还要我给你做遮罩图!

我自己本身也是无法接受这种实现方式的…

3d0ac4989dc66e1bdf7cdf7d4dac5bd9.png

那么,实现一个通用的圆角布局,不就可以以不变应万变了吗?

正文

如何将 layout 剪裁为圆角?

我们知道 view 绘制时会调用 draw 方法,draw 方法中有大量逻辑,直接复写该方法是不现实的,看下 draw 方法中的一段注释

Draw traversal performs several drawing steps which must be executed

in the appropria

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值