TextView 內部提供由右至左的跑馬燈文字顯示方式, 若要變更其顯示方式則可繼承 TextView 後再覆寫 onDraw() 方法即可
可以將特效獨立 class , 這樣一來就可以方便增加多種呈現模式, 讓 TextView 如同市面一般的LED廣告看板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(); } }