Android studio圆角矩形的布局如何设计?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android studio圆角矩形的布局如何设计?相关的知识,希望对你有一定的参考价值。

参考技术A 你可以使用shape定义一个圆角矩形,并将其作为布局的背景即可。
圆角矩形的shape代码如下:
//定义四个圆角 文件名shape_round_corner
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ff00" />
<corners android:topLeftRadius="12dp"
android:topRightRadius="12dp"
android:bottomRightRadius="12dp"
android:bottomLeftRadius="12dp"/>
<stroke android:width="1dp" android:color="#ff0" />
</shape>
设置背景代码如下:
<LinearLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:alpha="0.8"
android:background="@drawable/shape_round_corner">
</LinearLayout>

开源啦·开源啦 Android 炫酷好用 的 裁切布局 ClipLayout ClipMask

开源啦·开源啦 Android 超炫酷 超好用 的 裁切布局 一个布局搞定所有裁切

你遇到过怎样的图片裁切需求?

1. 圆角矩形

2. 带边框的圆角矩形

3. 圆形

4. 带边框的圆形

你又遇到过怎样奇怪的布局需求?

1. 异形布局

2. 阴阳布局

3. 还是心形布局

所有这些,都可以用一个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无异。

没有ClipMaskClipLayout和FrameLayout的效果没有差异,因为它们均继承自FrameLayout,更复杂的模版和布局,写在它们的xml内部即可。

到这里想必你已经明白了:

ClipMask是裁切模版,只取透明通道,ClipMask默认对ClipMask之下的视图(即背景层)执行打洞操作,默认对ClipMask上层(即内容层)执行切割操作

当然了,默认行为是可以随时修改的

你可以通过修改ClipLayout 中的isReversal属性动态的使它的裁切效果反向。

即:如果 isReversal == true (默认false) 那么

ClipMaskClipMask之下的视图(即背景层)执行切割操作,对ClipMask上层(即内容层)执行打洞操作

讲到这里,请问:这么好的东西,会不会有兼容问题呢?

好消息是,ClipLayout 向下兼容至安卓2.3.7 向上兼容至安卓12.0 是的,它不存在兼容问题,放心用

那这么好的东西,会不会增加项目的重量呢?

它的代码不足200行。

200行你用不了吃亏,也用不了上当,走过路过,点赞收藏+关注

如果你想了解更多的实现原理,可直奔gay站看代码,也可以给我留言。

下面是一个使用ClipLayout制作的综合样例,喜欢请扫码进入gay站吧。

项目地址:请前往gay站

体验APK:点击下载

jar包:点击下载

以上是关于Android studio圆角矩形的布局如何设计?的主要内容,如果未能解决你的问题,请参考以下文章

选择最佳 Android 布局

Android:如下关于绘制圆角矩形边框问题,怎么解决?

Android学习笔记圆角矩形ImageView自定义控件的实现与使用

Android中实现圆角矩形及半透明效果。

Android 实现圆角方式

Android开发中的圆角图片+圆形图片,看这一篇就够了!