• Android闪闪发光字体效果


    原文:

    http://blog.csdn.net/xu_fu/article/details/24484019

    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);  
            }  
        }  
    
    }
  • 相关阅读:
    linux配置虚拟主机
    mysql允许远程登录
    php优化
    php socket 函数
    1-- prometheus安装、图形化界面
    Ansible Roles
    Ansible 的 Playbook
    Ansible 变量
    Ansible 模块
    Ansible入门;Ansible ad-hoc; ansible-vault加密工具 ;ansible-console
  • 原文地址:https://www.cnblogs.com/H-BolinBlog/p/6181552.html
Copyright © 2020-2023  润新知