2012-04-20 131 views
18

我正在爲Android進行測驗,我希望有限的時間來回答每個問題。所以我想在從5到0(秒)倒數的答案下顯示一個ProgressBar。當它達到零時,我想要做一些事情。我有測驗和一切工作,我只是想添加ProgressBar。Android ProgressBar倒計時

在此先感謝!

回答

40

你可以在android中使用倒數計時器。

下面是一個例子,你可以參考Click Here

您可以在活動使用下面進度。

<ProgressBar 
    android:id="@+id/progressbar" 
    style="@android:style/Widget.ProgressBar.Horizontal" 
    android:max="100" 
    android:progress="0" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/bottom_header_relativelayout" 
    /> 

使用CountDownTimer象下面這樣的活動代碼。

ProgressBar mProgressBar; 
CountDownTimer mCountDownTimer; 
int i=0; 

mProgressBar=(ProgressBar)findViewById(R.id.progressbar); 
mProgressBar.setProgress(i); 
    mCountDownTimer=new CountDownTimer(5000,1000) { 

     @Override 
     public void onTick(long millisUntilFinished) { 
      Log.v("Log_tag", "Tick of Progress"+ i+ millisUntilFinished); 
      i++; 
      mProgressBar.setProgress((int)i*100/(5000/1000)); 

     } 

     @Override 
     public void onFinish() { 
     //Do what you want 
      i++; 
      mProgressBar.setProgress(100); 
     } 
    }; 
    mCountDownTimer.start(); 
+0

是否有進度的工作?因爲這就是我想要顯示它的方式。 – simtaxman 2012-04-20 07:05:28

+0

是否要在xml佈局上顯示它,我的意思是說你不想彈出右鍵進度。 – Herry 2012-04-20 07:09:35

+0

奧基謝謝你! – simtaxman 2012-04-20 07:14:23

25

你可以使用一個ObjectAnimator動畫的ProgressBar的進展:

ObjectAnimator animation = ObjectAnimator.ofInt(pb, "progress", 0, 100); 
animation.setDuration(5000); 
animation.setInterpolator(new DecelerateInterpolator()); 
animation.addListener(new Animator.AnimatorListener() { 
    @Override 
    public void onAnimationStart(Animator animator) { } 

    @Override 
    public void onAnimationEnd(Animator animator) { 
     //do something when the countdown is complete 
    } 

    @Override 
    public void onAnimationCancel(Animator animator) { } 

    @Override 
    public void onAnimationRepeat(Animator animator) { } 
}); 
animation.start(); 
+1

這是有道理的 – John 2015-06-08 13:04:20

1

無需XML聲明

ProgressDialog TempDialog; 
CountDownTimer CDT; 
int i =5; 

TempDialog = new ProgressDialog(Your_Class_Name.this); 
TempDialog.setMessage("Please wait..."); 
TempDialog.setCancelable(false); 
TempDialog.setProgress(i); 
TempDialog.show(); 

CDT = new CountDownTimer(5000, 1000) 
{ 
    public void onTick(long millisUntilFinished) 
    { 
     TempDialog.setMessage("Please wait.." + i + " sec"); 
     i--; 
    } 

    public void onFinish() 
    { 
     TempDialog.dismiss(); 
     //Your Code ... 
    } 
}.start();