Почему разрешение дисплея отличается от разрешения касания в устройствах с вырезом дисплея
Я делаю приложение для Android, которое работает в полноэкранном режиме, когда я тестирую его на устройствах с вырезом экрана (вырез), происходит сдвиг в сенсорном вводе, я пытался исправить это с помощью getLocationOnScreen(), но это тоже не удается.
Я перезаписал свой код только для того, чтобы обнаружить, что размеры дисплея отличаются от размеров сенсорного ввода. В технических характеристиках устройства указано, что разрешение составляет 1080 x 2340, но мой код возвращает 1080 x 2130, тогда как сенсорный ввод соответствует исходным спецификациям (1080 x 2340)!!
Ниже приведен мой код для отображения и прикосновения:
Код для получения размеров экрана:
int physicalScreenWidth = getWindowManager().getDefaultDisplay().getWidth();
int physicalScreenHeight = getWindowManager().getDefaultDisplay().getHeight();
Код для получения позиции касания:
public boolean onTouch(View v, MotionEvent event) {
.
.
.
float xCoord = event.getX(i);
float yCoord = event.getY(i);
Отладочный скриншот для размеров экрана
Отладочный скриншот для сенсорного ввода
Когда я касаюсь около нижнего края экрана, я получаю, что координата Y превышает высоту (2130)!!
Пожалуйста, помогите узнать, почему это происходит и как этого избежать?
Обновить:
Задача решена!
int physicalScreenWidth = getWindowManager().getDefaultDisplay().getWidth();
int physicalScreenHeight = getWindowManager().getDefaultDisplay().getHeight();
ограничены.
Я заменил их на:
Point physicalSize = new Point();
getWindowManager().getDefaultDisplay().getRealSize(physicalSize);
int physicalScreenWidth = physicalSize.x;
int physicalScreenHeight = physicalSize.y;
который решил проблему!