如何使进度条平滑?
问题描述:
我创建了一个倒计时活动,进度条移动几秒钟,但我想使进度条更流畅。请帮助我。 这是我的代码,如果你想然后我可以上传我的应用程序。 当进度条减少一秒钟时,进度条随秒数移动进度条增加我希望进度条随毫秒增加并平滑移动。如何使进度条平滑?
package com.cinegoes.www.daily10exercise;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.CountDownTimer;
import com.cinegoes.www.daily10exercise.R;
import com.cinegoes.www.daily10exercise.SaveRestTime;
import com.cinegoes.www.daily10exercise.button3;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import java.util.concurrent.TimeUnit;
import static com.cinegoes.www.daily10exercise.SaveRestTime.mypreference;
/**
* Created by ever on 7/25/2017.
*/
public class t1 extends Activity implements View.OnClickListener {
private CountDownTimer countDownTimer;
private boolean timerStarted = false;
private Button buttonStart;
public TextView textView;
private ProgressBar progressBarCircle;
private final long startTime = 30 * 1000;
private final long interval = 1 * 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.timer);
buttonStart = (Button) this.findViewById(R.id.button);
progressBarCircle = (ProgressBar) findViewById(R.id.progressBarCircle);
buttonStart.setOnClickListener(this);
textView = (TextView) this.findViewById(R.id.textView);
countDownTimer = new CountDownTimerActivity(startTime, interval);
textView.setText(textView.getText() + String.valueOf(startTime/1000));
}
@Override
protected void onStart() {
super.onStart();
countDownTimer.start();
timerStarted = true;
setProgressBarValues();
}
@Override
public void onClick(View v) {
Intent i = new Intent(this, pushupe1.class);
startActivity(i);
finish();
}
public class CountDownTimerActivity extends CountDownTimer {
public CountDownTimerActivity(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish() {
textView.setText(msTimeFormatter(startTime));
textView.setText("Time's up!");
setProgressBarValues();
Intent i = new Intent(getBaseContext(), pushupe1.class);
startActivity(i);
finish();
}
@Override
public void onTick(long millisUntilFinished) {
textView.setText(msTimeFormatter(millisUntilFinished));
progressBarCircle.setProgress((int) (millisUntilFinished/1000));
}
}
private void setProgressBarValues() {
progressBarCircle.setMax((int) startTime/1000);
progressBarCircle.setProgress((int) startTime/1000);
}
private String msTimeFormatter(long milliSeconds) {
String ms = String.format("%02d:%02d",
TimeUnit.MILLISECONDS.toMinutes(milliSeconds) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(milliSeconds)),
TimeUnit.MILLISECONDS.toSeconds(milliSeconds) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(milliSeconds)));
return ms;
}
}
答
考虑让您的时间间隔更小,并为您的进度条的进度提供更大范围的值。
下面是我用于更新进度条进度的一些kotlin代码。
progressBar.max = INIT_TIME * 1000
countDown = object : CountDownTimer((INIT_TIME * 1000).toLong(), 10) {
override fun onTick(millisUntilFinished: Long) {
progressBar.progress = millisUntilFinished.toInt()
}
override fun onFinish() {}
}.start()
正如你所看到的,我的时间间隔较短,并且在很多我的进度条范围内的进度值,允许使用更平滑的进度条动画。
添加你的代码你写的 –
没有任何代码我们不能做的mumbo jumbo:D –
可能是倒计时的问题,因为在倒计时按钮点击倒计时活动完成,但我不取消定时器,所以当定时器完成然后它打开我在完成方法中设置的新活动 – Varinder