Android UI动态设置带有Stroke渐变色背景Drawable
更新时间:2023年01月19日 11:22:37 作者:AiLo
这篇文章主要为大家介绍了Android UI动态设置带有Stroke渐变色背景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渐变色背景的资料请关注脚本之家其它相关文章!
相关文章
Android实现评论栏随Recyclerview滑动左右移动
这篇文章主要介绍了Android实现评论栏随Recyclerview滑动左右移动效果,仿约会吧应用详情页实现,感兴趣的小伙伴们可以参考一下2016-05-05Android下拉刷新PtrFrameLayout的使用实例代码
本篇文章主要介绍了Android下拉刷新PtrFrameLayout的使用实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-06-06Android中Retrofit 2.0直接使用JSON进行数据交互
本篇文章主要介绍了Android中Retrofit 2.0直接使用JSON进行数据交互,具有一定的参考价值,有兴趣的可以了解一下2017-08-08
最新评论