У меня есть пользовательский индикатор выполнения для моего приложения, я использую класс для анимации прогресса, но когда я вызываю эту функцию, мой индикатор выполнения всегда устанавливается на 100%.
Отлично работает в планшете alcatel A3. но в остальных устройствах, когда
я звоню mProgressBar.setProgress(60);
всегда он устанавливает полную шкалу прогресса (на самом деле мой прогрессбар имеет максимальный прогресс 200).
Это пользовательский индикатор прогресса моего класса.
public class ProgressBarAnimation extends Animation {
private ProgressBar mProgressBar;
private int mTo;
private int mFrom;
private long mStepDuration;
public ProgressBarAnimation(ProgressBar progressBar, long fullDuration) {
super();
mProgressBar = progressBar;
mStepDuration = fullDuration / progressBar.getMax();
}
public void setProgress(int progress) {
if (progress < 0) {
progress = 0;
}
if (progress > mProgressBar.getMax()) {
progress = mProgressBar.getMax();
}
mTo = progress;
mFrom = mProgressBar.getProgress();
setDuration(Math.abs(mTo - mFrom) * mStepDuration);
mProgressBar.startAnimation(this);
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
float value = mFrom + (mTo - mFrom) * interpolatedTime;
mProgressBar.setProgress((int) value);
}
}
Что не так с моим кодом?