Android ImageView 设置圆角及外边框样式

github地址:GitHub - WeiLianYang/RoundImageView: 🔥🔥🔥用于设置 ImageView 的 圆角、外边框颜色、外边框宽度

添加依赖

repositories {mavenCentral()
}
implementation 'io.github.weilianyang:RoundImageView:1.0.2'

效果预览:

设置圆角

 

设置外边框

一、控件样式

<declare-styleable name="RoundImageView"><!-- 圆角大小,如果只设置了此值,则默认会使用其作为所有圆角的值 --><attr name="riv_radius" format="dimension" /><!-- 顶部左侧圆角大小 --><attr name="riv_topLeft_radius" format="dimension" /><!-- 顶部右侧圆角大小 --><attr name="riv_topRight_radius" format="dimension" /><!-- 底部左侧圆角大小 --><attr name="riv_bottomLeft_radius" format="dimension" /><!-- 底部右侧圆角大小 --><attr name="riv_bottomRight_radius" format="dimension" /><!-- 作为圆形图片,和 riv_radius 一起使用。如果未设置 riv_radius,半径将取宽高最小值的一半 --><attr name="riv_roundAsCircle" format="boolean" /><!-- 外边框颜色 --><attr name="riv_borderColor" format="color" /><!-- 外边框宽度 --><attr name="riv_borderWidth" format="dimension" /></declare-styleable>

二、属性介绍

属性说明
riv_radius单位dp圆角大小,如果只设置了此值,则默认会使用其作为所有圆角的值
riv_topLeft_radius单位dp顶部左侧圆角大小
riv_topRight_radius单位dp顶部右侧圆角大小
riv_bottomLeft_radius单位dp底部左侧圆角大小
riv_bottomRight_radius单位dp底部右侧圆角大小
riv_roundAsCircletrue or false作为圆形图片,和 riv_radius 一起使用。如果未设置 riv_radius,半径将取宽高最小值的一半
riv_borderColor颜色值外边框颜色
riv_borderWidth单位dp外边框宽度

三、在 xml 中使用

1. 分别指定4个圆角的大小
<com.william.widget.RoundImageViewandroid:layout_width="150dp"android:layout_height="150dp"android:scaleType="centerCrop"app:riv_bottomLeft_radius="32dp"app:riv_bottomRight_radius="25dp"app:riv_topLeft_radius="14dp"app:riv_topRight_radius="20dp" />
2. 作为圆形图片使用
<com.william.widget.RoundImageViewandroid:layout_width="150dp"android:layout_height="150dp"android:scaleType="centerCrop"app:riv_roundAsCircle="true" />
3. 设置外边框宽度和颜色
<com.william.widget.RoundImageViewandroid:layout_width="150dp"android:layout_height="150dp"android:scaleType="centerCrop"app:riv_borderColor="#ff00ff"app:riv_borderWidth="5dp"app:riv_radius="1dp" />

四、在 代码 中使用

1. 指定圆角大小及边框样式
/*** @param radius 圆角大小,当 asCircle 为 true 时,值作为圆形图片的半径,如果为0,则将取宽高最小值的一半* @param borderWidth 外边框宽度* @param borderColor 外边框颜色* @param asCircle 作为圆形图片使用,默认 false*/
fun setRadiusAndBorder(radius: Float,borderWidth: Float = 0f,@ColorInt borderColor: Int = 0,asCircle: Boolean = false,
) {this.radius = radiusthis.borderWidth = borderWidththis.borderColor = borderColorthis.roundAsCircle = asCircleupdateBorderPaint()
}
2. 分别指定4个圆角的大小及边框样式
/*** @param topLeftRadius 顶部左侧圆角大小* @param topRightRadius 顶部右侧圆角大小* @param bottomLeftRadius 底部左侧圆角大小* @param bottomRightRadius 底部右侧圆角大小* @param borderWidth 外边框宽度* @param borderColor 外边框颜色*/
fun setRadiusAndBorder(topLeftRadius: Float = 0f,topRightRadius: Float = 0f,bottomLeftRadius: Float = 0f,bottomRightRadius: Float = 0f,borderWidth: Float = 0f,@ColorInt borderColor: Int = 0
) {this.topLeftRadius = topLeftRadiusthis.topRightRadius = topRightRadiusthis.bottomLeftRadius = bottomLeftRadiusthis.bottomRightRadius = bottomRightRadiusthis.borderWidth = borderWidththis.borderColor = borderColorupdateBorderPaint()
}

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

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

相关文章

C语言--------指针(1)

0.指针&指针变量 32位平台&#xff0c;指针变量是4个字节&#xff08;32bit/84)--------x86 64位平台&#xff0c;指针变量是8个字节&#xff08;64bit/88)--------x64 编号指针地址&#xff1b;我们平常讲的p是指针就是说p是一个指针变量&#xff1b; ************只要…

Django学习记录02

1.请求与响应 1.1get与post的区别 get 一般是从url输入地址&#xff0c;会调用get请求 post 一般是内部数据传输# get请求 def something(request):# req是一个对象&#xff0c;封装了用户发送过来的所有请求相关数据# 1.获取请求方式 http://localhost:8000/something# pri…

springboot基础案例(二)

文章目录 前言一.需求分析: 分析这个项目含有哪些功能模块二.库表设计(概要设计): 1.分析系统有哪些表 2.分析表与表关系 3.确定表中字段(显性字段 隐性字段(业务字段))2.1 创建一个库: ems-thymeleaf2.2 创建 2张表三.编码(环境搭建)1.创建一个springboot项目 项目名字: ems-t…

004集—二调数据库标注分子分母模式及统计净面积——arcgis

二调数据库中分子分母标注方法为&#xff1a; 表达式如下&#xff1a; "<und>"& [TBBH] &"</und>" &vbnewline& [DLBM] "<und>"&[DLBM]&"</und>" &vbnewline& [DLMC] &quo…

一文读懂:MybatisPlus从入门到进阶

快速入门 简介 在项目开发中&#xff0c;Mybatis已经为我们简化了代码编写。 但是我们仍需要编写很多单表CURD语句&#xff0c;MybatisPlus可以进一步简化Mybatis。 MybatisPlus官方文档&#xff1a;https://www.baomidou.com/&#xff0c;感谢苞米豆和黑马程序员。 Mybat…

【学网攻】 第(23)节 -- PPP协议

系列文章目录 目录 系列文章目录 文章目录 前言 一、PPP协议是什么&#xff1f; 二、实验 1.引入 实验目的 实验背景你是某公司的网络管理员&#xff0c;现在需要与另一个公司进行通信,需要你配置PPP协议保证双方发送的人是真正的而非黑客 技术原理 实验步骤新建Pack…

Midjourney提示词风格调试测评

在Midjourney中提示词及风格参数的变化无疑会对最终的作品产生影响&#xff0c;那影响具体有多大&#xff1f;今天我我们将通过一个示例进行探究。 示例提示词&#xff1a; 计算机代码海洋中的黄色折纸船&#xff08;图像下方&#xff09;风格参考:金色长发的女人&#xff0c…

单片机——ISP下载、ICP下载、IAP下载

文章目录 ISPICPIAP ISP 在线系统编程&#xff0c;使用引导程序加上外围UART/SPI接口烧录 其本质是将程序的hex文件烧录到板子里的过程 可以使用flymcu这个软件 System memory是STM32在出厂时&#xff0c;由ST在这个区域内部预置了一段BootLoader&#xff0c; 也就是我们常说…

【C++】C++的简要介绍

简单不先于复杂&#xff0c;而是在复杂之后。 文章目录 1. 什么是C2. C的发展史3. C的重要性3.1 语言的使用广泛度3.2 在工作领域3.3 在校招领域3.3.1 岗位需求3.3.2 笔试题 3.3.3 面试题 4. 如何学习C4.1 别人怎么学&#xff1f; 1. 什么是C C语言是结构化和模块化的语言&…

深度分析一款新型Linux勒索病毒

前言 DarkRadiation勒索病毒是一款全新的Linux平台下的勒索病毒&#xff0c;2021年5月29日首次在某平台上发布了此勒索病毒的相关的信息&#xff0c;6月中旬趋势科技针对这个新型的勒索病毒进行了相关的分析和报道。 DarkRadiation勒索病毒采用Bash脚本语言编写实现&#xff0…

最好的 4 个 Android 屏幕解锁锁软件免费下载

实际上&#xff0c;如今每个 Android 智能手机用户都将手机设置为图案锁定。此功能可以保护隐私&#xff0c;特别是当用户不在打电话时。通过绘制锁定屏幕图案&#xff0c;用户可以解锁手机&#xff0c;然后访问其主屏幕。如果用户被锁定在电话模式之外会发生什么&#xff1f;“…

基于SpringBoot3的快速迭代平台

SpringBoot3的快速开发平台 前言一、技术栈二、项目结构三、总结 前言 MateBoot是一个基于SpringBoot3的快速开发平台&#xff0c;采用前后端分离的模式&#xff0c;前端采用Element Plus组件&#xff0c;后端采用SpringBoot3、Sa-token、Mybatis-Plus、Redis、RabbitMQ、Fast…

华为第二批难题一:基于预训练AI模型的元件库生成

我的理解&#xff1a;华为的这个难道应该是想通过大模型技术&#xff0c;识别元件手册上的图文内容&#xff0c;与现有建库工具结合&#xff0c;有潜力按标准生成各种库模型。 正好&#xff0c;我们正在研究&#xff0c;利用知识图谱技术快速生成装配模型&#xff0c;其中也涉…

图像处理入门:OpenCV的基础用法解析

图像处理入门&#xff1a;OpenCV的基础用法解析 引言OpenCV的初步了解深入理解OpenCV&#xff1a;计算机视觉的开源解决方案什么是OpenCV&#xff1f;OpenCV的主要功能1. 图像处理2. 图像分析3. 结构分析和形状描述4. 动态分析5. 三维重建6. 机器学习7. 目标检测 OpenCV的应用场…

java_error_in_pycharm.hprof文件是什么?能删除吗?

java_error_in_pycharm.hprof文件是什么&#xff1f;能删除吗&#xff1f; &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;hprof格式文件介绍&#x1f333;&#x1f333;java_error_in_pycharm.hprof文件什么情况下能删除&#x1f333;&…

【机器学习】数据清洗之识别缺失点

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…

Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号

Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号 code review! 文章目录 Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号1.expect2.bash 1.expect 在Expect脚本中&#xff0c;你可以使用expect来监听程序输出&#xff0c;…

Github 2024-02-08 开源项目日报 Top9

根据Github Trendings的统计&#xff0c;今日(2024-02-08统计)共有9个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Ruby项目1HTML项目1Python项目1Scala项目1PLpgSQL项目1Rust项目1NASL项目1C项目1TypeScript项目1非开发语言项目…

谷歌seo搜索引擎优化有什么思路?

正常做seo哪有那么多思路&#xff0c;其实就那么几种方法&#xff0c;无非就关键词&#xff0c;站内优化&#xff0c;外链&#xff0c;可以说万变不离其宗&#xff0c;但如果交给我们&#xff0c;你就可以实现其他的思路&#xff0c;或者说玩法 收录可以说是一个网站的基础&…

【Linux】vim的基本操作与配置(下)

Hello everybody!今天我们继续讲解vim的操作与配置&#xff0c;希望大家在看过这篇文章与上篇文章后都能够轻松上手vim! 1.补充 在上一篇文章中我们说过了&#xff0c;在底行模式下set nu可以显示行号。今天补充一条&#xff1a;set nonu可以取消行号。这两条命令大家看看就可…