当前位置: 七九推 > 移动技术>移动开发>Android > Android UI动态设置带有Stroke渐变色背景Drawable

Android UI动态设置带有Stroke渐变色背景Drawable

2023年01月21日 Android 我要评论
摘要每天一个ui小技巧,提高开发效率 ui开发中繁琐的drawable xml开发,不同的view背景样式一致,却因为部分设计区别,就要重新写一套新的xml drawable,写还是不写?写的越多冗余

摘要

每天一个ui小技巧,提高开发效率 ui开发中繁琐的drawable xml开发,不同的view背景样式一致,却因为部分设计区别,就要重新写一套新的xml drawable,写还是不写?写的越多冗余代码越多,就因为改了一点小小的高度?

代码中设置stroke渐变

  • 实际效果如下

代码实现

class strokegradientlrdrawable(colors: intarray,
                               radius: float,
                               strokewidth: float) : shapedrawable() {
    init {
        // 外部矩形弧度
        val outerr = floatarrayof(radius, radius, radius, radius, radius, radius, radius, radius)
        // 内部矩形与外部矩形的距离
        val inset = rectf(strokewidth, strokewidth, strokewidth, strokewidth)
        // 内部矩形弧度
        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很简单,三个参数。

渐变的颜色数组; 圆角半径; stroke的线条宽度

如何使用

  • 如果达到图一的效果,即半径恰好为高度的一半,只需要把radius设置为一个更大的值即可。给个1000就行了
view.background = strokegradientlrdrawable(intarrayof(color.red, color.blue), 1000f, 5f)
  • 普通的圆角就设置值就好了
view.background = strokegradientlrdrawable(intarrayof(color.red, color.blue), 50f, 5f)

以上就是android ui动态设置带有stroke渐变色背景drawable的详细内容,更多关于android ui stroke渐变色背景的资料请关注七九推其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2023  七九推 保留所有权利. 粤ICP备17035492号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com