Android 动态生成 步骤 ProgressBar
package com.example.textline;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
private ProgressBar bar;
private static final String[] STR = { "开始", "第一步", "第二步", "第三步", "第四步",
"结束" };
private static final int[] ID = { R.id.button1, R.id.button2, R.id.button3,
R.id.button4, R.id.button5 };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bar = (ProgressBar) findViewById(R.id.bar);
bar.initView(STR, R.drawable.b, R.drawable.c, 0);
for (int i = 0; i < ID.length; i++) {
findViewById(ID[i]).setOnClickListener(new C());
}
}
class C implements OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
bar.change(0);
break;
case R.id.button2:
bar.change(1);
break;
case R.id.button3:
bar.change(2);
break;
case R.id.button4:
bar.change(3);
break;
case R.id.button5:
bar.change(4);
break;
default:
break;
}
}
}
}
package com.example.textline;
import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
/**
* 步骤进度条
*
* @author liujiandong
*
*/
public class ProgressBar extends RelativeLayout {
private Context mContext;
private LinearLayout layout;
private LinearLayout layoutText;
public ProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
LayoutInflater.from(context).inflate(R.layout.my_progressbar, this);
layout = (LinearLayout) findViewById(R.id.image_layout);
layoutText = (LinearLayout) findViewById(R.id.text_layout);
}
/**
* 单个item view 数组
*/
private View[] vs;
/**
*
* @param str
* 步骤文字
* @param smallImageID
* 小图ID
* @param bigImageID
* 大图ID
* @param init
* 初始化步骤
*/
public void initView(String[] str, int smallImageID, int bigImageID,
int init) {
// 测量屏幕宽度
WindowManager wm = (WindowManager) getContext().getSystemService(
Context.WINDOW_SERVICE);
// 计算黑线
int margin = wm.getDefaultDisplay().getWidth() / str.length / 2;
TextView line = new TextView(mContext);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, 5);
lp.setMargins(margin, 0, margin, 0);
line.setLayoutParams(lp);
line.setBackgroundColor(Color.BLACK);
layoutText.addView(line);
vs = new View[str.length];
// 初始化item 添加到view[]
for (int i = 0; i < str.length; i++) {
vs[i] = View.inflate(mContext, R.layout.item, null);
ImageView small = (ImageView) vs[i]
.findViewById(R.id.progress_item_small);
ImageView big = (ImageView) vs[i]
.findViewById(R.id.progress_item_big);
TextView textView = (TextView) vs[i]
.findViewById(R.id.progress_item_name);
small.setImageResource(smallImageID);
small.setVisibility(View.VISIBLE);
big.setImageResource(bigImageID);
big.setVisibility(View.INVISIBLE);
textView.setText(str[i]);
vs[i].setLayoutParams(new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1));
layout.addView(vs[i]);
}
change(init);
}
/**
* 改变步骤
*
* @param 步骤数
*/
public void change(int number) {
for (int i = 0; i < vs.length; i++) {
if (i != number) {
changeSmall(i);
} else {
changeBig(i);
}
}
}
/**
* 获取view[]
*
* @return
*/
public View[] getView() {
return vs;
}
/**
* 改变为小图
*
* @param i 步骤数
*/
private void changeSmall(int i) {
ImageView small = (ImageView) vs[i]
.findViewById(R.id.progress_item_small);
small.setVisibility(View.VISIBLE);
ImageView big = (ImageView) vs[i].findViewById(R.id.progress_item_big);
big.setVisibility(View.INVISIBLE);
// 文字隐藏显示控制
TextView textView = (TextView) vs[i]
.findViewById(R.id.progress_item_name);
textView.setVisibility(View.INVISIBLE);
}
/**
* 改变为大图
*
* @param i 步骤数
*/
private void changeBig(int i) {
ImageView small = (ImageView) vs[i]
.findViewById(R.id.progress_item_small);
small.setVisibility(View.INVISIBLE);
ImageView big = (ImageView) vs[i].findViewById(R.id.progress_item_big);
big.setVisibility(View.VISIBLE);
// 文字隐藏显示控制
TextView textView = (TextView) vs[i]
.findViewById(R.id.progress_item_name);
textView.setVisibility(View.VISIBLE);
}
}
package com.example.textline;
import android.widget.ImageView;
import android.widget.TextView;
public class Item {
private ImageView imageView;
private TextView lineView;
private TextView textView;
private String text;
private int flag = 0;
public TextView getLineView() {
return lineView;
}
public void setLineView(TextView lineView) {
this.lineView = lineView;
}
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}
public ImageView getImageView() {
return imageView;
}
public void setImageView(ImageView imageView) {
this.imageView = imageView;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public TextView getTextView() {
return textView;
}
public void setTextView(TextView textView) {
this.textView = textView;
}
public Item() {
super();
}
public Item(ImageView imageView, TextView textView, String text) {
super();
this.imageView = imageView;
this.textView = textView;
this.text = text;
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/text_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:orientation="horizontal" >
</LinearLayout>
<LinearLayout
android:id="@+id/image_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:orientation="horizontal" >
</LinearLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/progress_item_small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:visibility="invisible" />
<ImageView
android:id="@+id/progress_item_big"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:visibility="invisible" />
<TextView
android:id="@+id/progress_item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/progress_item_big"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:visibility="invisible" />
</RelativeLayout>
源码