Подобно тому, что кто-то сказал человеку выше, я использую две функции, которые преобразуют координаты отвода на основе разницы в разрешении устройства, для которого я изначально написал сценарий, и любого устройства, которым я сейчас пользуюсь.
Сначала я получаю текущие устройства шириной x и y пикселей.
CurrentDeviceX = float(device.getProperty("display.width"))
CurrentDeviceY = float(device.getProperty("display.height"))
Затем я определяю функцию для преобразования координат x и y. Вы можете видеть, что нижеприведенные функции были написаны для устройства размером 1280 x 800.
def transX(x):
''' (number) -> intsvd
TransX takes the x value supplied from the original device
and converts it to match the resolution of whatever device
is plugged in
'''
OriginalWidth = 1280;
#Get X dimensions of Current Device
XScale = (CurrentDeviceX)/(OriginalWidth)
x = XScale * x
return int(x)
def transY(y):
''' (number) -> int
TransY takes the y value supplied from the original device
and converts it to match the resolution of whatever device
is plugged in.
'''
OriginalHeight = 800;
#Get Y dimensions of Current Device
YScale = (CurrentDeviceY)/(OriginalHeight)
y = YScale * y
return int(y)
Затем я могу использовать эти функции при создании событий касания в моих сценариях.
Пример
device.touch(transX(737), transY(226), 'DOWN_AND_UP')
Обратите внимание, что этот подход далек от совершенства, и он будет работать, только если ваше приложение использует привязку для настройки пользовательского интерфейса в зависимости от размера экрана. Это мой быстрый и грязный подход к созданию сценариев, которые работают на нескольких устройствах, когда идентификаторы пользовательского интерфейса недоступны.