Как программно определить полноэкранный режим жестов на устройствах Mi

Я пишу приложение для Android, которому необходимо рассчитать высоту экрана для правильного отображения содержимого. Но высота, которую я получил в устройствах Mi (Mi 9 SE), была неправильной при переключении в полноэкранный режим жестов. Как я могу получить реальную высоту экрана или проверить, включил ли пользователь полноэкранный режим жестов на устройствах Mi?

Я пробовал эти предложения.

  1. Как определить полноэкранный режим жестов в Android Q
  2. Android: определить видимость панели навигации
  3. Проверить панель навигации

person Minh Dao    schedule 23.08.2019    source источник


Ответы (2)


После поиска и экспериментов я нашел единственное решение: Как определить полноэкранный режим жестов в Android Q.

Вместо использования функции ViewCompat.setOnApplyWindowInsetsListener() мне просто нужно создать экземпляр WindowInsets для текущего контекста, а затем проверить getSystemGestureInsets() для каждого ребра. Вот как я реализовал собственный модуль React Native.

Если вам нужен прослушиватель для обнаружения всех изменений, вышеприведенное решение хорошо зарекомендовало себя в приложении для Android. Если вам нужен этот слушатель для React Native, вы можете найти другой подход, так как я не заставил его работать.

person Minh Dao    schedule 09.01.2020
comment
Что ж, это будет работать только на устройствах Xiaomi Android Q или выше. - person Abhishek Choudhary; 16.08.2020
comment
@АбхишекЧоудхари. Абсолютно. Полноэкранный режим жестов доступен только для Android Q и более поздних версий, из-за чего старые методы работают некорректно. - person Minh Dao; 17.08.2020
comment
Но полноэкранные функции жестов доступны и на устройствах Xiaomi под управлением Android O. - person Abhishek Choudhary; 17.08.2020

Очень простой ответ: не используйте DisplayMetrics. Просто сделайте так, чтобы любой вид занимал всю ширину и высоту экрана (MATCH_PARENT), а затем получил его размеры, он хорошо дает точные числа.

person Mo Dev    schedule 10.04.2020