У меня есть приложение карты Google (с использованием google-maps:16). ProgressView — это собственный макет класса, который я использовал для отображения ProgressBar с текстом внутри него. Проблема в том, что когда я перехожу к фрагменту карты, если GPS включен, он попытается получить текущее местоположение пользователя. При извлечении текущего местоположения, чтобы показать прогресс, я показываю ProgressView с некоторым текстом над MapView. На панели инструментов есть кнопка «Назад». Всякий раз, когда я нажимаю кнопку «Назад» на панели инструментов, иногда мерцает часть карты Google за ProgressView. Это происходит лишь иногда. И это происходит только тогда, когда я запускаю свое приложение на Samsung Galaxy S8 (API 26).
Мерцание не появляется, когда я удаляю ProgressView из макета, но нужно отображать представление прогресса. Под ним макет этого фрагмента:
<FrameLayout
android:layout_width = "match_parent"
android:layout_height = "match_parent">
<com.google.android.gms.maps.MapView
android:id = "@+id/mapView"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
map:cameraTargetLat = "33.753746"
map:cameraTargetLng = "-84.386330"
map:cameraZoom = "14" />
<ProgressView
android:id = "@+id/findProgressView"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_gravity = "center"
android:visibility = "gone" />
</FrameLayout>
Ожидаемый результат заключается в том, что карта Google не должна мерцать с помощью ProgressView.
Я столкнулся с той же проблемой. Я предполагаю, что пульсирующая анимация на кнопке панели инструментов каким-то образом влияет на карты Google.
Вы можете отключить пульсирующую анимацию для кнопки «Назад» на панели инструментов. Я знаю, что это грязный хак, но в моем случае он решает эту проблему.
Была аналогичная проблема, когда MapView мерцал при нажатии кнопки «Назад» Toolbar.
Я попытался протестировать ответ Андрей Смоляк, и, похоже, он действительно сработал.
Хотя последний способ, которым я это сделал, состоял в том, чтобы изменить LayerType в MapView на «аппаратное ускорение» в XML.
<com.google.android.gms.maps.MapView
android:id = "@+id/mapView"
android:layerType = "hardware"
android:layout_width = "match_parent"
android:layout_height = "match_parent" />
То же самое можно сделать в коде Java/Kotlin:
mapView.setLayerType(View.LAYER_TYPE_HARDWARE, null);