欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android Textview实现颜色渐变滚动效果

程序员文章站 2023-11-30 21:43:04
本文实例为大家分享了android颜色渐变滚动展示的具体代码,供大家参考,具体内容如下 public class flashtextview extends...

本文实例为大家分享了android颜色渐变滚动展示的具体代码,供大家参考,具体内容如下

public class flashtextview extends android.support.v7.widget.appcompattextview { 
 private paint mpaint; 
 private int mviewwidth; 
 private lineargradient mlineargradient; 
 private matrix mgradientmatrix; 
 private int mtransalte; 
 
 public flashtextview(context context, @nullable 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();//获得当前绘制的paint对象 
    mlineargradient = new lineargradient( 
      0,//渐变起始点x坐标 
      0,//渐变起始点y坐标 
      mviewwidth,//渐变结束点x点坐标 
      0,//渐变结束点y坐标 
      new int[]{ 
        color.blue, 0xffffffff, 
        color.blue,color.red,color.yellow},//颜色的int数组 
      null,//相对位置的颜色数组,可为null, 若为null,可为null,颜色沿渐变线均匀分布 
      shader.tilemode.mirror);//平铺模式 
    mpaint.setshader(mlineargradient);//给这个paint设置linearfradient属性 
    mgradientmatrix = new matrix(); 
   } 
  } 
 } 
 
 @override 
 protected void ondraw(canvas canvas) { 
  super.ondraw(canvas); 
 
  if (mgradientmatrix != null) { 
   mtransalte += mviewwidth / 5; 
   if (mtransalte > 2 * mviewwidth) { 
    mtransalte -= mviewwidth; 
   } 
   mgradientmatrix.settranslate(mtransalte, 0); 
   mlineargradient.setlocalmatrix(mgradientmatrix);//通过矩阵的方式不断平移产生渐变效果 
   postinvalidatedelayed(100); 
 
  } 
 
 } 
} 

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