有很多朋友使用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>
分享到:
相关推荐
Android中使用定时器TimerTask类介绍.txt Android中使用定时器TimerTask类介绍.txt
本文档主要讲述的是Java中的Timer和TimerTask的使用;Timer是一个定时器类,通过该类可以为指定的定时任务进行配置。TimerTask类是一个定时任务类,该类实现了Runnable接口,而且是一个抽象类。希望本文档会给有需要...
Timer和TimerTask的使用 关于java函数中timer类的相关代码 和使用
利用jdk中的timer和timertask来实现,每天定时执行的任务。
Android Timer TimerTask Handler 三者结合实现 数据更新与View更新的同步。 一个不错的机制。
一个不错的android入门实例源码,亲测可用
今天讲下如何定时执行后台任务。 当然还是那句话,方法有好几种,这里就讲下我认为最好用的。...主要使用到TimerTask和Service,相信大家都接触过,大家可以看下TimerTask的源码。这里是一个简单的TimerTaskDemo。
下面是一个在Android中使用定时器Timer和TimerTask的启动,停止,暂停,继续等操作的demo。 需要注意的问题主要有两点: 1、Timer和TimerTask在调用cancel()取消后不能再执行 schedule语句 2、只能在UI主线程中更新...
通过java的TimerTask与Timer设计时间监控,写了一个测试类,帮助新人学习。
NULL 博文链接:https://zhouhaitao.iteye.com/blog/1199750
用Handler和Timertask实现一个简单的定时器,一个简单的demo
java类Timer和TimerTask的使用.doc
在 TimerManager 这个类里面,大家一定要注意 时间点的问题。如果你设定在凌晨2点执行任务。但你是在2点以后 发布的程序或是重启过服务,那这样的情况下,任务会立即执行,而不是等到第二天的凌晨2点执行。...
博客附属代码http://blog.csdn.net/nacl025/article/details/46892481
spring + jdk TimerTask定时器 完整可运行
Timer与TimerTask(计时器)
java类Timer和TimerTask的使用.pdf
在控件上动态显示内容,这里使用的是TextView,其他控件可以使用相同的方法。
spring 定时器 内含TimerTask实现和Quartz实现两种方式
今天讲下如何定时执行后台任务。 主要使用到TimerTask,相信大家都用过,大家可以看下TimerTask的源码。这里是一个简单的TimerTaskDemo。