关闭

Android View MarqueeView 跑马灯效果

标签: MarqueeView 跑马灯效果
2234人阅读 评论(1) 收藏 举报
分类:

摘要:

制作跑马灯多行展示控件


要点:

1、跑马灯效果属性

android:ellipsize="marquee" //跑马灯效果
android:focusable="true"     //获取焦点
android:singleLine="true"    //单行

2、多行展示,把单行跑马灯动态组合成一个控件


使用:

marqueeView = (MarqueeView) findViewById(R.id.margueeView);
List<String> list = new ArrayList<String>();
list.add("推送消息1--收银机切记进行退出操作,进行关机");
list.add("推送消息2--收银机切记进行退出操作,进行关机");
list.add("推送消息3--收银机切记进行退出操作,进行关机");
list.add("推送消息4--收银机切记进行退出操作,进行关机");

marqueeView.setContentList(list);




控件1:单行跑马灯

public class MarqueeTextView extends TextView {
    /** 滚动次数 */
    private int marqueeNum = -1;//-1为永久循环。大于0是循环次数。

    public void setMarqueeNum(int marqueeNum) {
        this.marqueeNum = marqueeNum;
    }


    public MarqueeTextView(Context context) {
        super(context);
        setAttr();
    }

    public MarqueeTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setAttr();
    }

    public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setAttr();
    }

    /**
     * 始终获取焦点
     *
     * 跑马灯在TextView处于焦点状态的时候才会滚动
     * @return
     */
    @Override
    public boolean isFocused() {
        return true;
    }

    /**
     * 设置相关属性
     */
    private void setAttr(){
        this.setEllipsize(TextUtils.TruncateAt.MARQUEE);//设置跑马等效果
        this.setMarqueeRepeatLimit(marqueeNum);//设置跑马灯重复次数
        this.setSingleLine(true);//设置单行
    }
}


控件2:多行跑马灯

public class MarqueeView extends LinearLayout {
    private Context context;

    /**
     * 走马灯多条内容设置
     *
     * @param contentList
     */
    public void setContentList(List<String> contentList) {
        solveLayout(contentList);
    }

    public MarqueeView(Context context) {
        super(context);
        this.context = context;
        setAttr();
    }

    public MarqueeView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context = context;
        setAttr();
    }

    public MarqueeView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.context = context;
        setAttr();
    }

    /**
     * 默认设置为垂直布局
     */
    public void setAttr(){
       this.setOrientation(VERTICAL);
    }

    /**
     * 解析内容list
     * 添加child view
     *
     * @param strList
     */
    private void solveLayout(List<String> strList){
        if(null != strList){
            for(int i = 0; i < strList.size(); i++){
                MarqueeTextView marqueeView = new MarqueeTextView(context);
                marqueeView.setText(strList.get(i));
                addView(marqueeView);
            }
        }
    }
}



0
0
查看评论

MarqueeView源码简单分析笔记

跑马灯效果,大家可以去原作者浏览https://github.com/sfsheng0322/MarqueeView 下面看自定义控件的代码public class MarqueeView extends ViewFlipper { private Context mContext; ...
  • catROOM
  • catROOM
  • 2016-06-26 19:46
  • 2350

热门头条的实现—MarqueeView、ViewFlipper

类似于淘宝热门头条的实现——ViewFlipper。布局文件: <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_conten...
  • qq_27634797
  • qq_27634797
  • 2017-06-01 17:31
  • 469

Android自定义控件----电商项目常用的跑马灯YluoMarqueeView

先看效果图 最近有人问我要一个电商项目的跑马灯的控件.看了一下感觉实现起来不是很难,现在跟大家分享一下.不知道之前有没有人分享过.其实实现原理就是:先定好行高,然后计算出三行的位置. 分别是前一行,当前行和下一行的位置.然后在滚动的时候,就把当前行的位置往前一行的位置移动,下一行的位置就往当前行...
  • x87648510
  • x87648510
  • 2016-08-03 12:45
  • 966

android: 不需要焦点的TextView跑马灯 MarqueeTextView

之前在网上找了很多关于TextView的跑马灯效果实现的例子,实现起来都存在一些问题,例如一种是完全重画一个跑马灯,还有就是只设置TextView的相关属性使其具有跑马灯的效果,总的来说这两种方法都是可行的,但是都有其不足之处,第一种太复杂,实现起来比较麻烦,第二种呢,它只能在TextView获得焦...
  • jdsjlzx
  • jdsjlzx
  • 2012-07-18 18:21
  • 9930

第三方开源库:TextView相关

MarqueeViewDemogithub:https://github.com/gongwen/MarqueeViewLibrary 通过MarqueeFactory来提供各种样式的跑马灯View,支持自定义跑马灯ItemView。 下面是官方的README.md效果图使用Gradle:com...
  • ss1168805219
  • ss1168805219
  • 2017-02-13 16:36
  • 1163

仿淘宝首页的淘宝头条View垂直滚动

之前本来是打算做TextView垂直向上滚动的,后来发现一位大神做得很好,https://github.com/sfsheng0322/MarqueeView 孙福生大神,然后自己要用到多个View向上滚动,也就是类似淘宝首页头条的那种滚动,所以就按照那个思路想了系啊,可以把View拿来滚动,这样可...
  • dreamlivemeng
  • dreamlivemeng
  • 2016-07-21 09:43
  • 5811

Android View MarqueeView 跑马灯效果

摘要: 制作跑马灯多行展示控件 要点: 1、跑马灯效果属性 android:ellipsize="marquee" //跑马灯效果 android:focusable="true" //获取焦点 android:singleLine="...
  • Seekf_Dream
  • Seekf_Dream
  • 2016-08-30 22:28
  • 2234

自定义View之垂直翻页公告

俗名:垂直跑马灯 学名:垂直翻页公告 动态效果图: GitHub开源地址 APK下载地址 使用 Gradle: compile 'com.sunfusheng:marqueeview:1.0.0' 属性 At...
  • zhangli_
  • zhangli_
  • 2016-06-25 10:56
  • 1265

[Android] 不一样的走马灯,MarqueeManualView自定义走马灯效果的Android控件

MarqueeManualView是一个不一样的走马灯,可以控制速度、走马灯文字间隔、中间间断的时间长短、启动和暂停走马灯。比原生更有扩展性。
  • bluewindtalker
  • bluewindtalker
  • 2016-11-17 21:04
  • 863

跑马灯效果的MarqueeViewLibrary自定义布局

跑马灯效果我们应该在很多app都见过,效果看起来也很棒棒哒,昨天用了gongwen的MarqueeViewLibrary,效果还不错,但是踩了些坑,不过正常也是踩坑了才会想到来写篇博客来提醒自己,也给初次使用者一点帮助。 老规矩给出github地址:https://github.com/gongw...
  • Ycocol
  • Ycocol
  • 2017-12-06 17:46
  • 151
    个人资料
    • 访问:20747次
    • 积分:504
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:0篇
    • 译文:1篇
    • 评论:1条
    文章分类