Android之跑马灯

作者: 江南皮皮 | 来源:发表于2018-07-18 19:34 被阅读0次

    跑马灯在项目了其实应用的还比较多,特别是做多媒体的时候,音乐视频蓝牙等等经常用到。

    比如音乐的专辑信息,蓝牙通话记录,以及视频列表等等...。

    不好直接上项目效果图所以就做了一个简单的Demo放手机上显示效果了。

    单行跑马灯效果

    做起来也很简单,在布局文件里面设置几个属性就OK.

    先上效果图:


    18e4017761df3b42cdf56619f51dcdf1.gif

    设置如下。

    //设置为跑马灯显示

    android:ellipsize="marquee"

    //获取焦点

    android:focusable="true"

    //可以通过toucth来获得focus

    android:focusableInTouchMode="true"

    //单行显示文字

    android:singleLine="true"

    //设置重复的次数
    android:marqueeRepeatLimit="marquee_forever"

      <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:singleLine="true"
            android:marqueeRepeatLimit="marquee_forever"
            android:text="eason.chen.eason.chen.eason.chen.eason.chen.eason.chen.eason.chen.eason.chen" />
    

    多行跑马灯效果图

    其实主要是想讲下多行跑马灯,首先直接上图:


    68810ab5960062cbb36f7d7383a30e6f.gif

    如果要设置多行的话

    首先我们写一个类,继承TextView这个类,实现它的构造方法,重写isFocused()方法 ,将它的返回值都为true

    如果有弹窗之类的导致无作用的话我们可以直接重写onWindowFocusChanged()方法,将super方法屏注释掉。

    import android.content.Context;
    import android.graphics.Rect;
    import android.util.AttributeSet;
    import android.widget.TextView;
     
    public class MarqueeTextView extends TextView{
     
        public MarqueeTextView(Context context) {
            super(context);
            // TODO Auto-generated constructor stub
        }
     
        public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            // TODO Auto-generated constructor stub
        }
     
        public MarqueeTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
            // TODO Auto-generated constructor stub
        }
     
        @Override
        public boolean isFocused() {
            // TODO Auto-generated method stub
            return true;
        }
        @Override
        protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
            // TODO Auto-generated method stub
    //      super.onFocusChanged(focused, direction, previouslyFocusedRect);
        }
        @Override
        public void onWindowFocusChanged(boolean hasWindowFocus) {
            // TODO Auto-generated method stub
    //      super.onWindowFocusChanged(hasWindowFocus);
        }
     
    }
     
    

    核心代码就是isFocused()和onWindowFocusChanged()方法。

    布局文件如下:

    其实就和前面是一样的 当然也可以在代码里面设置这些属性,布局里面就不用设置了。

        <combd.textviewmarquee.MarqueeTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:singleLine="true"
            android:marqueeRepeatLimit="marquee_forever"
            android:text="eason.chen.eason.chen.eason.chen.eason.chen.eason.chen.eason.chen.eason.chen" />
    

    相关文章

      网友评论

        本文标题:Android之跑马灯

        本文链接:https://www.haomeiwen.com/subject/kleapftx.html