Android开发:写一个自定义的TextView要求这个自定义view有个public的接口调用时该view像一幅画从右往左擦除一样的效果从右往左逐渐消失掉注意不要给我平移的效果!也不是整体渐隐!必须是像一幅画从右往左擦除一样的效果擦除也要使得view的宽度不停减少!
你可以通过自定义一个继承自TextView的类,并重写其onDraw方法实现该效果。
首先,在你的项目中创建一个名为CustomTextView的类,继承自TextView:
public class CustomTextView extends TextView {
private int mWidth;
private Paint mPaint;
private Rect mRect;
public CustomTextView(Context context) {
super(context);
init();
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
mPaint = new Paint();
mPaint.setColor(Color.WHITE);
mRect = new Rect();
}
@Override
protected void onDraw(Canvas canvas) {
mWidth = getWidth();
int height = getHeight();
// 绘制原始文本内容
super.onDraw(canvas);
// 设置擦除的区域
mRect.set(mWidth, 0, mWidth, height);
// 擦除区域
canvas.drawRect(mRect, mPaint);
// 定时刷新,每隔10毫秒擦除一次
postDelayed(new Runnable() {
@Override
public void run() {
// 减小宽度
mWidth -= 10;
invalidate();
// 当宽度小于等于0时停止擦除
if (mWidth <= 0) {
removeCallbacks(this);
}
}
}, 10);
}
}
在布局文件中使用该自定义TextView:
<com.example.android.CustomTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
这样,当你在代码中调用该TextView的public接口时,它就会像一幅画从右往左擦除一样的效果从右往左逐渐消失掉
原文地址: http://www.cveoy.top/t/topic/iYNR 著作权归作者所有。请勿转载和采集!