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