android UI——跑马灯TextView

在android项目中我们常常会遇到类似游戏公告一样的通知推送。

当推送通知来的时候,出现一个半透明背景的textview,推送内容以跑马灯形式走过。

接下来就看看这个跑马灯textview。
友情提示:
这个跑马灯必须让内容超过一行显示的长度才会出现跑马灯效果,如果内容没有超出一行,则和普通textview一样。
跑马灯的需求是为了在textview一行内让用户看到所有的信息。
如果看博文的程序员是单纯为了跑马灯的动画效果,那么还要自己去处理内容没有超出一行时的动画。

public class AlwaysMarqueeTextView extends TextView {

    public AlwaysMarqueeTextView(Context context) {
        super(context);
        initView();
    }

    public AlwaysMarqueeTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView();
    }

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

    private void initView() {
        //跑马灯缺少以下两种任何一个属性都不行
        setEllipsize(TextUtils.TruncateAt.MARQUEE);//超出文本的省略号显示方式,这里选择没有省略号
        setSingleLine(true);//因为文字只能显示一行,在一行内实现跑马灯。所以设置属性单行模式
    }

    //跑马灯属性只有在获得焦点的情况下才有动画。
    //所以,这里我们让这个textview自动获得焦点
    @Override
    public boolean isFocused() {
        return true;
    }

    //还可以设置文本中的图片,类似通知跑马灯前的小喇叭图标
    public void getLeftDrawable(Drawable leftDrawable) {
        setCompoundDrawables(leftDrawable, null, null, null);
    }
}

这样,跑马灯效果的textview就不会因为获取不到焦点而没有动画效果了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值