在 Android 中显示进度条几秒钟

use*_*823 2 android progress-bar

我必须在 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); 

}
Run Code Online (Sandbox Code Playgroud)

这是我的代码,但它不起作用:

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);
    }

}
Run Code Online (Sandbox Code Playgroud)

我的进度条:

    <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>
Run Code Online (Sandbox Code Playgroud)

进度条是我的进度条,请帮助我,tnx。

cYr*_*ten 5

对于您的特定用例,使用处理程序会更简单:

new Handler().postDelayed(new Runnable() {

    @Override
    public void run() {
       progressbar.setVisibility(View.GONE);
    }

}, timerforprogressbar);
Run Code Online (Sandbox Code Playgroud)

您没有提到进度条是如何构建的,但如果您只是想显示不确定的进度,那么我认为以编程方式构建它将是最简单的事情。

private ProgressDialog working_dialog;

private void showWorkingDialog() {
    working_dialog = ProgressDialog.show(context, "","Working please wait...", true);
}

private void removeWorkingDialog() {
    if (working_dialog != null) {
        working_dialog.dismiss();
        working_dialog = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

这将使代码看起来像:

showWorkingDialog();

new Handler().postDelayed(new Runnable() {

    @Override
    public void run() {
        removeWorkingDialog();
    }

}, timerforprogressbar);
Run Code Online (Sandbox Code Playgroud)