web-dev-qa-db-fra.com

Android Compte à rebours ProgressBar

Je fais un quiz pour Android et je veux un temps limité pour répondre à chaque question. Je veux donc afficher un ProgressBar sous les réponses qui décompte, par exemple, de 5 à 0 ( Et quand il atteint zéro, je veux faire quelque chose. J'ai le quiz et tout fonctionne, je veux juste ajouter la barre de progression.

Merci d'avance!

32
simtaxman

vous pouvez utiliser le compte à rebours dans Android.

Voici un exemple que vous pouvez consulter Cliquez ici

vous pouvez utiliser ci-dessous ProgressBar dans votre activité.

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

Utilisez le code CountDownTimer comme ci-dessous dans votre activité.

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();
51
Herry

Vous pouvez utiliser un ObjectAnimator pour animer la progression du 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();
34
adamdport

Pas besoin de déclaration 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();
2
msl