Android设置TextView的渐变颜色、方向和动画效果

GradientTextView Github点我

一个非常好用的库,使用kotlin实现,用于设置TexView的字体 渐变颜色渐变方向动画效果

添加依赖

之前仓库发布在 jcenter,但是因为它即将不可用,近期已完成迁移。建议大家使用 mavenCentral 的配置。

  • 使用 jcenter
implementation 'com.williamyang:gradienttext:1.0.1'
  • 使用 mavenCentral
buildscript {
    repositories {
        mavenCentral()
    }
}

implementation 'io.github.weilianyang:gradienttext:1.0.1'

效果预览:

效果动图
效果截图

一、控件样式

<declare-styleable name="GradientTextView">
    <attr name="gradient_startColor" format="reference|color" />
    <attr name="gradient_endColor" format="reference|color" />
    <attr name="gradient_direction" format="enum">
        <enum name="leftToRight" value="1" />
        <enum name="topToBottom" value="2" />
    </attr>
    <attr name="gradient_animate" format="boolean" />
    <attr name="gradient_speed" format="enum">
        <enum name="slow" value="20" />
        <enum name="normal" value="10" />
        <enum name="fast" value="5" />
    </attr>
</declare-styleable>

二、属性介绍

属性可选值作用
gradient_startColor值在color.xml中定义渐变颜色的起始值(默认值:#6200EE)
gradient_endColor值在color.xml中定义渐变颜色的结束值(默认值:#03DAC5)
gradient_directionleftToRight:从左向右,topToBottom:从上向下渐变颜色的方向(默认值:leftToRight)
gradient_animatetrue or false渐变颜色的动画开关(默认值:false)
gradient_speedslow、normal、fast渐变颜色的动画速度(默认值:normal)

三、控件在布局中使用

<com.william.gradient.GradientTextView
    android:id="@+id/gradientTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:text="@string/leftToRight_GradientTextView"
    android:textSize="24sp"
    app:gradient_animate="true"
    app:gradient_direction="leftToRight"
    app:gradient_speed="normal" />

四、在代码中控制动画开关

gradientTextView.apply {
    translateAnimate = !translateAnimate
    invalidate()
}
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 AndroidTextView 中实现字体颜色渐变效果,你可以使用 SpannableString 和 ForegroundColorSpan 组合来实现。下面是一个示例代码: ```java TextView textView = findViewById(R.id.textView); String text = "Hello World!"; // 创建一个 SpannableString 对象 SpannableString spannableString = new SpannableString(text); // 定义渐变起始颜色和结束颜色 int startColor = Color.RED; int endColor = Color.BLUE; // 创建一个 ForegroundColorSpan 对象,并将其应用到 SpannableString ForegroundColorSpan colorSpan = new ForegroundColorSpan(startColor); spannableString.setSpan(colorSpan, 0, text.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); // 创建一个渐变效果的 Span Shader shader = new LinearGradient(0, 0, 0, textView.getPaint().getTextSize(), startColor, endColor, Shader.TileMode.CLAMP); ShaderSpan shaderSpan = new ShaderSpan(shader); // 将渐变效果的 Span 应用到 SpannableString spannableString.setSpan(shaderSpan, 0, text.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); // 设置 TextView 的文本为 SpannableString textView.setText(spannableString); ``` 在上面的示例中,我们首先创建了一个 SpannableString 对象,然后定义了起始颜色和结束颜色。接着,我们创建了一个 ForegroundColorSpan 对象,并将其应用到 SpannableString 中,以实现初始字体颜色。然后,我们创建了一个 LinearGradient 对象,并使用 ShaderSpan 来应用渐变效果。最后,我们将 SpannableString 设置TextView 的文本,实现字体颜色渐变效果。 请注意,这种方式只能实现单一的线性渐变效果。如果你想要实现更复杂的渐变效果,可能需要自定义 View 或使用第三方库。 希望这个示例对你有帮助。如果你有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值