跑马灯

Android系统中TextView实现跑马灯效果,必须具备以下几个条件:
1、android:ellipsize=”marquee”
2、TextView必须单行显示,即内容必须超出TextView大小
3、TextView要获得焦点才能滚动
XML代码:
android:ellipsize="marquee", android:singleLine="true"
Java代码:
mTVText.setText("哼唱接撒砥砺风节雷锋精神http://orgcent.com/,很长很长很长很长很长很长的数据");
mTVText.setSingleLine(true);
mTVText.setEllipsize(TruncateAt.MARQUEE);
PS: TextView.setHorizontallyScrolling(true); //让文字可以水平滑动
TextView还可以设置跑马灯效果的滚动次数,如下:
XML代码设置:
android:marqueerepeatlimit="1"。1代表1次,-1代表无限循环。
Java代码设置:
mTVText.setMarqueeRepeatLimit(-1);



当有些情况下需要是文字一直滚动以引起用户注意,这是可以使用派生TextView,

重载onFocusChanged,onWindowFocusChanged,isFocused 这三个方法。

修改一下本例,添加一个ScrollAlwaysTextView类:

public class ScrollAlwaysTextView extends TextView {

 public ScrollAlwaysTextView(Context context) {
 this(context, null);
 }

 public ScrollAlwaysTextView(Context context, AttributeSet attrs) {
 this(context, attrs, android.R.attr.textViewStyle);
 }

 public ScrollAlwaysTextView(Context context, AttributeSet attrs,
 int defStyle) {
 super(context, attrs, defStyle);
 }

 @Override
 protected void onFocusChanged(boolean focused, int direction,
 Rect previouslyFocusedRect) {
 if (focused)
 super.onFocusChanged(focused, direction, previouslyFocusedRect);
 }

 @Override
 public void onWindowFocusChanged(boolean focused) {
 if (focused)
 super.onWindowFocusChanged(focused);
 }

 @Override
 public boolean isFocused() {
 return true;
 }
}




你可能感兴趣的:(android)