Уведомления

Группа в Telegram: @pythonsu

#1 Июль 16, 2010 03:04:36

ReinRaus
От:
Зарегистрирован: 2008-10-24
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение ориентации экрана

appuifw.app.screen по умолчанию равно automatic.
Таким образом например на nokia 5370 если выдвинуть клавитуру, то ориентация автоматически станет landscape, если задвинуть ее обратно, то соответственно portrait. Значение же так и останется automatic.
Как в программе определить реальную ориентацию экрана, которая зависит от положения кверти-клавиатуры.

необязательно даже от положения клавиатуры- ведь ориентация экрана может быть автоматически изменена акселорометром при повороте телефона на 90 градусов, если это включено в настройках.



Офлайн

#2 Июль 17, 2010 13:28:55

R.Ll.S.h57
От:
Зарегистрирован: 2010-02-25
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение ориентации экрана

def orientation():
x,y=appuifw.app.layout(appuifw.EScreen)[0] # Узнаем размер экрана
if x<y:
return 'portrait'
else:
return 'landscape'



Отредактировано (Июль 18, 2010 15:23:19)

Офлайн

#3 Июль 17, 2010 16:52:18

ReinRaus
От:
Зарегистрирован: 2008-10-24
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение ориентации экрана

Спасибо огромное.
переписал до такого- может кому пригодиться

class screen_orientation(object):
def __init__(this):
try:
temp=appuifw
except:
import appuifw
bkp_orientation=appuifw.app.orientation
appuifw.app.orientation='portrait'
this._x, this._y=appuifw.app.layout(appuifw.EScreen)[0]
appuifw.app.orientation=bkp_orientation

def get_orientation(this):
x, y=appuifw.app.layout(appuifw.EScreen)[0]
if x==this._x and y==this._y:
orientation='portrait'
else:
orientation='landscape'
return [orientation, [x, y]]



Отредактировано (Июль 18, 2010 10:00:10)

Офлайн

#4 Июль 18, 2010 07:59:10

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Определение ориентации экрана

    try:
temp=appuifw
except:
import appuifw
это то зачем?



Офлайн

#5 Июль 18, 2010 19:52:56

ReinRaus
От:
Зарегистрирован: 2008-10-24
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение ориентации экрана

igor.kaist
    try:
temp=appuifw
except:
import appuifw
это то зачем?
Ну это если копируешь класс методом копипасте, то не выскакивают ошибки вроде модуль не импортирован. Считаю это хорошим тоном, чтобы класс не приходилось допиливать.
temp=appuifw
как мне кажется передача идентификатора это быстрая операция. Быстрее, чем
if "appuifw" in globals():
Такая операция
if not appuifw:
которая считается канонической проверкой существования переменной у меня на питоне 2.4 симбиан 9.х выдает ошибку, поэтому приходится писать именно так.



Офлайн

#6 Июль 19, 2010 10:18:00

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Определение ориентации экрана

ReinRaus
Считаю это хорошим тоном, чтобы класс не приходилось допиливать.
1. Плохим тоном считается импортировать внутри функций и классов.
2. Если кто то работает с UI, то считается что он импортирует appuifw для своих нужд сам.
3. В общем то достаточно узкоспециализированный класс, тем более, зачем принудительно выставлять портретную ориентацию, потом опять менять на ландшафтную. Представьте себе, что будет, если программа запущена изначально в ландшафтной.
4.
ReinRaus
как мне кажется передача идентификатора это быстрая операция. Быстрее, чем
Речь идет не о секундах, а о еденицах миллисекунд, зато код будет более ясным и чистым
5. Если уж пошла такая пьянка, то можете просто сделать import appuifw, повторно он не будет импортирован.



Офлайн

#7 Июль 19, 2010 11:55:03

ReinRaus
От:
Зарегистрирован: 2008-10-24
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение ориентации экрана

igor.kaist
ReinRaus
Считаю это хорошим тоном, чтобы класс не приходилось допиливать.
1. Плохим тоном считается импортировать внутри функций и классов.
2. Если кто то работает с UI, то считается что он импортирует appuifw для своих нужд сам.
3. В общем то достаточно узкоспециализированный класс, тем более, зачем принудительно выставлять портретную ориентацию, потом опять менять на ландшафтную. Представьте себе, что будет, если программа запущена изначально в ландшафтной.
4.
ReinRaus
как мне кажется передача идентификатора это быстрая операция. Быстрее, чем
Речь идет не о секундах, а о еденицах миллисекунд, зато код будет более ясным и чистым
5. Если уж пошла такая пьянка, то можете просто сделать import appuifw, повторно он не будет импортирован.
Спасибо. Приму к сведению.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version