android 自定义跑马灯效果,自由控制跑马灯 你未必知道这样用

众所周知 android sdk中提供了跑马灯效果,下面我来简单介绍一下该效果的应用场景:

       就是在TextView以及TextView的子控件中(如还有其他控件支持请留言,必跟新)文本显示不全的情况,使其文本内容滚动显示,达到用户可以看到全部文本信息的效果。

下面我就跟大家分析其几种用法(最后一种你未必用过,也是本文的重点):

     今天就以TextView为例 

1.首先想要你的控件支持跑马灯效果,要先在xml中配置红色部分代码:

       <TextView 
         
         android:layout_height="150dp"
         android:layout_width="150dp"
         android:gravity="center" 
         android:textSize="2dp"
         android:marqueeRepeatLimit="marquee_forever"
         android:ellipsize="marquee"
         android:singleLine="true"
/ >  

在配置完红色部分代码后你的TextView就具有跑马灯效果了(必须要获取到焦点才会有效,如果你想不获取焦点也有效果那该怎么办呢,请继续往下看)。

2.如果你想要你的控件在未获取焦点时也有跑马灯效果,那就请重写你的TextView控件,

重写isFocused方法,返回true; 重点在红色标志区域  代码如下:

import android.content.Context;
import android.util.AttributeSet;

public class FocusLabelTextView extends TextView {

 public FocusLabelTextView(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);
  // TODO Auto-generated constructor stub
 }

 public FocusLabelTextView(Context context, AttributeSet attrs) {
  super(context, attrs);
  // TODO Auto-generated constructor stub
 }

 public FocusLabelTextView(Context context) {
  super(context);
  // TODO Auto-generated constructor stub
 }


 @Override
 public boolean isFocused() {
  // TODO Auto-generated method stub

//返回true的意思是,该控件被欺骗为 获取焦点
  return true;

//return super.isFocused();
 }

}


3.第三种方法乃是本文的重点,前面两种方法目前已经比较常见。 第二种方法有个缺点就是 无法随时控制跑马灯 停和跑, 而且跑马灯在跑的时候很耗资源。

所以我就想是否有方法可以由我们自己来控制跑马灯的 停和跑呢? 经过研究终于被我找到了:

在配置了1中的xml信息后, 你可以在你需要跑马灯跑的时候调用TextView.setSelected(true); 停的时候调用TextView.setSelected(false)。这样就可以自由的控制了。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值