【发布时间】:2020-06-17 13:44:51
【问题描述】:
我的大多数活动在打开时都会对 API 进行异步调用,以检索将要显示的数据。使用 ProgressDialog,我可以简单地将活动的上下文传递给我的 AsyncTask 类,并在发生这种情况时显示/隐藏加载圈。这很有用,因为在添加将进行异步调用的新活动时不需要额外的工作。
例如在 onPreExecute() 中:
progressDialog = new ProgressDialog(contextRef.get());
progressDialog.setMessage("Please wait...");
progressDialog.show();
我想切换到 ProgressBar,但这需要将 ProgressBar 添加到每个需要的活动的 XML 中。我想出的最好的方法是将 XML 复制/粘贴到每个活动中,并在 onPreExecute() 中执行类似的操作:
progressBar = ((Activity) contextRef.get()).findViewById(R.id.loading);
progressBar.setVisibility(View.VISIBLE);
这很好用,但是 ProgressBar 是一个相对较大的 XML 块:
<ProgressBar
android:id="@+id/loading"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#80000000"
android:indeterminateDrawable="@drawable/loading"
android:translationZ="2dp"
android:clickable="false"
android:paddingTop="250dp"
android:paddingBottom="250dp"
android:paddingLeft="25dp"
android:paddingRight="25dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
我不喜欢这个,好像我需要改变一些东西,我必须在任何地方改变它。有没有办法将 ProgressBar 放在布局文件中并让其他布局引用它?或者只是一个更好的方法来解决这个问题?
干杯
【问题讨论】:
标签: android-asynctask progressdialog android-progressbar