本文实例为大家分享了Android霓虹闪烁文字效果的具体代码,供大家参考,具体内容如下

package com.example.apple.shaderdemo;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.LinearGradient;import android.graphics.Matrix;import android.graphics.Shader;import android.support.annotation.Nullable;import android.text.TextPaint;import android.util.AttributeSet;import android.widget.TextView;/** * Created by apple on 2017/5/10. */public class LinearGradientTextView extends TextView { private TextPaint mPaint; private LinearGradient mLinearGradient ; private Matrix mMatrix; private float mTranslate; private float DELTAX = 20; private int mGradientSize; public LinearGradientTextView(Context context) {  super(context); } public LinearGradientTextView(Context context, @Nullable AttributeSet attrs) {  super(context, attrs); } /**  * 优先于onDraw执行,在这里得到系统绘制TextView的画笔,然后给这个画笔设置shader  * 这样下面在执行onDraw的时候,使用的就是带有Shader效果的画笔了  * @param w  * @param h  * @param oldw  * @param oldh  */ @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) {  super.onSizeChanged(w, h, oldw, oldh);  // ★拿到系统TextView的画笔  mPaint = getPaint();//  得到文本  String text = getText().toString();//  用画笔测量文本的长度  float textWith = mPaint.measureText(text);  // 3个文字的宽度  mGradientSize = (int) (textWith / text.length() * 3);  // 从左边-gradientSize开始,即左边距离文字gradientSize开始渐变  // 一个渐变单位是:从第一个字之前3字距离开始到第一个字之前位置终结  //然后一直让这个渐变单位从左往右移动dx位移,直到最右侧后,向左移动  // CLAMP意思是:由于你的只是在渐变3个字的长度,那么剩余的空间,让边缘颜色去填充  mLinearGradient = new LinearGradient(-mGradientSize,0,0,0,new int[]{    0xffff0000, 0xff00ff00, 0xff00ffff},null, Shader.TileMode.CLAMP  );  mPaint.setShader(mLinearGradient); } @Override protected void onDraw(Canvas canvas) {//  调用super,意思是按照系统绘制textview的流程先把textview绘制完成  super.onDraw(canvas);//  我在系统基础上再绘制一些效果  mTranslate += DELTAX;  float textWidth = getPaint().measureText(getText().toString());//  到了边界dx取反  if(mTranslate > textWidth + mGradientSize || mTranslate < 0){   DELTAX = - DELTAX;  }//  不停地方平移,得到闪烁的效果  mMatrix = new Matrix();  mMatrix.setTranslate(mTranslate, 0);  mLinearGradient.setLocalMatrix(mMatrix);//  延时重绘  postInvalidateDelayed(50); }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多相关文章

  1. 【android系统问题】呼叫状态变化
  2. android之获取系统时间并作为文件名
  3. 获取Android各类系统相关信息的接口实现代码
  4. Android社交系统----界面预览
  5. android(8)(获取手机系统内存和SD卡内存信息)
  6. android spinner 样式完全自定义[包括RadioButton和RatingBar效
  7. 移动端区分安卓系统和ios系统

随机推荐

  1. 如何解决Eclipse开发android程序的编译错
  2. Android XML Editor cannot process this
  3. Android Studio GsonFormat插件的使用
  4. Github 上Top1的Android 异步网络请求框
  5. Android 实现缩小图片像素
  6. 跟着官方学习Android(安卓)— Services
  7. Android实现点击两次返回键退出
  8. 一篇胎死腹中的Android文章——Dex文件结
  9. Android缓存的一个Demo
  10. Android-studio与Android常见的Error与坑