Android从ProgressDialog切换到ProgressBar,有很多活动的最佳实现



我的大多数活动在打开时对API进行异步调用,以检索将显示的数据。使用ProgressDialog,我可以简单地将活动的上下文传递给AsyncTask类,并在这种情况下显示/隐藏加载循环。这很有用,因为在添加将进行异步调用的新活动时,它不需要额外的工作。

E.g在onPreExecute((中:

progressDialog = new ProgressDialog(contextRef.get());
progressDialog.setMessage("Please wait...");
progressDialog.show();

我想切换到ProgressBar,但这需要在每个需要ProgressBar的活动的XML中添加一个ProgressBar。我想到的最好的方法是将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放在布局文件中,让其他布局引用它?或者只是一种更好的方法来解决这个问题?

干杯

我使用这个库:https://github.com/FANMixco/spots-dialog

private SpotsDialog progressDialog;

progressDialog = (SpotsDialog) new SpotsDialog.Builder().setContext(activity)
.setMessage("One moment please ...")
.setCancelable(true)
.build();
progressDialog.show();

我也在asynctask中使用它,它很容易交换为progressdialog,效果很好。

当你使用proguard时,不要忘记

-keep class dmax.dialog.** { *;}

否则,点不会显示

最新更新