天天看點

android:ellipsize = "marquee" 跑馬燈,Android View MarqueeView 跑馬燈效果

摘要:

制作跑馬燈多行展示控件

要點:

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);

}

}

}

}