摘要
每天一个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渐变色背景的资料请关注七九推其它相关文章!
发表评论