Android自带的跑马灯效果文字长度没有超过屏幕的话不会滚动,但是我们这边产品需求是文字长度没有超过屏幕长度也需要滚动,我看了一个人的博客上实现了Android跑马灯的效果从他博客上获得了灵感,自己改动了一下。其实很简单就是利用handler循环发送消息,不断的调用invalidate()方法drawText从而达到文字滚动的效果。关键地方是当文字整个移出屏幕时我们需要吧x坐标置为屏幕宽度,这样文字才能循环滚动。
public class MarqueeTextView extends TextView {
/** 是否停止滚动 */
private boolean mStopMarquee;
private String mText;
private float mCoordinateX;
private float mTextWidth;
private float windowWith;
public MarqueeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setText(String text) {
this.mText = text;
mTextWidth = getPaint().measureText(mText);
DisplayMetrics displayMetrics