ProgressBar

ProgressBar提供了如下方法操作进度:

setProgress(int) 设置进度的完成百分比
incrementProgressBy(int) 设置进度条的进度增加或减少。正数增加,负数减少

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<TextView 
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:text="任务完成的进度"
	/>
<!-- 定义一个水平进度条 -->
<ProgressBar
	android:id="@+id/bar"
 	android:layout_width="fill_parent" 
	android:layout_height="wrap_content"
	android:max="100"
	style="@android:style/Widget.ProgressBar.Horizontal"
	/>
<!-- 定义一个水平进度条,并改变轨道外观 -->
<ProgressBar
	android:id="@+id/bar2"
 	android:layout_width="fill_parent" 
	android:layout_height="wrap_content"
	android:max="100"
	android:progressDrawable="@drawable/my_bar"
	style="@android:style/Widget.ProgressBar.Horizontal"
	/>
</LinearLayout>

/res/drawable-mdpi/my_bar.xml

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
	<!-- 定义轨道的背景 -->
	<item android:id="@android:id/background"
		android:drawable="@drawable/no" />
	<!-- 定义轨道上已完成部分的样式 -->
	<item android:id="@android:id/progress"
		android:drawable="@drawable/ok" />
</layer-list>

MainActivity

package org.crazyit.progress;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ProgressBar;

/**
 * Description:
 * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee [email protected]
 * @version  1.0
 */
public class ProgressBarTest extends Activity
{
	//该程序模拟填充长度为100的数组
	private int[] data = new int[100];
	int hasData = 0;
	//记录ProgressBar的完成进度
	int status = 0;	
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		final ProgressBar bar = (ProgressBar) findViewById(R.id.bar);
		final ProgressBar bar2 = (ProgressBar) findViewById(R.id.bar2);
		//创建一个负责更新的进度的Handler
		final Handler mHandler = new Handler()
		{
			@Override
			public void handleMessage(Message msg)
			{
				//表明消息是由该程序发送的。
				if (msg.what == 0x111)
				{
					bar.setProgress(status);
					bar2.setProgress(status);
				}
			}
		};
		//启动线程来执行任务
		new Thread()
		{
			public void run()
			{
				while (status < 100)
				{
					// 获取耗时操作的完成百分比
					status = doWork();
					// 发送消息到Handler
					Message m = new Message();
					m.what = 0x111;
					// 发送消息
					mHandler.sendMessage(m);
				}
			}
		}.start();
	}
	//模拟一个耗时的操作。
	public int doWork()
	{
		//为数组元素赋值
		data[hasData++] = (int)(Math.random() * 100);
		try
		{
			Thread.sleep(100);
		}
		catch (InterruptedException e)
		{
			e.printStackTrace();
		}
		return hasData;
	}
}

显示在标题上的进度条

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="horizontal"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<Button
	android:id="@+id/bn01"  
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:layout_gravity="center_horizontal"
	android:text="显示"
	/>
<Button
	android:id="@+id/bn02"  
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:layout_gravity="center_horizontal"
	android:text="隐藏"
	/>	
</LinearLayout>

MainActivity

package org.crazyit.progressbar;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;

/**
 * Description:
 * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee [email protected]
 * @version  1.0
 */
public class TitleProgressBar extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
//		//设置窗口特征:启用显示进度的进度条
//		requestWindowFeature(Window.FEATURE_PROGRESS);
		//设置窗口特征:启用不显示进度的进度条
		requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
		setContentView(R.layout.main);
		Button bn1 = (Button)findViewById(R.id.bn01);
		Button bn2 = (Button)findViewById(R.id.bn02);
		bn1.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View source)
			{
				//显示不带进度的进度条。
				setProgressBarIndeterminateVisibility(true);
				//显示带进度的进度条。
				setProgressBarVisibility(true);
				//设置进度条的进度
				setProgress(4500);	
				
			}
		});
		bn2.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View source)
			{
				//隐藏不带进度的进度条。
				setProgressBarIndeterminateVisibility(false);
				//隐藏带进度的进度条。
				setProgressBarVisibility(false);
			}
		});	
	}
}


你可能感兴趣的:(ProgressBar)