Kotlin Загрузка изображения в Firebase Animation или setContentLayout для другого действия при загрузке - PullRequest
1 голос
/ 01 февраля 2020

Я хочу показать анимацию (например, панель загрузки), когда фотография загружается в базу данных, или установить макет содержимого в профиль пользователя и показать анимацию там, пока фотография загружается.

Прямо сейчас, когда я нажимаю кнопку «Поделиться», она действует так, как будто «Поделиться» не нажимается, поэтому пользователь нажимает ее несколько раз, не зная, что будет столько же фотографий, сколько раз они нажали «Поделиться»

вот моя функция обмена:

fun share(user: User, imageUri: Uri?, caption: String) {

    if (imageUri != null) {
        usersRepo.uploadUserImage(user.uid, imageUri).onSuccessTask { downloadUrl ->
            Tasks.whenAll(
                    feedPostsRepo.createFeedPost(user.uid, mkFeedPost(user, caption,
                            downloadUrl.toString()))
            )
        }.addOnCompleteListener{
            _shareCompletedEvent.call()
        }.addOnFailureListener(onFailureListener)
    }
}

1 Ответ

2 голосов
/ 01 февраля 2020

Вы можете добавить ProgressBar к своему activity / fragment контенту xml

     <!-- Set colors etc as per your choice -->
     <ProgressBar
            android:id="@+id/progressBar_myActivity"
            style="?android:attr/progressBarStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:backgroundTint="#FFFFFF"
            android:foregroundTint="#FFFFFF"
            android:indeterminate="true"
            android:indeterminateTint="#FFFFFF"
            android:progressTint="#FFFFFF"
            android:visibility="invisible" />

А когда доля button равна clicked, вы показываете ProgressBar и отключаете взаимодействие с экраном, используя

progressBar_myActivity.visibility = View.VISIBLE  //show progress bar
window.setFlags(                                  //disable view for user interaction
      WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
      WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
)

И как только вы получите api response, вы можете показать соответствующее сообщение и скрыть ProgressBar и включить взаимодействие с пользователем, используя

window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE)
progressBar_myActivity.visibility = View.GONE
// show appropriate message

Обратите внимание, что если ваш ответ API требует значительного времени, попробуйте переместить их в какой-либо другой элемент пользовательского интерфейса, поскольку прекращение взаимодействия на длительное время не очень хорошая функция пользовательского интерфейса / пользовательского интерфейса .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...