需要知道的技术点:
1.着色器
android中的着色器shader是非常有用接口。
例如现在多数的圆角图片还有类似flash效果文字都是有着色器功能完成。
着色器为画笔Paint的成员变量,在画笔绘制文字或者图片的是否起到渲染的作用。可以是边框形状渲染,或者颜色,渐变色等渲染。
2.属性动画
在渐变色渲染过程中,渠道渲染的时间线就是属性动画的执行时间线,注意成员变量的值的类型与初始化动画对象的方法要一致,否则不会执行。
3.小坑
TileMode的CLAMP指的是如果当前渲染器在控件外部的话,那么控件剩余的颜色有颜色数组中最后位置的那个颜色填充,由于当前控件式TextView所以一开始文字颜色由gray填充。
在控件显示过程中,onSizeChanged方式被调用一次而onLayout方法被调用两次,所以在onSizeChanged方法中完成了着色器以及动画的初始化。
移动距离最好设置为动画执行过程中增量的2倍,避免出现边界的字显得没有高亮,使得全部字都高亮一遍。

—-代码是基于Shimmer写的,有问题了再去研究他的代码去吧。

private Context context;
private TextPaint paint;
private LinearGradient linearGradient;
private Matrix matrix;
private ObjectAnimator objectAnimator;
private boolean isInvoke = false;
private float gradientX;public float getGradientX() {return gradientX;
}public void setGradientX(float gradientX) {this.gradientX = gradientX;System.out.println("setGradientX");invalidate();
}public FlashTextView(Context context, AttributeSet attrs) {super(context, attrs);init();
}private void init() {paint = getPaint();matrix = new Matrix();
}// 为什么要在onSizeChanged中实现而不在onLayout中实现?因为onLayout中被调用了两次,而onSizeChanged中被调用一次,不明白为什么,但是打印日志确实是这样。
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);objectAnimator = ObjectAnimator.ofFloat(this, "gradientX", 0,getWidth());objectAnimator.setDuration(1000);objectAnimator.setRepeatCount(ObjectAnimator.INFINITE);linearGradient = new LinearGradient(-getWidth(), 0, 0, 0, new int[] {Color.GRAY, Color.WHITE, Color.GRAY }, new float[] { 0f,0.5f, 1f }, TileMode.CLAMP);linearGradient.setLocalMatrix(matrix);paint.setShader(linearGradient);
}@Override
protected void onDraw(Canvas canvas) {super.onDraw(canvas);if (!isInvoke) {animate.run();}matrix.setTranslate(2 * gradientX, 0);linearGradient.setLocalMatrix(matrix);}private Runnable animate = new Runnable() {@Overridepublic void run() {isInvoke = true;objectAnimator.start();}
};

android 文字Flash特效相关推荐

  1. Android 文字 流光特效(仿锁屏文字的白光闪过动画效果)

    最近有需求说要开发一个新模块,再模块的入口 用动画 提醒用户.模仿的动画效果 如下: 经过百度,发现Android 这类的动画很少,通过度娘知道可以通过 LinearGradient 线性渲染 来实现 ...

  2. 乌鸦飞过flash素材下载_会声会影仿AE文字动画特效教程-会声会影中文官网

    现在人多少有点娱乐至死的精神,没事就爱点找乐子,许是窥出了百姓这点心思,各大卫视都争相推出各自的综艺王牌节目,但是僧多粥少,要想争得收视王,自然要贴合观众逗逼搞笑的心性,本集小编同大家分享一个快速获取 ...

  3. css 霓虹灯转动效果,CSS3霓虹灯文字动画特效

    这是一个完全由CSS3实现的霓虹灯文字动画特效,虽然看起来有flash的质感和js驱动的错觉,但事实上你可以看到所有代码如下:html> CSS3霓虹灯文字特效 .text-effect { o ...

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

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

  5. html给文字加动态效果,20种配合场景的CSS3鼠标滑过文字动画特效

    这是一组非常有创意的配合场景使用的CSS3鼠标滑过文字动画特效.这组鼠标滑过特效中,以20张不同的图片作为不同的场景,例如图片是一条公路,鼠标滑过这上面的文字时,就会在文字下边出现一条公路的动画效果. ...

  6. php 让字体闪烁,js实现文字闪烁特效的方法

    本文实例讲述了基于jquery实现省市联动特效的代码,分享给大家供大家参考,具体如下: 运行效果图: 实现原理:使用style对象来设置css属性,结合定时器就可以实现js实现文字闪烁特效. 具体代码 ...

  7. html文字向上移动10px,HTML文字移动特效代码

    HTML文字移动特效代码 一.从右向左移 代码 需要移动的文字 二.从左向右移 代码 需要移动的文字 三.一圈一圈绕着移动 代码 需要移动的文字 四.只移动三次就停了 代码 需要移动的文字 五.移一步 ...

  8. flash特效原理:图片滑动放大效果(2)

    flash特效原理:图片滑动放大效果(1) http://blog.csdn.net/hero82748274/archive/2009/10/22/4715312.aspx 最近看了一些关于动态注册 ...

  9. html炫酷弹幕特效,jQuery文字弹幕特效

    特效描述:jQuery 文字弹幕特效.jQuery文字弹幕特效 代码结构 1. 引入JS 2. HTML代码 弹幕(点我呀!!) X 让我来一个弹幕 嘿嘿 赞你 哈哈 51前端 $(function( ...

最新文章

  1. python一个月能挣多少钱-零基础学python,我可以让你一个月上手做项目!
  2. 阿里云高可用架构之“CDN+WAF+SLB+ECS
  3. 转《浅谈数据库设计技巧》
  4. 【网址收藏】Spark History Server配置及使用
  5. PHP实现文件安全下载
  6. 机器学习(三十一)——Linear Discriminant Analysis
  7. java常见异常思维导图_21_异常_第21天(异常、企业面试题,思维导图下载)
  8. 【架构师】【数据库基础】【笔记 01】快速了解数据库系统的重要概念02
  9. Redis学习---(7)Redis 字符串(String)
  10. html叠加层,JavaScript实现多个重叠层点击切换效果的方法
  11. PowerDesigner工具箱palette关了如何重新打开
  12. 常见的Java开发框架有哪些?
  13. python汉化之后好用吗_Python官方中文文档上线了:各种教程已汉化,不用再苦等野生翻译...
  14. C# 西门子PLC上位机开发环境搭建
  15. airplay 协议开源资料整理
  16. 无线鼠标插上去没反应
  17. 前端开发[html+css]的实用网站分享(一)
  18. 系统服务器设置有错误,Win7系统ie浏览器提示域名解析错误如何解决
  19. 基因组学中的深度学习 (转载)
  20. RuntimeError: Failed to init API, possibly an invalid tessdata path: C:\User

热门文章

  1. USB转LIN,USB转CAN,USB转PWM,总线工具
  2. pda扫描枪 按enter键下一个view不能获取焦点
  3. 编程20年的20条编程经验---作者乔纳森·丹尼可
  4. linux和mac下的电骡 amule 2.2.6下载,跨平台电骡 aMule 2.2.6
  5. 农村土地确权之系列文档 —— 承包方代表变更申请书
  6. leaflet监听地图(移动一段距离后发起请求)(leaflet篇.21)
  7. Unity 结合数据库实现商城购买装备以及数据更新
  8. Mybatis快速入门(个人学习笔记)
  9. 女朋友可能的若干职业,您选择哪种女孩做女朋友?
  10. Tensorflow2.0学习笔记(一)