Android UI動(dòng)態(tài)設(shè)置帶有Stroke漸變色背景Drawable
摘要
每天一個(gè)UI小技巧,提高開發(fā)效率 UI開發(fā)中繁瑣的drawable xml開發(fā),不同的view背景樣式一致,卻因?yàn)椴糠衷O(shè)計(jì)區(qū)別,就要重新寫一套新的xml drawable,寫還是不寫?寫的越多冗余代碼越多,就因?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很簡單,三個(gè)參數(shù)。
漸變的顏色數(shù)組; 圓角半徑; Stroke的線條寬度
如何使用
- 如果達(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)
以上就是Android UI動(dòng)態(tài)設(shè)置帶有Stroke漸變色背景Drawable的詳細(xì)內(nèi)容,更多關(guān)于Android UI Stroke漸變色背景的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解Android .9.png “點(diǎn)九”圖片的使用
這篇文章主要為大家詳細(xì)介紹了Android .9.png “點(diǎn)九”圖片的使用方法,感興趣的小伙伴們可以參考一下2016-09-09Android實(shí)現(xiàn)評(píng)論欄隨Recyclerview滑動(dòng)左右移動(dòng)
這篇文章主要介紹了Android實(shí)現(xiàn)評(píng)論欄隨Recyclerview滑動(dòng)左右移動(dòng)效果,仿約會(huì)吧應(yīng)用詳情頁實(shí)現(xiàn),感興趣的小伙伴們可以參考一下2016-05-05Android自定義view實(shí)現(xiàn)圖片選色器
這篇文章主要為大家詳細(xì)介紹了Android自定義view實(shí)現(xiàn)圖片選色器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06Android下拉刷新PtrFrameLayout的使用實(shí)例代碼
本篇文章主要介紹了Android下拉刷新PtrFrameLayout的使用實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Kotlin協(xié)程之Flow觸發(fā)與消費(fèi)示例解析
Kotlin協(xié)程中,當(dāng)需要消費(fèi)流時(shí),會(huì)調(diào)用collect方法,觸發(fā)流的消費(fèi),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09在Android app中實(shí)現(xiàn)九(n)宮格圖片連續(xù)滑動(dòng)效果
這篇文章主要介紹了在Android app中實(shí)現(xiàn)九(n)宮格圖片連續(xù)滑動(dòng)效果的方法,作者舉了鳳凰新聞應(yīng)用的例子,同理功能圖標(biāo)也可以利用這樣的滑動(dòng)效果,需要的朋友可以參考下2016-02-02Android中Retrofit 2.0直接使用JSON進(jìn)行數(shù)據(jù)交互
本篇文章主要介紹了Android中Retrofit 2.0直接使用JSON進(jìn)行數(shù)據(jù)交互,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08Android基礎(chǔ)開發(fā)小案例之短信發(fā)送器
這篇文章主要為大家詳細(xì)介紹了Android基礎(chǔ)開發(fā)小案例之短信發(fā)送器的具體實(shí)現(xiàn)代碼,感興趣的小伙伴們可以參考一下2016-05-05