Почему разрешение дисплея отличается от разрешения касания в устройствах с вырезом дисплея

Я делаю приложение для 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;

который решил проблему!

0 ответов

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