脚本宝典收集整理的这篇文章主要介绍了开源啦·开源啦 Android 炫酷好用 的 裁切布局 ClipLayout ClipMask,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
所有这些,都可以用一个ClipLayout布局搞定
更重要的是
它会根据透明通道,重新调度触摸事件,所以事件会符合物理现象的进行图层穿透
请看展示效果
它不止是裁切图片的利器,也是裁切布局的利器
例如:上图中心形布局中的scrollview已经被自动裁切,即便滑动,也不影响裁切效果
阴阳布局的旋转过程,也没有因为旋转而忘记点击事件的重新分配
当然不会啦,请看带边框圆形图片的布局代码
Include_circle_border.xml
<com.sens.widget.ClipLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="64dp"
android:layout_height="64dp">
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/oval" />
<com.sens.widget.ClipMask
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="2dp"
android:background="@drawable/oval" />
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="2dp"
android:src="@drawable/sens" />
</com.sens.widget.ClipLayout>
第一层的oval是白色的圆形shape
第二层的mask同样使用oval作为模版
第三层的image是正常的图像
通过上面的代码,想必你已经看出来了,ClipLayout整体分为三层结构:
ClipLayout就是裁切的舞台(它负责所有裁切任务的调度),ClipMask就是裁切的模版。当然了 ClipLayout也可以包含多个ClipMask,但是ClipMask必需是ClipLayout的直接子View,否则它们的效果和FrameLayout无异。
没有ClipMask的ClipLayout和FrameLayout的效果没有差异,因为它们均继承自FrameLayout,更复杂的模版和布局,写在它们的xml内部即可。
到这里想必你已经明白了:
ClipMask是裁切模版,只取透明通道,ClipMask默认对ClipMask之下的视图(即背景层)执行打洞操作,默认对ClipMask上层(即内容层)执行切割操作
当然了,默认行为是可以随时修改的
你可以通过修改ClipLayout 中的isReversal属性动态的使它的裁切效果反向。
即:如果 isReversal == true (默认false) 那么
ClipMask对ClipMask之下的视图(即背景层)执行切割操作,对ClipMask上层(即内容层)执行打洞操作
好消息是,ClipLayout 向下兼容至安卓2.3.7 向上兼容至安卓12.0 是的,它不存在兼容问题,放心用
它的代码不足200行。
200行你用不了吃亏,也用不了上当,走过路过,点赞收藏+关注。
如果你想了解更多的实现原理,可直奔gay站看代码,也可以给我留言。
下面是一个使用ClipLayout制作的综合样例,喜欢请扫码进入gay站吧。
项目地址:请前往gay站
体验APK:点击下载
jar包:点击下载
以上是脚本宝典为你收集整理的开源啦·开源啦 Android 炫酷好用 的 裁切布局 ClipLayout ClipMask全部内容,希望文章能够帮你解决开源啦·开源啦 Android 炫酷好用 的 裁切布局 ClipLayout ClipMask所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。