如何使进度条平滑?

问题描述:

我创建了一个倒计时活动,进度条移动几秒钟,但我想使进度条更流畅。请帮助我。 这是我的代码,如果你想然后我可以上传我的应用程序。 当进度条减少一秒钟时,进度条随秒数移动进度条增加我希望进度条随毫秒增加并平滑移动。如何使进度条平滑?

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; 


} 


} 
+0

添加你的代码你写的 –

+0

没有任何代码我们不能做的mumbo jumbo:D –

+0

可能是倒计时的问题,因为在倒计时按钮点击倒计时活动完成,但我不取消定时器,所以当定时器完成然后它打开我在完成方法中设置的新活动 – Varinder

考虑让您的时间间隔更小,并为您的进度条的进度提供更大范围的值。

下面是我用于更新进度条进度的一些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() 

正如你所看到的,我的时间间隔较短,并且在很多我的进度条范围内的进度值,允许使用更平滑的进度条动画。