2012-04-20 12 views
18

Estoy haciendo una prueba para Android y quiero un tiempo limitado para responder cada pregunta. Por lo tanto, quiero mostrar una ProgressBar debajo de las respuestas con una cuenta regresiva de, por ejemplo, 5 a 0 (segundos). Y cuando llega a cero, quiero hacer algunas cosas. Tengo el cuestionario y todo funciona, solo quiero agregar ProgressBar.Android ProgressBar countdown

¡Gracias de antemano!

Respuesta

40

puede usar el temporizador de cuenta regresiva en android.

He aquí un ejemplo que se puede referir Click Here

puede utilizar a continuación ProgressBar en su actividad.

<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" 
    /> 

Use CountDownTimer Como abajo código en tu actividad.

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

funciona eso con un ProgressBar? Porque así es como quiero mostrarlo. – simtaxman

+0

¿Desea mostrarlo en el diseño xml, quiero decir que no desea mostrar con Progress Right? – Herry

+0

¡Okey, gracias! – simtaxman

25

Se podría utilizar un ObjectAnimator para animar el progreso de la 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

esto tiene sentido – John

1

No hay necesidad de declaración 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();