美文网首页
Android 实现七彩闪动文字效果

Android 实现七彩闪动文字效果

作者: 程序员K哥 | 来源:发表于2016-06-29 15:05 被阅读2165次

    未经本人授权,不得转载!否则必将维权到底

    先上效果图:
    图例1.png

    这是 AndroidStudio 里面预览布局的效果图,真实运行效果,大家一试便知。

    实现代码如下:

    自定义View,继承TextView

    /** * Created by keithXiaoY  */
    // Java代码
    public class CustomsTextView extends TextView { 
        private int mViewWidth = 0;
        private TextPaint mPaint;
        private LinearGradient mLinearGradient;
        private Matrix mGradientMatrix;
        private int mTranslate = 0;
    
        public CustomsTextView(Context context) {
            this(context,null,0);
        }
        public CustomsTextView(Context context, AttributeSet attrs) {    
            this(context, attrs ,0 );
        }
        public CustomsTextView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            if (mGradientMatrix != null){
                mTranslate += mViewWidth /7 ;
                if (mTranslate > 2*mViewWidth){
                    mTranslate = -mViewWidth;
                }
                mGradientMatrix.setTranslate(mTranslate ,0);
                mLinearGradient.setLocalMatrix(mGradientMatrix);
                postInvalidateDelayed(50);
            }
        }
    
    @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();
                //Shader.TileMode.MIRROR   镜子,反射,反映
                //Shader.TileMode.REPEAT  重复
                    mLinearGradient = new LinearGradient(0,0,mViewWidth,0,new int[]{Color.RED,Color.GREEN,Color.CYAN,0xffffffff,Color.BLUE},null, Shader.TileMode.CLAMP);
                    mPaint.setShader(mLinearGradient);
                    mGradientMatrix = new Matrix();
    
                 }
             }
         }
    }
    
    • new int[]{Color.RED,Color.GREEN,Color.CYAN,0xffffffff,Color.BLUE} 这里面就是颜色的代码,你可以按照自己的喜好来调整int数组里面的颜色。

    这里是充分利用Android中Paint对象的Shader渲染器,通过不断变化的LinearGradient,并使用带有该属性的Paint对象来绘制要显示的文字。

    • 在onSizeChanged()方法中进行一些对象的初始化,并根据View的宽带来设置一个LinearGradient渐变渲染器
    • 使用getPaint()方法获取当前绘制TextView的Paint对象,并给这个Paint对象设置原生TextView没有的LinearGradient属性
    • 在onDraw()方法中,通过矩阵的方式来不断平移渐变效果,实现效果

    ----引用 徐宜生《Android群英传》


    不要给自己的人生设限

    相关文章

      网友评论

          本文标题:Android 实现七彩闪动文字效果

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