效果如下图所示:

具体实现方式如下:

1,自定义一个LinearGradientTextView 继承 TextView ,重写onSizeChanged和onDraw。:

public class LinearGradientTextView extends TextView { private int mViewWidth; private Paint mPaint; private LinearGradient mLinearGradient; private Matrix mMatrix; private int mTranslate; public LinearGradientTextView(Context context) { super(context); } public LinearGradientTextView(Context context, AttributeSet attrs) { super(context, attrs); } public LinearGradientTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } /** * LinearGradient有两个构造函数: public LinearGradient(floatx0,float y0, float x1, float y1, int[] colors, float[] positions,Shader.TileMode tile) * 参数:float x0: 渐变起始点x坐标 * float y0:渐变起始点y坐标 * float x1:渐变结束点x坐标 * float y1:渐变结束点y坐标 * int[] colors:颜色 的int 数组 * float[] positions: 相对位置的颜色数组,可为null,若为null,可为null,颜色沿渐变线均匀分布 * Shader.TileMode tile: 渲染器平铺模式 */ @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { // TODO Auto-generated method stub super.onSizeChanged(w, h, oldw, oldh); if (mViewWidth == 0) { mViewWidth = getMeasuredWidth(); } if (mViewWidth > 0) { mPaint = getPaint(); mLinearGradient = new LinearGradient( 0, 0, mViewWidth, 0, new int[] { Color.BLUE, Color.BLACK, Color.RED, Color.YELLOW }, null, Shader.TileMode.MIRROR); mPaint.setShader(mLinearGradient); mMatrix = new Matrix(); } } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); if (mMatrix != null) { mTranslate += mViewWidth / 5; if (mTranslate > 2 * mViewWidth) { mTranslate = -mViewWidth; } mMatrix.setTranslate(mTranslate, 0); mLinearGradient.setLocalMatrix(mMatrix); postInvalidateDelayed(100); } } } 

注:这段代码主要是分两步:一个是在onSizeChanged()即大小发生改变的时候,另外一个是onDraw()主要是用来做动画的效果的。

2,XML文件 引用到这个自定义的LinearGradientTextView :

 <com.summer.valueanimatordemo.LinearGradientTextViewandroid:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/tv" android:layout_gravity="center" android:gravity="center" android:text="测试文字一闪一闪" android:textSize="30sp" />

转载于:https://www.cnblogs.com/Free-Thinker/p/9253774.html

Android-利用LinearGradient实现文字一闪一闪相关推荐

  1. 利用LinearGradient Shader和Matrix来实现动态文字闪动效果

    利用LinearGradient Shader和Matrix来实现动态文字闪动效果.要想实现这一个效果,可以充分利用android中Paint对象的Shader渲染器.通过设置一个不断变化的Linea ...

  2. css3 卡片亮光_利用css3实现文字亮光特效的代码

    这篇文章主要介绍了关于利用css3实现文字亮光特效的代码,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 以前分享过很多css3实现的字体特效,今天给大家分享一款纯css3实现的文字亮光 ...

  3. Android利用Cookie实现码源登录效果

    上一篇讲了界面的实现,详情请戳Android利用Cookie实现码源登录效果(一) - 界面实现,本篇将对功能的实现进行分析. 具体实现 功能实现 使用HttpClient进行post请求 在进行po ...

  4. Android使用Tesseract-ocr进行文字识别

    前言 Tessseract是一款由HP实验室开发由 Google 维护的开源 OCR(Optical Character Recognition , 光学字符识别)引擎.能够支持中文十分难得.虽然其识 ...

  5. LINE分享android利用系统自带分享实现LINE分享功能

    android利用系统自带分享实现分享功能之LINE分享 最近公司向海外发展,提出了一个国外主流的社交APP分享需求.原来我使用的是第三方分享工具,但是太鸡肋,国内的APP支持的还是不错的,但是国外支 ...

  6. Android 使用 ellipsize 实现文字横向移动效果(跑马灯效果)

    实现的效果图如下 ellipsize 可以设置跑马灯效果 具体代码设置如下 <TextViewandroid:layout_width="match_parent"andro ...

  7. linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件...

    原创,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4555328.html  之前写过一篇<windows下Android利用ant自动编译.修改配置文件.批量 ...

  8. android列表实现置顶,Android利用RecyclerView实现全选、置顶和拖拽功能示例

    Android利用RecyclerView实现全选.置顶和拖拽功能示例 发布时间:2020-08-23 16:26:42 来源:脚本之家 阅读:159 作者:爱开发 前言 今天给大家分享是如何在Rec ...

  9. android利用反射调用截屏api,Android利用反射机制调用截屏方法和获取屏幕宽高的方法...

    想要在应用中进行截屏,可以直接调用 View 的 getDrawingCache 方法,但是这个方法截图的话是没有状态栏的,想要整屏截图就要自己来实现了. 还有一个方法可以调用系统隐藏的 screen ...

  10. 利用脚本将文字插入到图片或进行多个图片拼接

    最近做一个拼图游戏,因为有十几关,所以测试的时候也是看的两眼冒金星!于是想到在图片上标上数字,直接按数字排序就方便多了. Linux下有个图片处理工具imagemagick很强大,正适合做这种后台处理 ...

最新文章

  1. BZOJ 3261 最大异或和 可持久化Trie树
  2. 剪切板与正则表达式测试
  3. c#数据库訪问返回值类型为SqlDataReader时使用using时注意的问题
  4. java复制一个对象_Java中对象的复制
  5. 好玩的100个网站收藏
  6. TextView设置文字竖着排放
  7. 解析:百思买败于外部派系争斗
  8. 6. access_token
  9. 中学生计算机制作大赛作品,“全国中小学电脑制作大赛”全校征集啦!
  10. Windows7下IPV6设置方法详解
  11. 猫哥教你写爬虫 022--类与对象(下)
  12. Android如何隐藏底部虚拟按键
  13. Python编程基础 第四章 编程练习 请定义一个Circle类,具体要求为:(1)每个Circle类对象可以存储圆心和半径信息;(2)具有设置圆心和半径的方法SetCenter和SetRadius
  14. 申请邓白氏D-U-N-S编码遇到两个公司名称一样英文翻译的解决方法
  15. python生成快递取件码没了怎么办_货到速递易,但没有收到取件码,怎么办
  16. swift 生命周期_iOS View的生命周期详解
  17. linux进阶之道 pdf,PDF
  18. LCA 最近公共祖先 详解
  19. 2018年蓝桥杯C/C++B组赛——调手表
  20. 微软MSE的离线更新方式

热门文章

  1. ABP理论学习之内嵌资源文件
  2. VR 、AR 谁让你眼前一亮
  3. AC日记——可能的路径 51nod 1247
  4. 关于 Android Service 的介绍都在这了
  5. TypeScript:基本类型和接口
  6. u盘安装centos7.0
  7. vue-cli3 按需加载loading,服务的方式调用
  8. SPring cloud (3)A Ribbon 负载均衡 配置初步
  9. MongoDB 之 $关键字 及 $修改器 $set $inc $push $pull $pop MongoDB - 4
  10. 关于mpvue 切换页面数据没清空