Android跑马灯效果实现的三种方式

1、使用系统默认的跑马灯效果 实现方法: 
(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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值