以下是一个简单的示例代码,实现了一个自定义的 TextView,从右往左逐渐消失:

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.Shader;
import android.util.AttributeSet;
import android.widget.TextView;

public class DisappearingTextView extends androidx.appcompat.widget.AppCompatTextView {

    private float gradientWidth;
    private ValueAnimator animator;
    private Paint paint;

    public DisappearingTextView(Context context) {
        super(context);
        init();
    }

    public DisappearingTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public DisappearingTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        paint = new Paint();
        animator = ValueAnimator.ofFloat(0, 1);
        animator.setDuration(3000);
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                gradientWidth = getWidth() * (1 - animation.getAnimatedFraction());
                invalidate();
            }
        });
        animator.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                setVisibility(GONE);
            }
        });
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if (gradientWidth > 0) {
            LinearGradient shader = new LinearGradient(getWidth() - gradientWidth, 0,
                    getWidth(), 0, getCurrentTextColor(), 0x00FFFFFF, Shader.TileMode.CLAMP);
            paint.setShader(shader);
            canvas.drawRect(getWidth() - gradientWidth, 0, getWidth(), getHeight(), paint);
        }
    }

    public void startDisappearAnimation() {
        setVisibility(VISIBLE);
        animator.start();
    }
}

使用时,可以在布局文件中添加一个 DisappearingTextView,然后在代码中调用startDisappearAnimation()方法来启动动画:

<com.example.myapplication.DisappearingTextView
    android:id="@+id/disappearingTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!" />
DisappearingTextView disappearingTextView = findViewById(R.id.disappearingTextView);
disappearingTextView.startDisappearAnimation();

你可以将以上代码保存在一个 Java 文件中,然后将其添加到你的 Android 项目中使用。

请注意,此示例代码仅实现了从右往左逐渐消失的效果,你可以根据自己的需求进行修改和扩展。

Android 自定义 TextView 实现从右往左消失动画

原文地址: https://www.cveoy.top/t/topic/qENG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录