Android переход от ProgressDialog к ProgressBar, лучшая реализация со многими действиями? - PullRequest
0 голосов
/ 05 марта 2020

Большинство моих действий совершают асинхронный c вызов API, когда они открываются для получения данных, которые будут отображаться. С ProgressDialog я могу просто передать контекст действия моему классу AsyncTask и отобразить / скрыть круг загрузки, как это происходит. Это полезно, так как не требует дополнительной работы при добавлении нового действия, которое сделает асинхронный вызов c.

Например, в 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 в файл макета, и другие макеты ссылаются на это? Или просто лучший способ go об этом вообще?

Приветствия

...