【问题标题】:Android switching from ProgressDialog to ProgressBar, best implementation with many activities?Android从ProgressDialog切换到ProgressBar,有很多活动的最佳实现?
【发布时间】: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


    【解决方案1】:

    我使用这个库: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.** { *;}
    

    否则点不显示

    【讨论】:

      猜你喜欢
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 2011-07-26
      • 2011-12-26
      • 1970-01-01
      相关资源
      最近更新 更多