使用TimerTask控制ProgressBar

有很多朋友使用Thread进行Progress的进度控制,这里我们使用Timer和TimerTask控制ProgressBar。

实现效果: 在进度75%之前,每秒钟有5%的进度,在75%之后每秒有1%的进度。

需要的知识:
1、ProgressBar
2、Thread
3、Timer和TimerTask

Activity代码:

package cc.androidos.pb;import java.util.Timer; 
import java.util.TimerTask;import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.ProgressBar;
/**
* <p>
* Progress Bar test
* </p>
* @author SinFrancis Wong
* @version 1.0
* @since 2009-3-10
*/
public class ProgressBarTest extends Activity
{
/** Called when the activity is first created. */
private ProgressBar mProgress = null;
/**Static for control the progress*/
public static int mProgressStatus = 0;
/**Handler for post message into OS and change UI */
private Handler mHandler = new Handler(); @Override
public void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
//set the View
setContentView( R.layout.main );

mProgress = ( ProgressBar ) findViewById( R.id.ProgressBar01 );

//Progress Bar Click !
mProgress.setOnClickListener( new View.OnClickListener()
{ @Override
public void onClick( View arg0 )
{
ProgressBarTest.mProgressStatus = 0;
// a new Timer
Timer tt = new Timer();
//Schedule the TimerTash , delay is 0 ms, every 1000ms execute the action
tt.schedule( new ReTimerTask(), 0, 1 * 1000 );

//Scout the progress
scoutProgress.start();
}
} ); } /**
* Scout the progress
*/
Thread scoutProgress = new Thread( new Runnable()
{
public void run()
{
while ( mProgressStatus < 100 )
{
// Update the progress bar
mHandler.post( new Runnable()
{
public void run()
{
mProgress.setProgress( mProgressStatus );
}
} );
}
}
} );
}
/**
* A new TimerTask
* @author SinFrancis Wong
* @version 1.0
* @since 2009-3-10
*/
class ReTimerTask extends TimerTask
{
@Override
public void run()
{ //以下是监测进度到什么位置,如果在75范围内就对进度+5,如果在75----100之间就对进度+1,否则取消此任务
if( ProgressBarTest.mProgressStatus < 75 )
{
ProgressBarTest.mProgressStatus += 5;
System.err.println( "<75......." + ProgressBarTest.mProgressStatus );
}
else if( ProgressBarTest.mProgressStatus < 100
&& ProgressBarTest.mProgressStatus >= 75 )
{
ProgressBarTest.mProgressStatus += 1; System.err.println( ">75 || <100......."
+ ProgressBarTest.mProgressStatus );
}
else if( ProgressBarTest.mProgressStatus >= 100 )
{
System.err
.println( ">100......." + ProgressBarTest.mProgressStatus );
cancel();
}
}
}



布局文件代码:
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
androidrientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
<progressBar android:id="@+id/ProgressBar01"
android:layout_width="100px"
android:layout_height="20px"
android:max="100"
android:progress="0"
style="?android:attr/progressBarStyleHorizontal"
//style设置是为了使得ProgressBar变成进度条而不是圆圈 >
</ProgressBar>
</LinearLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值