唯一のスマートボーイ:
私は私が20秒間ゆっくりと私のプログレスバーをインクリメントするために使用したいと思い、次のコードを持っています
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);
}
私の問題は、これが唯一のloaderLabelに0%を示してしまい、その後、何もせずにフリーズするということです。私は前にこのコードを試してみましたが、それは唯一のloaderLabelに100%を点滅し、プログレスバーを埋めた後、次の画面へ進みます。
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);
}
私は20,000の遅延を増やした場合、それはゼロでフリーズ、私が間違って何をしているのだろうか?
Otema:
過酷なクマーによって与えられた回答に基づいて、私はあなたが次のことを行うことをお勧め
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();
}
それは私が乗算5によって100に進捗状況を取得するには、それ以外の場合は20で停止するという問題ノートを解決する必要があります