美文网首页
自定义TextView的文字闪烁功能

自定义TextView的文字闪烁功能

作者: 我的轩辕 | 来源:发表于2016-10-17 17:21 被阅读87次
    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的文字闪烁功能

          本文链接:https://www.haomeiwen.com/subject/wuczyttx.html