- 注册时间
- 2013-4-19
- 最后登录
- 2026-1-21
- 阅读权限
- 200
- 积分
- 6551
- 精华
- 0
- 帖子
- 647
    
|
转载请注明 www.asysbang.com
可以考虑给文字加一些特效,这样看起来更酷
package com.asysbang.uidemo;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.EmbossMaskFilter;
import android.graphics.MaskFilter;
import android.graphics.Paint;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.View;
public class TextEffectView extends View {
private Paint textPaint;
private MaskFilter mEmboss;
private static final String text = "你好!今天是星期三!";
private static final int MSG_IN = 10;
private static final int EFFECT_SHOW_DELAY = 200;
private static final int TEXT_SIZE_1 = 80;
private static final int TEXT_SIZE_2 = 120;
private static final int START_X = 30;
private static final int START_Y = 400;
private int curPosition = 0;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
curPosition++;
if (curPosition <= text.length() * 2) {
invalidate();
mHandler.sendEmptyMessageDelayed(MSG_IN, EFFECT_SHOW_DELAY);
}
}
};
public TextEffectView(Context context, AttributeSet attrs) {
super(context, attrs);
textPaint = new Paint();
textPaint.setColor(Color.CYAN);
textPaint.setStyle(Paint.Style.STROKE);
textPaint.setStrokeJoin(Paint.Join.ROUND);
textPaint.setStrokeCap(Paint.Cap.ROUND);
textPaint.setStrokeWidth(2);
mEmboss = new EmbossMaskFilter(new float[] { 1, 1, 1 },
0.4f, 6, 3.5f);
textPaint.setMaskFilter(mEmboss);
}
@Override
protected void onDraw(Canvas canvas) {
String str = text.substring(0, curPosition / 2);
System.out.println("==========" + str);
textPaint.setTextSize(TEXT_SIZE_1);
canvas.drawText(str, START_X, START_Y, textPaint);
if (curPosition % 2 > 0) {
textPaint.setTextSize(TEXT_SIZE_2);
String str1 = text.substring(curPosition / 2, curPosition / 2 + 1);
canvas.drawText(str1, START_X / 2 + TEXT_SIZE_2 - TEXT_SIZE_1 + TEXT_SIZE_1 * curPosition / 2, START_Y, textPaint);
}
}
public void textIn() {
mHandler.removeMessages(MSG_IN);
curPosition = 0;
mHandler.sendEmptyMessage(MSG_IN);
}
}
|
|