疫情概要
截至2月11日24时,据31个省(自治区、直辖市)和新疆生产建设兵团报告,现有确诊病例38800例(其中重症病例8204例),累计治愈出院病例4740例,累计死亡病例1113例,累计报告确诊病例44653例,现有疑似病例16067例。累计追踪到密切接触者451462人,尚在医学观察的密切接触者185037人。
前言
最近项目中需要使用到圆角来展示内容。原先用得多的是用Canvas.clipXXX()或者是使用Paint.setXfermode(),现在用一个简单的方式就可实现,就是SDK21开始引入的ViewOutlineProvider类,用法也很简单。
ViewOutlineProvider
Interface by which a View builds its
Outline
, used for shadow casting and clipping.
从上面官网的说明可以了解到ViewOutlineProvider有两个作用:裁剪、阴影。
用法
利用裁剪实现圆角方法:
1 | ViewOutlineProvider outlineProvider = new ViewOutlineProvider() { |
可以看到只要3步即可实现:
- 创建ViewOutlineProvider,
- 实现
getOutline()
方法,使用Outline.setRoundRect()设置圆角矩阵,即裁剪后留下的有效区域 - 将ViewOutlineProvider设置给需要的View,并调用
View.setClipToOutline(true)
开启裁剪
当然也可以调用View.setClipToOutline(false)
关闭裁剪。
还有如下方法提供不同效果:
Outline.setOval()
Outline.setRect()
等……..
Outline类内部主要是有如下几个成员变量记录
1 | /** @hide */ |
利弊
利:使用方便
弊:必须要SDK>=21才能使用
SDK<21解决方式
SDK<21的这里提供一种,可直接使用
1 |
|