Android 动态生成 步骤 ProgressBar

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>

源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值