自定义TextView的文字闪烁功能

自定义TextView的文字闪烁功能_第1张图片
1.gif

首先,需要先继承Textview

public class  LinearGradientView    extends   TextView{*
publicLinearGradientView(Contextcontext) {*
      super(context);
 }
publicLinearGradientView(Contextcontext,AttributeSetattrs) {
      super(context,attrs);
}
 publicLinearGradientView(Contextcontext,AttributeSetattrs,intdefStyleAttr) {
        super(context,attrs,defStyleAttr);
}
}

然后重写onSizeChanged(intw,inth,intoldw,intoldh),这个方法会在view的大小改变之时重新调用

    protected voidonSizeChanged(intw,inth,intoldw,intoldh) {
   super.onSizeChanged(w,h,oldw,oldh);
   //设置一个线性渲染器
       //参数1 渲染的起始x坐标 参数2 渲染的起始y坐标
       // 参数3 渲染的结束x坐标 参数4 渲染的结束y坐标
          //参数5 渲染颜色 大于2钟 参数7 渲染的模式
  mLinearGradient= newLinearGradient(0,0,getMeasuredWidth(),0,new   int[]           {Color.BLUE,Color.WHITE,Color.RED},
                   null,Shader.TileMode.REPEAT);
                    //得到画笔,设置渲染器
      getPaint().setShader(mLinearGradient);
     mGradientMatrix= newMatrix();
     }

最后重写 onDraw(Canvascanvas)***

  protected voidonDraw(Canvascanvas) {
   super.onDraw(canvas);
   if(mGradientMatrix!=null)
    {
         //设置平移的距离
    mTranslate+=getMeasuredWidth()/5;
             //判断是否越界
     if(mTranslate>=2*getMeasuredWidth()) {
            //设置起点
           mTranslate= -getMeasuredWidth() ;
         }
              //设置移动的距离
            mGradientMatrix.setTranslate(mTranslate,0);
            //渲染器加载matrix
            mLinearGradient.setLocalMatrix(mGradientMatrix);
            postInvalidateDelayed(100);//延迟100ms后重绘
            }
       }

你可能感兴趣的:(自定义TextView的文字闪烁功能)