博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android闪闪发光字体效果
阅读量:4340 次
发布时间:2019-06-07

本文共 2308 字,大约阅读时间需要 7 分钟。

原文:

import android.content.Context;import android.graphics.Canvas;import android.graphics.LinearGradient;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.Shader;import android.util.AttributeSet;import android.widget.TextView;public class ShineTextView extends TextView {    private LinearGradient mLinearGradient;      private Matrix mGradientMatrix;      private Paint mPaint;      private int mViewWidth = 0;      private int mTranslate = 0;        private boolean mAnimating = true;        public ShineTextView(Context context, AttributeSet attrs) {          super(context, attrs);      }        @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();                  // 创建LinearGradient对象                // 起始点坐标(-mViewWidth, 0) 终点坐标(0,0)                // 第一个,第二个参数表示渐变起点 可以设置起点终点在对角等任意位置                  // 第三个,第四个参数表示渐变终点                  // 第五个参数表示渐变颜色                  // 第六个参数可以为空,表示坐标,值为0-1,如果这是空的,颜色均匀分布,沿梯度线。                  // 第七个表示平铺方式                  // CLAMP重复最后一个颜色至最后                  // MIRROR重复着色的图像水平或垂直方向已镜像方式填充会有翻转效果                  // REPEAT重复着色的图像水平或垂直方向                  mLinearGradient = new LinearGradient(                        -mViewWidth, 0,                         0, 0,                          new int[] { 0xFF0288DA, 0xFFFFFFFF, 0xFF0288DA },                        new float[] { 0, 0.5f, 1 },                         Shader.TileMode.CLAMP);                  mPaint.setShader(mLinearGradient);                  mGradientMatrix = new Matrix();              }          }      }        @Override      protected void onDraw(Canvas canvas) {          super.onDraw(canvas);          if (mAnimating && mGradientMatrix != null) {              mTranslate += mViewWidth / 10;              if (mTranslate > 2 * mViewWidth) {                  mTranslate = -mViewWidth;              }              mGradientMatrix.setTranslate(mTranslate, 0);              mLinearGradient.setLocalMatrix(mGradientMatrix);              postInvalidateDelayed(50);          }      }  }

 

转载于:https://www.cnblogs.com/H-BolinBlog/p/6181552.html

你可能感兴趣的文章
Android Studio Tips Of the Day – Roundup
查看>>
CSS display:inline和float:left两者区别探讨
查看>>
前端可以用的资源
查看>>
【poj3070】 Fibonacci
查看>>
关于php的一些基础知识
查看>>
团队作业1——团队展示&博客作业查重系统
查看>>
hdu 3038 How Many Answers Are Wrong (带权并查集)
查看>>
Here is the title.
查看>>
serv_u提权方法总结
查看>>
字符串相互转字符数组 string byte 数组 array of byte
查看>>
进程,线程,携程复习
查看>>
第九次作业
查看>>
十大排序代码实现(python)
查看>>
[转载]什么是对象序列化,为什么要使用
查看>>
邮政编码联动地址
查看>>
javascript arguments
查看>>
如何计算两个日期之间相差天数
查看>>
HttpClient 知识点
查看>>
linux下的文件结构
查看>>
随机码生成方法
查看>>