Android shape渐变色用代码怎么写?

前言

shape在实际开发中非常常用,一般我们会在xml中使用,但涉及到颜色动态变更时,我们需要在代码中动态创建。
xml中的shape,实际上被创建出来后它是一个Drawable,点开Drawable的子类一看,我们很容易就发现一些可疑的实现类(不看需要额外依赖的),我在这里推荐几个。

  1. ColorDrawable
  2. ShapeDrawable
  3. GradientDrawable

在这里插入图片描述
在这里插入图片描述

一、ColorDrawable

此类适用于只有颜色时的Drawable

val tv = TextView(context)
tv.background = ColorDrawable(Color.BLUE)
二、ShapeDrawable

很明显,这个类能够被我们直接当做shape使用,此类可以让我们通过Paint自行修改需要的颜色、边距等参数。

val tv = TextView(context)
tv.background = ShapeDrawable().apply{
	this.setPadding(1,2,3,4)
	this.paint.setColor(Color.BLUE)
}
三、GradientDrawable

这个类的用处可以说是非常广泛了,看名字就知道它适用于渐变色的shape,没错,它能够处理我们常用的渐变色、边框线条、圆角等。

val tv = TextView(context)
tv.background = GradientDrawable().apply{
	this.setPadding(1,2,3,4)
	this.cornerRadius = 10f // 指定圆角 
	this.setStroke(20, Color.BLUE) // 指定边框
    this.gradientType = GradientDrawable.LINEAR_GRADIENT // 指定渲染角度
    this.colors = intArrayOf(Color.BLUE, Color.TRANSPARENT) // 指定渐变色
}

当然它也能对圆角进行自定义,比如我这里指定了一个左上和右上角10大小、左下和右下不变(直角)的圆角shape。我们对函数cornerRadii()赋值,需要一个8位的float数组, 原因参考(Path.addRoundRect())。

val tv = TextView(context)
tv.background = GradientDrawable().apply{
	 // 指定圆角 
     this.cornerRadii = floatArrayOf(
            10f,10f, // 左上
            10f,10f, // 右上
            0f, 0f, 
            0f, 0f
     )
}

GradientDrawable类是我在开发中使用最多的,个人感觉基本够用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柯基爱蹦跶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值