網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
Android?UI動(dòng)態(tài)設(shè)置帶有Stroke漸變色背景Drawable_Android
作者:AiLo ? 更新時(shí)間: 2023-03-18 編程語(yǔ)言摘要
每天一個(gè)UI小技巧,提高開(kāi)發(fā)效率 UI開(kāi)發(fā)中繁瑣的drawable xml開(kāi)發(fā),不同的view背景樣式一致,卻因?yàn)椴糠衷O(shè)計(jì)區(qū)別,就要重新寫(xiě)一套新的xml drawable,寫(xiě)還是不寫(xiě)?寫(xiě)的越多冗余代碼越多,就因?yàn)楦牧艘稽c(diǎn)小小的高度?
代碼中設(shè)置Stroke漸變
- 實(shí)際效果如下
代碼實(shí)現(xiàn)
class StrokeGradientLRDrawable(colors: IntArray,
radius: Float,
strokeWidth: Float) : ShapeDrawable() {
init {
// 外部矩形弧度
val outerR = floatArrayOf(radius, radius, radius, radius, radius, radius, radius, radius)
// 內(nèi)部矩形與外部矩形的距離
val inset = RectF(strokeWidth, strokeWidth, strokeWidth, strokeWidth)
// 內(nèi)部矩形弧度
val innerRadius = radius - strokeWidth
val innerRadii = floatArrayOf(innerRadius, innerRadius, innerRadius, innerRadius, innerRadius, innerRadius, innerRadius, innerRadius)
val rr = RoundRectShape(outerR, inset, innerRadii)
shape = rr
shaderFactory = object : ShaderFactory() {
override fun resize(width: Int, height: Int): Shader {
return LinearGradient(0f, 0f, width.toFloat(),
0f, colors, null, Shader.TileMode.CLAMP)
}
}
}
}
Drawable很簡(jiǎn)單,三個(gè)參數(shù)。
漸變的顏色數(shù)組; 圓角半徑; Stroke的線(xiàn)條寬度
如何使用
- 如果達(dá)到圖一的效果,即半徑恰好為高度的一半,只需要把radius設(shè)置為一個(gè)更大的值即可。給個(gè)1000就行了
view.background = StrokeGradientLRDrawable(intArrayOf(Color.RED, Color.BLUE), 1000f, 5f)
- 普通的圓角就設(shè)置值就好了
view.background = StrokeGradientLRDrawable(intArrayOf(Color.RED, Color.BLUE), 50f, 5f)
原文鏈接:https://juejin.cn/post/7078955592382939149
相關(guān)推薦
- 2022-05-28 pycharm安裝深度學(xué)習(xí)pytorch的d2l包失敗問(wèn)題解決_python
- 2022-07-04 C#操作配置文件app.config、web.config增刪改_C#教程
- 2023-11-16 Linux查看某目錄下的文件個(gè)數(shù)
- 2023-11-20 如何設(shè)置樹(shù)莓派4B的頻率?
- 2022-08-21 HTTP協(xié)議詳細(xì)介紹_其它綜合
- 2023-11-13 linux平臺(tái)下ZeroMQ zmq(C++)編譯安裝以及調(diào)用
- 2022-08-22 Python利用watchdog模塊監(jiān)控文件變化_python
- 2022-05-19 python?字典常用方法超詳細(xì)梳理總結(jié)_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支