Что я хотел бы сделать:
- Определите текущую ориентацию макета устройства (Портрет, Пейзаж-Влево, Портрет (вверх ногами), Пейзаж-Вправо)
- Разделите два возможных ландшафтных режима (опираясь на левую сторону, опираясь на правую сторону)
- Поддерживающие устройства, которые имеют ландшафт как свое естественное состояние (например, обсуждалось здесь)
- Поддержка < 2.2 (не может использовать getRotation())
Чтобы уточнить, я хочу знать, в какой ориентации находится макет. В каком направлении находится нижняя часть макета? Это в портрете? Это в пейзаже? Является ли пейзаж левым или правым? и др.
Ближайшим я могу найти Activity.getResources(). getConfiguration(). ориентация, но он возвращает только три возможных значения. ORIENTATION_LANDSCAPE, ORIENTATION_PORTRAIT или ORIENTATION_SQUARE. Он не говорит, какой тип ландшафта.
Итак, тогда я подумал, что если я смогу получить значение ориентации (например, 90, 180, 270 и т.д.) устройства и сравнить его с приведенным выше значением конфигурации, я мог бы понять это. Например, если значение конфигурации было ORIENTATION_LANDSCAPE, а ориентация - 270, я мог бы сказать, что он находился в режиме обратного ландшафта. Однако, похоже, нет простого способа получить значение ориентации. Я мог бы реализовать OrientationEventListener, но это кажется излишним, поскольку мне просто нужно получить значение один раз в определенное время, а не постоянно.
В классе Display есть два значения, но getOrientation устарел и getRotation доступен только для версии 2.2 и выше.
Теперь, даже если я получил это значение, все еще существует проблема устройств, которые являются естественными. Значение их значения 0 было бы пейзаж вместо портрета. Поэтому мне также нужен верный способ рассказать, какой (пейзаж-левый, пейзаж-правый или портрет) соответствует 0.
Есть много сообщений по SO о ориентации и подобных проблемах, но я не видел никого, кто учитывал бы все эти проблемы. Кто-нибудь понял это?
Когда все сказано и сделано, мне хотелось бы что-то вроде Activity.getResources(). getConfiguration(). Ориентация, но иметь возможность указать, в каком ландшафтном режиме это.