Android View MarqueeView 跑马灯效果
16lz
2021-01-23
摘要:
制作跑马灯多行展示控件
要点:
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);//设置单行 }}
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); } } }}
更多相关文章
- android 让一个控件按钮居于底部的几种方法
- android控件之ImageButton android:scaleType
- Android布局LinearLayout子控件无法填充问题
- 关于GridView控件中设置大小的问题
- Android强制让某个控件获得焦点
- android 中的日历控件
- android创建自定义控件
- Android入门学习七:基本控件学习
- Android控件及API说明(三)