Android开发:我要写一个自定义的TextView要求这个自定义view有个public的接口调用时该view从右往左逐渐消失掉帮我找找有没有人写过类似的自定义view注意不要给我平移的效果!我要的是view的位置保持不变然后从最右边开始往最左边慢慢消失掉!注意是从右往左!从右往左!从右往左!从右往左!不是整体渐隐!也不是平移消失!必现像一幅画一样从右往左擦除一样的效果
根据您的描述,您需要一个自定义的TextView,希望实现从右往左逐渐消失的效果。以下是一个实现此效果的示例代码:
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 TextView {
private Paint paint;
private LinearGradient gradient;
private int viewWidth;
private int gradientWidth;
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(Paint.ANTI_ALIAS_FLAG);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
viewWidth = w;
// 计算渐变宽度为view的宽度的1/4
gradientWidth = viewWidth / 4;
// 创建渐变对象,从透明到不透明
gradient = new LinearGradient(viewWidth - gradientWidth, 0, viewWidth, 0,
new int[]{getCurrentTextColor(), getCurrentTextColor() & 0x00ffffff},
null, Shader.TileMode.CLAMP);
}
@Override
protected void onDraw(Canvas canvas) {
// 设置渐变效果
paint.setShader(gradient);
// 绘制文本
canvas.drawText(getText().toString(), getPaddingLeft(), getBaseline(), paint);
}
}
使用此自定义TextView时,只需将其添加到布局文件中即可:
<com.example.DisappearingTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textSize="24sp" />
此自定义TextView会从右往左逐渐消失,效果类似于从右往左擦除一样。关键在于使用渐变对象来设置绘制文本的画笔。请根据您的需求进行进一步修改和优化
原文地址: http://www.cveoy.top/t/topic/iYNs 著作权归作者所有。请勿转载和采集!