Android - карты Google мерцают за представлением прогресса при нажатии кнопки «Назад»

У меня есть приложение карты 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.

2
0
1 086
2

Ответы 2

Я столкнулся с той же проблемой. Я предполагаю, что пульсирующая анимация на кнопке панели инструментов каким-то образом влияет на карты 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);

Другие вопросы по теме

Похожие вопросы

Android: установить qos для опубликованного сообщения mqtt
Как сохранить данные из уведомления, полученного, когда приложение находится в фоновом режиме
Слушатель щелчка по элементу для RecyclerView. Как я могу использовать положение элемента в представлении ресайклера для плавной прокрутки к другому списку?
Как использовать массивы String из string.xml в макетах Android?
Получить отсутствующие или недостаточные разрешения с помощью правил get() и exists() в запросе
В ViewPager адаптер моего фрагмента выглядит примерно так. вместо этого я хочу, чтобы это был массив
Библиотека подкачки Android: как показать связанный элемент, если его еще нет в локальной базе данных, и не прерывать подкачку?
Изменить текст представления нижнего колонтитула itemView recyclerview
Изменить base_url в Android после сборки apk?
Форсировать ландшафт при нажатии кнопки - как полноэкранная кнопка YouTube