欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android UI動態(tài)設(shè)置帶有Stroke漸變色背景Drawable

 更新時間:2023年01月19日 11:22:37   作者:AiLo  
這篇文章主要為大家介紹了Android UI動態(tài)設(shè)置帶有Stroke漸變色背景Drawable,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

摘要

每天一個UI小技巧,提高開發(fā)效率 UI開發(fā)中繁瑣的drawable xml開發(fā),不同的view背景樣式一致,卻因為部分設(shè)計區(qū)別,就要重新寫一套新的xml drawable,寫還是不寫?寫的越多冗余代碼越多,就因為改了一點小小的高度?

代碼中設(shè)置Stroke漸變

  • 實際效果如下

代碼實現(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很簡單,三個參數(shù)。

漸變的顏色數(shù)組; 圓角半徑; Stroke的線條寬度

如何使用

  • 如果達到圖一的效果,即半徑恰好為高度的一半,只需要把radius設(shè)置為一個更大的值即可。給個1000就行了
view.background = StrokeGradientLRDrawable(intArrayOf(Color.RED, Color.BLUE), 1000f, 5f)
  • 普通的圓角就設(shè)置值就好了
view.background = StrokeGradientLRDrawable(intArrayOf(Color.RED, Color.BLUE), 50f, 5f)

以上就是Android UI動態(tài)設(shè)置帶有Stroke漸變色背景Drawable的詳細內(nèi)容,更多關(guān)于Android UI Stroke漸變色背景的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論