Android 自定义 TextView 实现从右往左逐渐消失效果
在 Android 中,可以通过自定义 TextView 来实现从右往左逐渐消失的效果。以下是一个示例代码:
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 GradientTextView extends TextView {
private LinearGradient gradient;
private Matrix gradientMatrix;
private Paint paint;
private int viewWidth = 0;
private int translate = 0;
public GradientTextView(Context context) {
super(context);
init();
}
public GradientTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public GradientTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
paint = getPaint();
gradientMatrix = new Matrix();
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if (viewWidth == 0) {
viewWidth = getMeasuredWidth();
if (viewWidth > 0) {
// 创建渐变
gradient = new LinearGradient(0, 0, viewWidth, 0,
new int[]{getCurrentTextColor(), 0x00ffffff},
null, Shader.TileMode.CLAMP);
paint.setShader(gradient);
}
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (gradientMatrix != null) {
translate += viewWidth / 10;
if (translate > 2 * viewWidth) {
translate = -viewWidth;
}
gradientMatrix.setTranslate(translate, 0);
gradient.setLocalMatrix(gradientMatrix);
// 刷新
postInvalidateDelayed(100);
}
}
}
使用自定义的 GradientTextView 时,只需在布局文件中将 TextView 替换为 GradientTextView 即可。
<com.example.GradientTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
这样,就可以在调用接口时,自定义的 TextView 会从右往左逐渐消失。
你可以将以上代码保存为一个名为 GradientTextView.java 的文件,然后在你的 Android 项目中使用。
希望这个示例能对你有所帮助!
原文地址: https://www.cveoy.top/t/topic/qENv 著作权归作者所有。请勿转载和采集!