2019独角兽企业重金招聘Python工程师标准>>>
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 kongyeeku@163.com
* @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 kongyeeku@163.com
* @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);
}
});
}
}