我有一个简单的progressBar,其Max设置为100。
我需要以两种不同的速度增加它。
最初快速达到60,然后一旦达到60,它会以低增量速度一直变慢到100。
我使用处理程序和一个包含该值的界面来完成它,但它在UI上跳过很多帧。
有人可以展示如何使用单独的线程来避免跳过警告吗?
我非常感激。
答案 0 :(得分:0)
试试这段代码
public class MainActivity extends AppCompatActivity {
private final static int FAST_SPEED = 2;
private final static int SLOW_SPEED = 1;
private final static int UPDATE_TIME = 50;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mProgressBar = (ProgressBar) findViewById(R.id.progress);
postUpdate();
}
@Override
protected void onStop() {
super.onStop();
mUpdateHandler.removeCallbacks(mUpdateRunnable);
}
private void postUpdate() {
mUpdateHandler.postDelayed(mUpdateRunnable, UPDATE_TIME);
}
private final Handler mUpdateHandler = new Handler();
private final Runnable mUpdateRunnable = new Runnable() {
@Override
public void run() {
if (mProgress > 100) {
return;
} else if (mProgress <= 60) {
mProgress += FAST_SPEED;
} else if (mProgress > 60) {
mProgress += SLOW_SPEED;
}
mProgressBar.setProgress(mProgress);
postUpdate();
}
};
private ProgressBar mProgressBar;
private int mProgress;
}
您可以更改FAST_SPEED,SLOW_SPEED和UPDATE_TIME值以自定义进度栏填充速度