Загрузка данных от сторонних поставщиков необходима для большинства приложений Android. Эти данные обычно выбираются и загружаются в пользовательский интерфейс при запуске приложения. Хороший способ показать пользователю, что данные загружаются, - это наложение круга загрузки в пользовательском интерфейсе. Во время этого наложения вы не хотите, чтобы пользователь мог взаимодействовать с пользовательским интерфейсом до завершения загрузки.
Давайте рассмотрим один из способов разработки и реализации наложения колеса прогресса во время загрузки данных в вашем приложении.
Для этого я использовал библиотеку колеса прогресса материала, которую нашел на GitHub. Сначала добавьте это на уровень вашего приложения build.gradle
.
implementation 'com.pnikosis:materialish-progress:1.7
Затем я создал XML-файл для отображения колеса прогресса как слоя, который я мог бы разместить поверх пользовательского интерфейса.
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:wheel="http://schemas.android.com/apk/res-auto" android:id="@+id/progress_overlay" android:layout_width="match_parent" android:layout_height="match_parent" android:alpha="0.4" android:animateLayoutChanges="true" android:background="@android:color/black" android:clickable="true" android:focusable="true" android:visibility="gone"> <com.pnikosis.materialishprogress.ProgressWheel android:id="@+id/progress_wheel" android:layout_width="80dp" android:layout_height="80dp" android:clickable="true" android:layout_gravity="center" wheel:matProg_barColor="#5588FF" wheel:matProg_progressIndeterminate="true" /> </FrameLayout>
Включение двух строк ниже для FrameLayout предотвращает интерактивность пользовательского интерфейса. Также вы определенно хотите, чтобы это представление было невидимым, когда оно не используется, поэтому мы установили видимость как gone
. С помощью этой библиотеки вы можете настроить визуальные атрибуты колеса прогресса, более подробную информацию можно найти в репозитории GitHub.
android:clickable="true" android:focusable="true" android:visibility="gone"
Чтобы использовать это внутри любого макета во всем приложении, все, что вам нужно сделать, это включить его в XML-файл макета. Затем вы можете использовать код для управления видимостью.
<include layout="@layout/include_progress_overlay"/>
Чтобы этот макет отображался поверх пользовательского интерфейса во время загрузки, мы должны установить видимость как visible
. Когда загрузка завершена, вы можете использовать метод обратного вызова, чтобы установить видимость invisible
.
/* Progress overlay visible */ progressOverlay = findViewById(R.id.progress_overlay); progressOverlay.setVisibility(View.VISIBLE); ... ... ... public void setInvisible() { progressOverlay.setVisibility(View.INVISIBLE); } public void setVisible() { progressOverlay.setVisibility(View.VISIBLE); }
Окончательный результат накладки показан ниже!
Подпишитесь на мой Twitter, если хотите быть в курсе моих текущих проектов. Вы инвестируете в криптовалюту? Оцените мое новое бета-приложение Veox - трекер криптовалютного портфеля!