Android 如何停止和启动ProgressBar

Android 如何停止和启动ProgressBar,android,progress-bar,Android,Progress Bar,我无法停止ProgressBar。它的样式是ProgressBarStylesmall。如何启动和停止一个循环的、小的ProgressBar?我不知道这是否有帮助,但您可以使用ProgressDialog。假设您有一个名为ProgressDialog的正在运行的ProgressDialog,您可以使用ProgressDialog.disease()。只需确保要解除的ProgressDialog的实例是实际显示的ProgressDialog。您可以使用progressDialog.isShowin

我无法停止
ProgressBar
。它的样式是
ProgressBarStylesmall
。如何启动和停止一个循环的、小的
ProgressBar

我不知道这是否有帮助,但您可以使用
ProgressDialog
。假设您有一个名为
ProgressDialog
的正在运行的
ProgressDialog
,您可以使用
ProgressDialog.disease()。只需确保要解除的
ProgressDialog
的实例是实际显示的
ProgressDialog
。您可以使用
progressDialog.isShowing()检查它。要启动
进度对话框

progressDialog = ProgressDialog
                    .show(myActivityContext,
                            "ProgressDialog Title",
                                "ProgressDialog Body");

默认情况下,
ProgressDialog
UI是循环的,就像您需要它一样。

您需要为此处理异步任务

/*
 * We set the visibility to true. If it was already visible 
 * there's no need of doing this but we do it for the sake of readability.
 */
final ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar1);
progressBar.setVisibility(View.VISIBLE);
new AsyncTask<Void,Void,Void>(){

//The variables you need to set go here

    @Override
    protected Void doInBackground(final Void... params){
         // Do your loading here. Don't touch any views from here, and then return null
         return null;
    }


    @Override
    protected void onPostExecute(final Void result){
         // Update your views here
         progressBar.setVisibility(View.GONE);
    }
}.execute()
/*
*我们将可见性设置为true。如果它已经是可见的
*没有必要这样做,但我们这样做是为了可读性。
*/
最终ProgressBar ProgressBar=(ProgressBar)findViewById(R.id.progressBar1);
progressBar.setVisibility(View.VISIBLE);
新建异步任务(){
//您需要设置的变量位于此处
@凌驾
受保护的Void doInBackground(最终Void…参数){
//在这里加载。不要从这里接触任何视图,然后返回null
返回null;
}
@凌驾
后期执行时受保护的作废(最终作废结果){
//在此处更新您的视图
progressBar.setVisibility(View.GONE);
}
}.execute()

任务开始时将Alpha值设置为1,任务结束时将Alpha值更改回0
但是setAlpha仅适用于API级别11或更高级别

隐藏progressbar:
progressbar.setVisibility(View.INVISIBLE)

显示进度条:
progressbar.setVisibility(View.VISIBLE)


默认情况下,您可以使progressBar可见,并在不需要时将其隐藏,例如:

progressBar.setVisibility(View.GONE);
如果您想通过编程方式控制它,则可以通过以下方式实现:

progressBar.setVisibility(View.VISIBLE); //to show
progressBar.setVisibility(View.GONE); // to hide
您甚至可以使用ProgressDialog:

private ProgressDialog progressDialog;
...

public void showProgressDialog() {
    if (progressDialog == null) {
        progressDialog = new ProgressDialog(PhotographerDetailActivity.this);
        progressDialog.setIndeterminate(true);
        progressDialog.setCancelable(false);
    }
    progressDialog.setMessage("your message");
    progressDialog.show();
}

public void dismissProgressDialog() {
    if (progressDialog != null ) {
        progressDialog.dismiss();
    }

希望它能对您有所帮助。

偶然发现了这个老话题,并注意到每个人都在谈论ProgressDialog。应注意的是,ProgressDialog已被弃用,应改用ProgressBar类

从android文档:

避免进程对话框 Android包含另一个名为ProgressDialog的对话框类,该类显示带有进度条的对话框。此小部件已弃用,因为它阻止用户在显示进度时与应用程序交互。如果需要指示加载或不确定进度,则应遵循的设计准则,并在布局中使用,而不是使用ProgressDialog

有“不确定”的进度条,它旋转和“确定”,而它不旋转。坚持后一种方法,你会没事的。要使其“确定”,请将progress属性添加到其xml元素set中

 style="?android:attr/progressBarStyleHorizontal"
        android:indeterminate="false"

当你想显示时,让可视性消失并可见。它显示对话框和其中的循环,我只想显示循环动画。我的问题是如何停止循环我不明白。您想停止progressDialog或将其UI更改为非循环?在android sdk中,它们只是循环控件,我只想通过代码启动和停止它。我不需要progressbar对话框。您可以将progressbar的可见性设置为不可见或通过progressbar.setVisibility(View.invisible)进行设置;或progressBar.setVisibility(View.GONE);正如建议的那样,请在您的问题中形成之前的评论。如果您正在加载列表或其他内容,只需在AsyncTask中创建一个空列表作为字段,在doInBackground期间填充它,然后在onPostExecute期间显示它。为什么要使live变得如此复杂,并使用异步任务?这可以在主线程上完成…要设置可见性,您还可以使用progressBar.setVisibility(progressBar.VISIBLE)来显示,progressBar.setVisibility(progressBar.INVISIBLE)来隐藏但仍然显示,或者使用progressBar.setVisibility(progressBar.GONE)来隐藏最小化的。setAlpha确实有效,但只更改可见性要好得多