自定 TextView 文字顯示特效

1 篇文章 / 0 new
author
自定 TextView 文字顯示特效
TextView 內部提供由右至左的跑馬燈文字顯示方式, 若要變更其顯示方式則可繼承 TextView 後再覆寫 onDraw() 方法即可
public class ShowText extends TextView {
    public ShowText(Context context) {
        super(context);
    }
    public ShowText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public ShowText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }   
    private float step = 0f; // 文字的橫座標
    private float x = 0f; // 文字的縱座標
    private float start_point = 0.0f; // 起點
    private float run_length = 0.0f; // 移動距離
    private Paint paint = null;
    private String text = "";
    @Override
    public void onDraw(Canvas canvas) {//由下到上方式呈現
        if (run_length == 0) {//在建構元內無法取得 部分資訊只好在初次 draw 時取出
            run_length = getHeight() * 2;
            x = getPaddingLeft();
            start_point = run_length;
            paint = getPaint();
            text = getText().toString();
        }
        canvas.drawText(text, x, start_point - step, paint);
        step += this.speed;// 速度
        if (step > run_length)
            step = 0;
        invalidate();
    }
}
可以將特效獨立 class , 這樣一來就可以方便增加多種呈現模式, 讓 TextView 如同市面一般的LED廣告看板
Free Web Hosting