effets de texte bricolage clignotant TextView

1. Écrivez une classe héritant Voir
2. méthode de remplacement onDraw et la méthode OnSizeChanged
3. code est le suivant:

    private Paint paint1;
    private Paint mPaint;

    private int mViewWidth;
    private LinearGradient mlinearGradient;

    private int mTranslate;//水平方向上平移的距离
    private Matrix gradientMatrix;

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        if (gradientMatrix != null) {
            mTranslate += mViewWidth / 5;
            //每次刷新view平移一点,如果到头就重新返回在开始平移
            if (mTranslate >2*mViewWidth){
                mTranslate = -mViewWidth;
            }

            gradientMatrix.setTranslate(mTranslate,0);
            mlinearGradient.setLocalMatrix(gradientMatrix);
            postInvalidateDelayed(100);
        }

    }

    @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();
                mlinearGradient = new LinearGradient(0
                        , 0
                        , mViewWidth
                        , 0
                        , new int[]{Color.BLUE,0xffffffff,Color.BLUE}
                        , null
                        , Shader.TileMode.CLAMP);
            }

            mPaint.setShader(mlinearGradient);
            gradientMatrix = new Matrix();
        }
    }

    public void initPaint(){
        paint1 = new Paint();
        paint1.setColor(Color.BLUE);
        paint1.setStyle(Paint.Style.FILL);
    }

Le point essentiel est d'utiliser la méthode getPaint () pour obtenir la consommation de courant cible de peinture de TextView, et aux propriétés de linearGradient de réglage d'objet de peinture, dans la méthode onDraw, par une sorte de matrice pour traduire en continu gradient, de façon à dessiner le texte est de produire un effet dynamique . . Certains dont je n'utilisent pas souvent la classe, d' abord vers le bas, écrire un programme avec ce genre de chose plus que quelques fois sur le familier.
Ensuite , directement écrit à l'intérieur xml lors de l'utilisation sur la ligne:

<com.demo.alldemos.diyviews.MyTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

plus de…

Publié 17 articles originaux · éloge de won 12 · vues 10000 +

Je suppose que tu aimes

Origine blog.csdn.net/qq_24295537/article/details/50908733
conseillé
Classement