Вы запрашиваете размер области приложения, который может занимать не весь размер экрана. От Display
class docs :
Область отображения приложения указывает часть экрана, которая может содержать окно приложения, за исключением системных украшений. Область отображения приложения может быть меньше реальной области отображения, потому что система вычитает пространство, необходимое для элементов декора, таких как строка состояния. Используйте следующие методы для запроса области отображения приложения: getSize (Point) , getRectSize (Rect) и getMetrics (DisplayMetrics)
Справа внизу есть подсказка о том, как приблизиться к физическим показателям дисплея (однако учтите, что все еще есть случаи, когда это не возвращает физические показатели вашего дисплея):
Реальная область отображения определяет часть дисплея, которая содержит контент, включая системные декорации. Тем не менее, реальная область отображения может быть меньше, чем физический размер дисплея, если оконный менеджер эмулирует дисплей меньшего размера, используя (adb shell wm size). Используйте следующие методы для запроса реальной области отображения: getRealSize (Point) , getRealMetrics (DisplayMetrics)
Таким образом, ваш код должен быть:
val metrics = DisplayMetrics()
display.getRealMetrics(metrics)
val width = metrics.widthPixels
val height = metrics.heightPixels