`
cenphoenix
  • 浏览: 161726 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

使用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> 
分享到:
评论

相关推荐

    通过progressbar监控以timer计时控制开始与结束的任务

    在Java中,我们可以使用`java.util.Timer`和`java.util.TimerTask`类来实现定时任务。`Timer`用于计划在特定时间执行的任务,而`TimerTask`是实现了Runnable接口的类,代表了一个可由`Timer`调度的任务。通过`Timer....

    android 进度条组件ProgressBar

    在这个例子中,我们看到使用了`Timer`和`TimerTask`来模拟进度更新,这并不是常规做法,但在教学示例中可以理解。 在Java代码中,我们可以创建一个`Handler`对象,通过发送消息来更新进度条的进度。例如,可以创建...

    自定义加载内容动画的对话框

    对于“简单的Timer计时器的运用”,在Android中,我们可以使用`java.util.Timer`和`java.util.TimerTask`来实现定时执行的任务。例如,你可能希望在数据加载期间每秒更新一次对话框的文本,以显示剩余的加载时间。...

    使用Timer实现网页匀速加载的进度条样式

    【使用Timer实现网页匀速加载的进度条样式】 在网页加载过程中,为了提供更好的用户体验,尤其是在网络速度较慢时,通常会使用进度条来显示网页加载的状态。本篇将介绍如何利用Java的Timer类来创建一个匀速加载的...

    android案例代码

    工作空间便于管理和版本控制,使用IDE(如Android Studio)进行开发时,会将项目结构和源代码保存在此目录下。 这些案例代码对于初学者来说,是理解Android开发的宝贵资源。通过学习和实践,开发者能够掌握Android...

    Android APK文件下载 并自动安装 显示文件下载进度,速度,以及花费时间

    使用定时器(TimerTask)定期更新UI。 以上就是实现Android APK文件下载并自动安装,以及显示下载进度、速度和花费时间的核心步骤。通过合理的设计和编程,你可以构建一个功能完善的下载管理系统,提升用户体验。

    答题java文档

    - 使用`Toast`显示简短的提示信息,`ProgressBar`显示游戏进度,`SeekBar`可能用于调整某些参数(比如难度或时间)。 综上所述,这个Java程序是一个Android平台上的答题游戏应用,包含UI设计、数据库操作、游戏...

    android小测、面试题

    Timer与TimerTask的使用方式 - **使用方式**: - 创建Timer实例。 - 创建TimerTask子类并重写`run()`方法。 - 调用Timer的`schedule()`方法安排任务执行。 #### 15. scheduleAtFixedRate与schedule的区别 - *...

    Android仿微信拍摄短视频

    总之,Android仿微信拍摄短视频主要涉及`MediaRecorder`、`Camera`、`SurfaceView`和`ProgressBar`的使用,通过自定义视图控件`MovieRecorderView`实现录制、显示进度和控制录制时间。这个功能的实现不仅需要对...

    Android自定义Dialog实现文字动态加载效果

    `TimerTask`每300毫秒执行一次,更新`TextView`的文字。`Handler`负责在主线程中更新UI,通过切换`count`的值来改变文字状态:“加载中.”、“加载中..”、“加载中...”。当`count`超过3时,将其重置为1,确保点的...

    定时器进度条

    在这个案例中,可能使用了java.util.Timer和TimerTask来实现定时更新进度条的功能。定时器可以设定在特定间隔执行任务,非常适合用于监控并更新进度条的状态,比如每过一定时间增加一定的进度值。 自定义View是...

    android项目实现带进度条的系统通知栏消息

    在这种情况下,使用带有进度条的系统通知栏消息是一种很好的解决方案。本文将详细介绍如何在Android项目中实现这样一个功能。 首先,我们需要创建一个通知栏消息的布局文件,例如`content_view.xml`。这个布局文件...

    应用启动页自定义跳转计时器View Demo

    应用启动页自定义跳转计时器View Demo: CircleTextProgressbar.java: ... import android.content.Context; import android.content.res.ColorStateList;...import android.content.res.TypedArray;...

Global site tag (gtag.js) - Google Analytics