1、使用系统默认的跑马灯效果 实现方法:
(1)在xml文件加入一个TextView,并设置属性如下,其中红色的部分是最关键部分
(2)通过设置xml中的属性,该TextView已经具备了跑马灯的效果。但是,此种情况下,只有当TextView获取到焦点时,才能出现跑马灯效果,一旦丢失焦点,跑马灯效果不再,控件从开始显示一定宽度的字符。其效果如下图例所示。 主程序代码:
finalTextViewtvCircle = (TextView)
findViewById(R.id.textView_showmsg_circle);
tvCircle.setText("2.2.1. 紧急通知类消息紧急通知类型的消息主要指恶劣天
气警报或政府部门授权下发的紧急事件通知。");
2、自定义类,派生于TextView,重新实现函数,使其在丢失焦点的情况下也可更新 (1)自定义派生类,派生于TextView。实现接口函数,使其在丢失焦点的情况下,返回true,从而实现在丢失焦点的情况下也可以实现跑马灯效果。实现代码如下:
publicclassMarqueenTextView1extendsTextView { public MarqueenTextView1(Context context, AttributeSetattrs) { super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
protectedvoidonFocusChanged(boolean focused, int direction, RectpreviouslyFocusedRect) {
if(focused)
super.onFocusChanged(focused, direction, previouslyFocusedRect); }
@Override
publicvoidonWindowFocusChanged(booleanhasWindowFocus) { if(hasWindowFocus)
super.onWindowFocusChanged(hasWindowFocus); }
@Override
publicbooleanisFocused() {
returntrue;//始终返回true }
}
(2)在xml文件中,使用该自定义的派生控件即可,定义的关键部分与第一种方法类似。代码如下:
android:focusableInTouchMode="true" android:scrollHorizontally="true" />
(3)
(1)在xml文件加入一个TextView,并设置属性如下,其中红色的部分是最关键部分
<pre name="code" class="html"><TextView
android:id="@+id/textView_showmsg_circle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:textColor="#ff0000"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:background="#ffffff"
android:textSize="20dp"
android:focusable="true"
android:focusableInTouchMode="true"
android:scrollHorizontally="true" />
(2)通过设置xml中的属性,该TextView已经具备了跑马灯的效果。但是,此种情况下,只有当TextView获取到焦点时,才能出现跑马灯效果,一旦丢失焦点,跑马灯效果不再,控件从开始显示一定宽度的字符。其效果如下图例所示。 主程序代码:
finalTextViewtvCircle = (TextView)
findViewById(R.id.textView_showmsg_circle);
tvCircle.setText("2.2.1. 紧急通知类消息紧急通知类型的消息主要指恶劣天
气警报或政府部门授权下发的紧急事件通知。");
2、自定义类,派生于TextView,重新实现函数,使其在丢失焦点的情况下也可更新 (1)自定义派生类,派生于TextView。实现接口函数,使其在丢失焦点的情况下,返回true,从而实现在丢失焦点的情况下也可以实现跑马灯效果。实现代码如下:
publicclassMarqueenTextView1extendsTextView { public MarqueenTextView1(Context context, AttributeSetattrs) { super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
protectedvoidonFocusChanged(boolean focused, int direction, RectpreviouslyFocusedRect) {
if(focused)
super.onFocusChanged(focused, direction, previouslyFocusedRect); }
@Override
publicvoidonWindowFocusChanged(booleanhasWindowFocus) { if(hasWindowFocus)
super.onWindowFocusChanged(hasWindowFocus); }
@Override
publicbooleanisFocused() {
returntrue;//始终返回true }
}
(2)在xml文件中,使用该自定义的派生控件即可,定义的关键部分与第一种方法类似。代码如下:
<com.example.marqueetextview.MarqueenTextView1
android:id="@+id/textView_showmsg_circle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:textColor="#ff0000"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever" android:background="#ffffff" android:textSize="20dp" android:focusable="true"android:focusableInTouchMode="true" android:scrollHorizontally="true" />
(3)