摘要:
制作跑馬燈多行展示控件
要點:
1、跑馬燈效果屬性
android:ellipsize="marquee" //跑馬燈效果
android:focusable="true" //擷取焦點
android:singleLine="true" //單行
2、多行展示,把單行跑馬燈動态組合成一個控件
使用:
marqueeView = (MarqueeView) findViewById(R.id.margueeView);
Listlist = 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();
}
@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;
public void setContentList(ListcontentList) {
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);
}
private void solveLayout(ListstrList){
if(null != strList){
for(int i = 0; i < strList.size(); i++){
MarqueeTextView marqueeView = new MarqueeTextView(context);
marqueeView.setText(strList.get(i));
addView(marqueeView);
}
}
}
}