利用LinearGradient Shader和Matrix来实现动态文字闪动效果
来源:互联网 发布:php utf8 编码 编辑:程序博客网 时间:2024/06/03 03:52
利用LinearGradient Shader和Matrix来实现动态文字闪动效果。要想实现这一个效果,可以充分利用android中Paint对象的Shader渲染器。通过设置一个不断变化的LinearGradient,并 使用带有该属性的Paint对象来绘制要显示的文字。首先,在onSizeChanged()方法中进行一些对象的初始化工作,并根据View的宽度设置一个LinearGradient渐变渲染器。
代码如下:
package com.csii.btt.chapter3;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.LinearGradient;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.Shader;import android.util.AttributeSet;import android.widget.TextView;/** * Created by bitaotao on 2016/11/18. */public class MyTextView2 extends TextView { private int mViewWidth = 0; private Paint mPaint; private LinearGradient mLinearGradient; private Matrix mGradientMatrix; private int mTranslate = 0; public MyTextView2(Context context) { this(context,null,0); } public MyTextView2(Context context, AttributeSet attrs) { this(context,attrs,0); } public MyTextView2(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { 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,0xffffffff,Color.BLUE},null, Shader.TileMode.CLAMP); mPaint.setShader(mLinearGradient); mGradientMatrix = new Matrix(); } } } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if(mGradientMatrix != null){ mTranslate += mViewWidth / 5; if(mTranslate > 2 * mViewWidth){ mTranslate = - mViewWidth; } mGradientMatrix.setTranslate(mTranslate,0); mLinearGradient.setLocalMatrix(mGradientMatrix); postInvalidateDelayed(100); } }}
其中最关键的就是使用getPaint()方法获取当前绘制TextView的Paint对象,并给这个Paint对象设置原生TextView
没有的LinearGradient属性。最后,在onDraw()方法中,通过矩阵的方式来不断平移渐变效果,从而在绘制文字时,
产生动态的闪动效果。
0 0
- 利用LinearGradient Shader和Matrix来实现动态文字闪动效果
- LinearGradient和Matrix实现动态的文字闪烁效果
- LinearGradient线性渲染实现绚丽的闪动字效果
- 【Android UI】自定义TextView实现动态的文字闪动效果
- 继承TextView实现自定义动态文字闪动效果
- Android-利用LinearGradient实现文字一闪一闪
- 利用CADisplayLink 和 CAGradientLayer来实现文字渐变效果
- 【Android学习】动态文字闪动效果
- android 使用LinearGradient实现手机开机文字闪烁效果
- Android自定义View之实现一个动态的文字闪动效果
- android文字闪动效果
- LinearGradient类来实现图片的渐变效果
- 【Android】自定义View-为文字添加动态闪动效果
- 利用Camera和Matrix实现有趣的卡片效果
- Android群英传--对现有控件进行拓展(动态的文字闪动效果)
- LinearGradient(线性渲染器)介绍(实现歌词效果和进度球效果)
- DIY文字闪动效果的TextView
- 自定义View之自定义文字闪动效果
- 栈
- 大O算法复杂度表示
- Swift3.0学习笔记-DeInitialization
- poj2559(单调栈)
- u盘打开之后就只有一个快捷方式
- 利用LinearGradient Shader和Matrix来实现动态文字闪动效果
- 取模MOD和求余REM……JAVA的%原来只是REM
- 想不到,误差会那么大!
- Flex显示图片的几种方式
- 异步上传图片 springmvc的MultipartFile和jersey的使用
- 函数与程序结构 例题
- 配置Log4j(很详细)
- Android自定义view之仿支付宝芝麻信用仪表盘 ---by ccy
- 安卓四大组件之Activity-生命周期