前言

对于文本简记录文本颜色渐变,方便自己查阅。

好记性不如烂笔头

正文

要用渐变,需要了解一下LinearGradient的各种参数

简单介绍LinearGradient

LinearGradient的实现有两种。

第一种
public LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, Shader.TileMode tile)

x0,y0,x1,y1是起始位置和渐变的结束位置,color0,color1是渐变颜色。

最后一个参数表示绘制模式:

Shader.TileMode有3种参数可供选择,分别为CLAMP、REPEAT和MIRROR:

[1] CLAMP的作用是如果渲染器超出原始边界范围,则会复制边缘颜色对超出范围的区域进行着色
[2] REPEAT的作用是在横向和纵向上以平铺的形式重复渲染位图
[3] MIRROR的作用是在横向和纵向上以镜像的方式重复渲染位图
第二种
public LinearGradient (float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile);

x0,y0,x1,y1 参数和上面一样,TileMode和上面一样

colors表示渐变的颜色数组;

positions指定颜色数组的相对位置

代码片

下面用了上面两种方式实现,也验证ok。直接上代码,自己看。

    TextView textView = findViewById(R.id.shape_tv_one);


    /**
     * 从上往下渐变
     */
    LinearGradient gradient_up_down = new LinearGradient(0f, 0f, 0f, textView.getPaint().descent() - textView.getPaint().ascent(),
            new int[]{Color.parseColor("#FFEABF"), Color.parseColor("#DBA06F")},
            null, Shader.TileMode.REPEAT);
    LinearGradient gradient_up_down2 = new LinearGradient(0f, 0f, 0f, textView.getPaint().getTextSize(),
            new int[]{Color.parseColor("#FFEABF"), Color.parseColor("#DBA06F")},
            new float[]{0, textView.getText().length()}, Shader.TileMode.CLAMP);


    /**
     * 从左往右渐变
     */
    LinearGradient gradient_left_right = new LinearGradient(0f, 0f, (int) (textView.getPaint().measureText(textView.getText(),
            0, textView.getText().length())), 0, new int[]{Color.parseColor("#FFEABF"),
            Color.parseColor("#DBA06F")}, null, Shader.TileMode.REPEAT);

    LinearGradient gradient_left_right2 = new LinearGradient(0f, 0f, (int) (textView.getPaint().measureText(textView.getText(),
            0, textView.getText().length())), 0, new int[]{Color.parseColor("#FFEABF"),
            Color.parseColor("#DBA06F")}, new float[]{0, textView.getText().length()}, Shader.TileMode.CLAMP);


    textView.getPaint().setShader(gradient_left_right2);

参考文章

本文参考如下文章,感谢。

  1. TextView 设置文字颜色渐变
  2. TextView 文字颜色渐变
  3. android 中渐变的实现和SweepGradient 圆形渐变重点注意

 

 历史上的今天

  1. 2022: [代码片段]MediaCode 播放Video中的视频帧[无声](0条评论)
  2. 2019: 王小波:人为什么活着(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: https://www.91es.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

海子:为什么你不生活在沙漠上

为什么你不生活在沙漠上英雄的可怜而可爱的伴侣我那唯一的人在何方? 用酒调着火所能留下的灰 写下几首诗?我的形象开始上升主宰着你的心灵!孤独守候着一个健康的声音!绝望之神你在何方? 为什么你不生活在沙漠上!我是谁手里磨刀的石块?我为何要把赤子带进海洋&n...

AIDL使用异常记录

前言记录一下AIDL中常见的问题,方便自己回忆和学习。正文这里以BookBean为例package com.biumall.binderlibmedia.bean;import android.os.Parcel;import android.os.Parcelable;public...

汪曾祺:端午的鸭蛋

家乡的端午,很多风俗和外地一样。系百索子。五色的丝线拧成小绳,系在手腕上。丝线是掉色的,洗脸时沾了水,手腕上就印得红一道绿一道的。做香角子。丝线缠成小粽子,里头装了香面,一个一个串起来,挂在帐钩上。贴五毒。红纸剪成五毒,贴在门槛上。贴符。这符是城隍庙送来的。城隍庙的老道士还是我的寄名干爹,他每年端午...

[摘]Android启动时间优化

前言简单摘抄一下优化Android启动时间一些建议。启动时间是系统性能的重要组成部分,因为用户必须等待启动完成后才能使用设备。对于较常进行冷启动的汽车等设备而言,较短的启动时间至关重要(没有人喜欢在等待几十秒后才能输入导航目的地)。本文摘抄的,记录一下方便自己查看。正文优化引导加载程序...

冯友兰:我的读书经验

我今年八十七岁了,从七岁上学起就读书,一直读了八十年,其间基本上没有间断,不能说对于读书没有一点经验。我所读的书,大概都是文、史、哲方面的,特别是哲。我的经验总结起来有四点:(1)精其选,(2)解其言,(3)知其意,(4)明其理。先说第一点。古今中外,积累起来的书真是多极了,真是浩如烟海。但是,书...

MediaScanner源码分析

前言上一篇《MediaProvider源码分析》分析到,正在对多媒体的扫描是在MediaScanner中,因此进入就进一步分析多媒体扫描逻辑。这里是用了Android P源码分析,只能是个人流水账哈涉及代码目录#javaframeworks\base\media\java\andro...