Android RCLayout 圆角布局,支持边框,渐变色,渐变色方向等

news2024/11/17 13:57:38

RCLayout 圆角布局,支持边框,渐变色,渐变色方向等

支持布局
RcRelativeLayout
RcLinearLayout
RcFrameLayout
RcConstraintLayout
RcAbsoluteLayout
RcTextView
在这里插入图片描述
在这里插入图片描述

引入

implementation 'com.github.IHoveYou:RCLayout:1.0.1' 

项目地址

链接: github

布局属性

    <!-- 背景色/渐变中间色-->
    <attr name="rc_backgroundColor" format="color" />
    <!-- 统一圆角-->
    <attr name="rc_cornerRadius" format="dimension" />
    <!-- 左上圆角-->
    <attr name="rc_leftTopRadius" format="dimension" />
    <!-- 左下圆角-->
    <attr name="rc_leftBotRadius" format="dimension" />
    <!-- 右上圆角-->
    <attr name="rc_rightTopRadius" format="dimension" />
    <!-- 右下圆角-->
    <attr name="rc_rightBotRadius" format="dimension" />
    <!-- 边框粗细-->
    <attr name="rc_stroke" format="dimension" />
    <!-- 边框颜色-->
    <attr name="rc_strokeColor" format="color" />
    <!--渐变色起始色值 开始和结束需要同时设置 -->
    <attr name="rc_startColor" format="color" />
    <!--渐变色结束色值色值 开始和结束需要同时设置 -->
    <attr name="rc_endColor" format="color" />
    <!--渐变色方向 -->
    <attr name="rc_orientation">
        <enum name="top_bottom" value="0"/>
        <enum name="TR_BL" value="1"/>
        <enum name="RIGHT_LEFT" value="2"/>
        <enum name="BR_TL" value="3"/>
        <enum name="BOTTOM_TOP" value="4"/>
        <enum name="BL_TR" value="5"/>
        <enum name="LEFT_RIGHT" value="6"/>
        <enum name="TL_BR" value="7"/>
    </attr>

示例

<com.louxiangyu.widget.rclayout.RcConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:gravity="center"
        app:rc_startColor="#236B8E"
        app:rc_backgroundColor="@color/white"
        app:rc_cornerRadius="100dp"
        app:rc_stroke="10dp"
        app:rc_strokeColor="@color/black"
        app:rc_orientation="LEFT_RIGHT"
        app:rc_endColor="#FF1CAE"
        tools:context=".MainActivity">

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

</com.louxiangyu.widget.rclayout.RcConstraintLayout>

动态修改

主要类 RcBuild

    val build=RcConstraintLayout.build //获取控制类
    build.cornerRadius = 20 //修改单条或多条对应属性
    RcConstraintLayout.buile = build //设置属性

RcBuild api

var  backgroundColor:Int = 0
var  cornerRadius:Float = 0f
var  leftTopRadius:Float = 0f
var  leftBotRadius:Float = 0f
var  rightTopRadius:Float = 0f
var  rightBotRadius:Float = 0f
var  stroke:Int = 0
var  strokeColor:Int = 0
var  startColor:Int = 0
var  endColor:Int = 0
var  orientation: GradientDrawable.Orientation = GradientDrawable.Orientation.LEFT_RIGHT

RcTextView

布局参数 暗色参数不传时 默认与高亮一致

   <declare-styleable name="RcTextView">
    <!--        高亮背景色/渐变色中间色值-->
    <attr name="rc_backgroundColor"  />
    <!--        暗色背景色-->
    <attr name="rc_pressBackgroundColor" format="color" />
    <!--        高亮边框色值 -->
    <attr name="rc_strokeColor"  />
    <!--        暗色框色值-->
    <attr name="rc_pressStrokeColor" format="color" />
    <!--        渐变色起始色值 开始和结束需要同时设置 中间值可设置可不设置-->
    <attr name="rc_startColor"  />
    <!--        渐变色结束色值色值 开始和结束需要同时设置 中间值可设置可不设置-->
    <attr name="rc_endColor"  />
    <!--        高亮边框粗细-->
    <attr name="rc_stroke"  />
    <!--        暗色边框粗细-->
    <attr name="rc_pressStroke" format="dimension" />
    <!--        高亮按钮圆角-->
    <attr name="rc_cornerRadius" />
    <!--        暗色按钮圆角-->
    <attr name="rc_pressCornerRadius" format="dimension" />
    <!--        使用自定义资源文件-->
    <attr name="background" />
    <!--        高亮按钮左上圆角-->
    <attr name="rc_leftTopRadius"  />
    <!--        高亮按钮左下圆角-->
    <attr name="rc_leftBotRadius"  />
    <!--        高亮按钮右上圆角-->
    <attr name="rc_rightTopRadius"  />
    <!--        高亮按钮右下圆角-->
    <attr name="rc_rightBotRadius"  />

    <!--        暗色按钮左上圆角-->
    <attr name="rc_pressLeftTopRadius" format="dimension" />
    <!--        暗色按钮左下圆角-->
    <attr name="rc_pressLeftBotRadius" format="dimension" />
    <!--        暗色按钮右上圆角-->
    <attr name="rc_pressRightTopRadius" format="dimension" />
    <!--        暗色按钮右下圆角-->
    <attr name="rc_pressRightBotRadius" format="dimension" />

</declare-styleable>

动态修改属性 主要通过Build

 //获取构造类
 val build = RcTextView.build
 //修改需要的参数
 build.backgroundColors = intArrayOf(Color.WHITE,Color.WHITE,Color.BLUE,Color.RED)
 build.stroke = 10  //这边需要将dp转化为px
 //重新设置参数
 RcTextView.build = build
 class Build(context: Context?, attrs: AttributeSet?) {
    //高亮背景色/渐变色中间色值  修改不生效 动态设置直接修改 backgroundColors
    var backgroundColor: Int = Color.BLUE

    //暗背景色
    var pressBackgroundColor: Int = Color.GRAY

    //高亮边框粗细
    var stroke: Int = 0

    //高亮边框颜色
    var strokeColor: Int = Color.WHITE

    //高亮圆角
    var cornerRadius: Float = 0f

    //暗色框粗细
    var pressStroke: Int = 0

    //暗色框色值
    var pressStrokeColor: Int = Color.WHITE

    //暗色框圆角
    var pressCornerRadius: Float = 0f

    //开始色值 修改不生效 动态设置直接修改 backgroundColors
    var startColor: Int = 0

    //结束色值 修改不生效 动态设置直接修改 backgroundColors
    var endColor: Int = 0

    //渐变色集合 高亮颜色需要改变修改这个集合 单色传size=1的集合,渐变色可以传多个
    var backgroundColors = intArrayOf()

    //自定义背景资源
    var background: Int = 0
    //高亮圆角
    var leftTopRadius:Float = 0f
    var leftBotRadius:Float = 0f
    var rightTopRadius:Float = 0f
    var rightBotRadius:Float = 0f
    
    //暗色圆角 不设置则和高亮一致
    var pressLeftTopRadius:Float = 0f
    var pressLeftBotRadius:Float = 0f
    var pressRightTopRadius:Float = 0f
    var pressRightBotRadius:Float = 0f
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/186767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java-基础-1.异常

一&#xff1a;异常架构 Error 类层次描述了 Java 运行时系统内部错误和资源耗尽错 误。这类错误是我们无法控制的&#xff0c;同时也是非常罕见的错误。所以在编程中&#xff0c;不去处理这类错误。Error 表明系统 JVM 已经处于不可恢复的崩溃状态中。我们不需要管他。 如:写代…

电商前台项目(五):完成加入购物车功能和购物车页面

Vue2项目前台开发&#xff1a;第五章一、加入购物车1.路由跳转前先发请求把商品数据给服务器&#xff08;1&#xff09;观察接口文档&#xff08;2&#xff09;写接口&#xff08;3&#xff09;dispatch调用接口传数据&#xff08;4&#xff09;判断服务器是否已经收到商品数据…

Spring-相关概念入门

Spring-相关概念&入门 2&#xff0c;Spring相关概念 2.1 初识Spring 在这一节&#xff0c;主要通过以下两个点来了解下Spring: 2.1.1 Spring家族 官网&#xff1a;https://spring.io&#xff0c;从官网我们可以大概了解到&#xff1a; Spring能做什么:用以开发web、微服…

六、附近商户,连续签到,UV统计

文章目录附近商户GEO的基本用法导入店铺数据到GEO实现附近商户功能签到BitMap的基本用法实现签到功能实现连续签到统计功能补充&#xff1a;Java中>>和>>>的区别UV统计HyperLogLog的基本用法测试百万数据的统计官方命令文档&#xff1a;https://redis.io/comman…

OpenGLES(一)——介绍

一、OpenGL介绍 OpenGL&#xff08;全写Open Graphics Library&#xff09;是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像&#xff08;二维的亦可&#xff09;&#xff0c;是一个功能强大&#xff0c;调用方便的底层图形库。     O…

六、创建Gitee仓库和提交代码

1、创建仓库 1.1、创建远程仓库 (1)登录Gitee.com&#xff0c;点击右上角 号&#xff0c;再点击新建仓库。 (2)填写仓库名称&#xff0c;设置公开(一般指开源项目)或者私有&#xff0c;其他默认(也可以根据自己需要选择) (3)这里要勾选设置模板&#xff0c;Readme文件。(如果…

Java I/O 流详解(Basic I/O)

目录 1、Java Basic I/O 中的字节流&#xff1a;Byte Streams 2、Java Basic I/O 中的字符流&#xff1a;Character Streams 3、Java Basic I/O 中的缓冲流&#xff1a;Buffered Streams 4、Java Basic I/O 中的打印流&#xff1a;PrintStream &#xff08;数据扫描和格式化…

网易二面:CPU狂飙900%,该怎么处理?

说在前面 社群一位小伙伴面试了 网易&#xff0c;遇到了一个 性能类的面试题&#xff1a; CPU飙升900%&#xff0c;该怎么处理&#xff1f; 可惜的是&#xff0c;以上的问题&#xff0c;这个小伙没有回答理想。 最终&#xff0c;导致他网易之路&#xff0c;终止在二面&…

【蓝桥杯】Python字符串处理和应用

前言&#xff1a; 本文侧重于通过实战训练来提高字符串的处理能力&#xff0c;可以先行学习一下我之前的文章&#xff1a;蓝桥杯Python快速入门&#xff08;4&#xff09; &#xff0c;学习完基础知识再来刷题才会事半功倍&#xff01; 字符串处理 # 字符串切片 str1"1…

优秀码农选择对象详细指南,看完记得要实战噢

2023年了&#xff0c;你是否已到了法定年纪&#xff0c;那么这一篇优秀码农选择对象的详细指南&#xff0c;你一定用得到&#xff0c;看完记得感谢狗哥哦&#xff01; 目录 一、对于婚姻先来思考这么几条 1. 太快决定结婚&#xff1f; 2. 一方或双方急于结婚&#xff1f; 3.…

【go语言入门教程】——1. go语言介绍及安装

目 录1. go 语言简介2. go 语言安装2.1 下载安装包2.2 安装 go2.3 验证安装结果3. 使用 VS Code 运行 go 程序1. go 语言简介 go的产生 go 是一个开源的编程语言&#xff0c;它能让构造简单、可靠且高效的软件变得容易。 go 是从 2007 年末由 Robert Griesemer, Rob Pike, Ken…

Linux系统常见问题总结(持续更新)

目录一&#xff0c;vim安装与设置1&#xff0c;安装2&#xff0c;配置二&#xff0c;Found a swap file by the name三&#xff0c;docker启动失败&#xff1a;Job for docker.service failed because the control process exited with error四&#xff0c;docker-compose安装r…

JavaScript基础知识点整理(一)——运算符比较、闭包、深浅拷贝、原型、

内容主要涉及JavaScript&#xff1a;运算符比较、闭包、深浅拷贝、原型。 JavaScript闭包、原型、深浅拷贝1、 和 的差异2、JavaScript闭包3、JavaScript深浅拷贝3.1、浅拷贝3.2、深拷贝4、JavaScript原型1、 和 的差异 对于而言&#xff0c;若对比双方的类型不一样的话&…

MicroBlaze系列教程(2):AXI_INTC的使用

文章目录 @[TOC]AXI_INTC简介常用函数使用示例参考资料工程下载本文是Xilinx MicroBlaze系列教程的第1篇文章。 AXI_INTC简介 AXI_INTC中断控制器用于将多路中断信号按照优先级输出一路给处理器,支持AXI4-Lite总线,最多支持32个中断输入,中断输入可配置为边沿触发或电平触发…

【vuex】一.vue.js的基本指令;二.vue.js全家桶开发;三.vuex

目录 一.vue.js的基本指令 1.Vue的作用&#xff1a;快速的构建前端页面&#xff08;封装了html、css、js&#xff09;&#xff0c;以工程化的方式进行前端的开发 2.Vue的核心&#xff1a; &#xff08;1&#xff09;组件化&#xff1a; &#xff08;2&#xff09;数据的双…

shell执行脚本的方法及环境变量

执行脚本的方法 &#xff08;1&#xff09;bash ./filename.sh&#xff08;产生子进程&#xff0c;再运行&#xff0c;使用当前指定的bash shell去运行&#xff09; &#xff08;2&#xff09;./filename.sh&#xff08;产生子进程&#xff0c;再运行&#xff0c;使用脚本里面指…

vue3 手撕日历控件

vue制作日历控件 效果如下&#xff1a; <template><div class"cal_con" style"margin-left:200px"><div class"cal_header"><!-- 顶部左侧 --><div class"cal_header_left"><div class"cal_he…

STL分析(十 hash、function type_traits、cout、move )

hash function 假定存在一个Customer类 class Customer{ public:string fname, lname;int no; };其哈希函数存在三种方式 //方式一&#xff1a;创建可调用类型 class CustomerHash { public:std::size_t operator()(const Customer& c) const{return ......} };unordere…

Android 签名基础知识

目录Android 为什么要签名keystore的生成&#xff1a;keystore信息的查看参数说明&#xff1a;Android 怎么签名使用 jarsigner 签名如何查找 jdk 位置签名时遇到的问题查看 apk 是否签名查看 Apk 的MD5值以及MD5不显示时的解决办法缺少 xx.RSA 文件的原因V1 vs V2Android 为什…

Coolify系列-解决局域网主机突然连不了虚拟机

开始之前&#xff0c;我们需要确保配置一切正常&#xff0c;原始配置参考下文 Coolify系列-手把手教学解决局域网局域网中的其他主机访问虚拟机以及docker服务 如果是之前已经配置好的&#xff0c;突然无法访问了&#xff0c;采取以下方式进行排查操作 在虚拟机执行 ifconf…