Android开发:写一个自定义的TextView要求这个自定义view有个public的接口调用时该view像一幅画从右往左擦除一样的效果从右往左逐渐消失掉同时view的宽度不停减少你别给我省略代码!刚给的代码还是不对!重来!
好的,以下是一个示例的自定义TextView的代码:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
public class EraseTextView extends View {
private Paint paint;
private int viewWidth;
public EraseTextView(Context context) {
super(context);
init();
}
public EraseTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public EraseTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(50);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
viewWidth = getWidth();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawText("Hello World", viewWidth / 2, getHeight() / 2, paint);
}
public void erase() {
new Thread(new Runnable() {
@Override
public void run() {
while (viewWidth > 0) {
viewWidth -= 10;
postInvalidate(); // 异步刷新View
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
这个自定义TextView会在屏幕上绘制出"Hello World",并提供了一个erase()方法来实现从右往左擦除的效果。在erase()方法中启动了一个新的线程,不断减小view的宽度,并通过postInvalidate()方法来刷新View。通过调用erase()方法即可启动擦除效果
原文地址: http://www.cveoy.top/t/topic/iYOt 著作权归作者所有。请勿转载和采集!