返回顶部
首页 > 资讯 > 移动开发 >AndroidUI动态设置带有Stroke渐变色背景Drawable
  • 314
分享到

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

AndroidUIStroke渐变色背景AndroidUI动态设置 2023-01-28 06:01:29 314人浏览 薄情痞子
摘要

目录摘要代码中设置Stroke渐变代码实现如何使用摘要 每天一个UI小技巧,提高开发效率 UI开发中繁琐的drawable xml开发,不同的view背景样式一致,却因为部分设计区

摘要

每天一个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渐变色背景的资料请关注编程网其它相关文章!

--结束END--

本文标题: AndroidUI动态设置带有Stroke渐变色背景Drawable

本文链接: https://lsjlt.com/news/178225.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作