在我的Android应用程序中,我试图显示一个“加载...”文本,它将每100毫秒更改一次。每100毫秒后,它将增加一个点。所以首先它会像“正在加载”。然后又是100毫秒它将是“正在加载...”当它将是“正在加载...”时,此过程将终止并再次从第一个单词开始。它将持续到3500毫秒。这将非常像进度条。
我希望我能够解释这个问题。
如何解决此问题?请帮忙。
答案 0 :(得分:4)
不是最佳答案,但确实有效。
Handler handler = new Handler();
for (int i = 100; i <= 3500; i=i+100) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(i%300 == 0){
textView.setText("Loading.");
}else if(i%200 == 0){
textView.setText("Loading..");
}else if(i%100 == 0){
textView.setText("Loading...");
}
}
}, i);
}
答案 1 :(得分:3)
CountdownTimer
似乎合适,更改onTick中的文字。
答案 2 :(得分:1)
您应该使用AsyncTask。此类用于执行长时间运行的后台任务,这些任务将发布更新并自动在UI线程上运行。
在doInBackground
中,让您的循环调用publishProgress
,每隔100毫秒调用onProgressUpdate
一次。
这将在后台完成,onProgressUpdate将自动在UI线程上运行。
有些内容:
private class ShowLoading extends AsyncTask<Void, Integer, Void> {
@Override
protected Void doInBackground(Void... params) {
for (int i = 0; i < 3500; i++){
publishProgress(i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
if (values[0]%3 == 0){
textview.setText ("Loading.");
} else if (values[0]%3 == 1){
textview.setText ("Loading..");
} else if (values[0]%3 == 2){
textview.setText ("Loading..");
}
}
}
答案 3 :(得分:0)
Kotlin动画片段(正在加载...):
ValueAnimator.ofInt(0, 4).apply {
repeatCount = 10
duration = 1000
addUpdateListener { valueAnimator ->
val dotsCount = valueAnimator.getAnimatedValue() as Int
if (dotsCount < 4) {
spannable.setSpan(transparentColorSpan, 7 + dotsCount, 10,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
textView.invalidate()
}
}
}.start()