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确实有效,但只更改可见性要好得多