【发布时间】:2014-01-30 20:59:11
【问题描述】:
我必须在我的 Android 应用程序中等待几秒钟,我想在此期间显示一个进度条,我该怎么做?
例如:
@Override
protected void onCreate(Bundle savedInstanceState) {
timeForShow(5 //second);
}
.
.
.
private void timeForShow(long mytime){
myprogress.setVisibility(View.VISIBLE);
Waiting for mytime...
myprogress.setVisibility(View.GONE);
}
这是我的代码,但它不起作用:
Long timerforprogressbar ;
@Override
protected void onCreate(Bundle savedInstanceState) {
timerforprogressbar = (long) 5000 ;
new MyProgressBar().execute((Void)null);
}
.
.
.
class MyProgressBar extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
progressbar.setVisibility(View.VISIBLE);
try {
Thread.sleep(timerforprogressbar);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
progressbar.setVisibility(View.GONE);
}
}
我的进度条:
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:indeterminateDrawable="@drawable/progress" >
</ProgressBar>
progressbar 是我的进度条,请帮帮我,tnx。
【问题讨论】:
-
我试图给出一个答案,但我想更详细地了解您的问题。你说它不起作用..它做错了什么?进度条是否未显示,或者它的行为与您的预期不同?
-
我有一个异步任务:paste.ubuntu.com/6846131。它是一个解析xml。现在,我创建了一个函数:paste.ubuntu.com/6846146。我想第二次展示我的进度(自定义时间)。但是看不到我的进步!
-
首先doInBackground是在后台线程中运行的,不需要有executeThread。其次,正如我在回答中提到的那样,尝试以编程方式创建进度对话框,稍后将对我的回答进行编辑以演示它。
-
或者,如果您不想要对话框,我怀疑将可见性设置为不可见而不是消失可能会有所帮助。
标签: android progress-bar