摘要:

制作跑马灯多行展示控件


要点:

1、跑马灯效果属性

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

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


使用:

   
marqueeView = (MarqueeView) findViewById(R.id.margueeView);List list = new ArrayList();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 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 strList){        if(null != strList){            for(int i = 0; i < strList.size(); i++){                MarqueeTextView marqueeView = new MarqueeTextView(context);                marqueeView.setText(strList.get(i));                addView(marqueeView);            }        }    }}



更多相关文章

  1. android 让一个控件按钮居于底部的几种方法
  2. android控件之ImageButton android:scaleType
  3. Android布局LinearLayout子控件无法填充问题
  4. 关于GridView控件中设置大小的问题
  5. Android强制让某个控件获得焦点
  6. android 中的日历控件
  7. android创建自定义控件
  8. Android入门学习七:基本控件学习
  9. Android控件及API说明(三)

随机推荐

  1. Android(安卓)Progressbar进度条显示
  2. android软键盘问题
  3. Android(安卓)sqlite例子 有外键的使用
  4. android中颜色对应的值
  5. Android(安卓)Studio编译问题:ProcessExce
  6. #Android(安卓)Ticks#Mount a filesystem
  7. Android(安卓)- 插件使用整理 Android(安
  8. Android(安卓)权限管理框架
  9. Android(安卓)全局异常捕捉 + 本地异常日
  10. android 代码混淆总结