barra de progreso no Bootstrap incremento en Android

El único inteligente Boy:

Tengo el siguiente código me gustaría utilizar para incrementar mi barra de progreso lentamente durante 20 segundos

    public void progressAnimator(){
    final long period = 1000;
    timer=new Timer();
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            //this repeats every 100 ms
            if (counter<100){
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        loaderLabel.setText(String.valueOf(counter)+"%");
                    }
                });
                mProgress.setProgress(counter);
                counter++;
            }
            else{
                //closing the timer
                timer.cancel();
                Intent intent =new Intent(SplashActivity.this,MainActivity.class);
                startActivity(intent);
                // close this activity
                finish();
            }
        }
    }, period);
}

Mi problema es que esto sólo termina indicando el 0% en el loaderLabel y luego se congela sin hacer nada. Había probado a principios de este código, pero sólo parpadea el 100% en el loaderLabel y llena la barra de progreso y luego avanza a la siguiente ventana.

     public void progressAnimator(){
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            for( counter =1; counter<=100; counter ++) {
                System.out.println(counter);
                mProgress.setProgress(counter);
                loaderLabel.setText(getResources().getString(R.string.loading) + " " + counter + " " + getResources().getString(R.string.percentSymbol));
                if (counter == 100) {
                    Toast.makeText(SplashActivity.this, R.string.welcome, Toast.LENGTH_LONG).show();
                    Intent loadMain = new Intent(SplashActivity.this, MainActivity.class);
                    startActivity(loadMain);
                    finish();
                }
            }
        }
    }, 100);

}

Si aumento el retraso de 20.000 a continuación, se congela a cero, ¿Qué podría estar haciendo mal?

Otema:

En base a la respuesta dada por Kumar Harsh, yo sugeriría que hacer lo siguiente

         public void progressAnimator(){
            new CountDownTimer(total_duration, duration_of_one_step) {
                public void onTick(long millisUntilFinished) {
                    // code to be executed on every iteration
                    loaderLabel.setText(MessageFormat.format("{0} {1} {2}", getResources().getString(R.string.loading), ((total_duration - millisUntilFinished) / 1000) * 5, getResources().getString(R.string.percentSymbol)));
                    mProgress.setProgress((int) ((total_duration - millisUntilFinished) / 1000)*5);
                }
                public void onFinish() {
                    //code to be executed on completing the timer
                    Toast.makeText(SplashActivity.this, R.string.welcome, Toast.LENGTH_LONG).show();
                    Intent loadMain = new Intent(SplashActivity.this, MainActivity.class);
                    startActivity(loadMain);
                    finish();
                }
            }.start();
        }

Esto debería resolver su problema nota que multiplicar por 5 para conseguir el progreso a 100 de lo contrario, se detendrá en 20

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=373920&siteId=1
Recomendado
Clasificación