Android: показывать вид в альбомной ориентации, когда приложение находится в портретной ориентации

У меня есть приложение для Android, которое всегда заблокировано в портретном режиме. Однако я хочу показать вид в полноэкранном ландшафтном режиме без активности или приложения в ландшафтном режиме. Как я могу получить xml для представления, которое принудительно находится в ландшафтном режиме, в то время как приложение находится в портретном режиме?

Я не хочу делать повороты в своем коде, потому что я хочу сделать его простым и определить макет в xml. Также с разными разрешениями экрана это может не работать и изменить мой макет. Но если это единственное решение, как я могу это сделать?


person ffleandro    schedule 24.11.2011    source источник
comment
Виден ли вообще полноэкранный альбомный режим в портретной ориентации (например, отображается ли миниатюра в портретной ориентации, а затем полное изображение в альбомной ориентации)?   -  person FunkTheMonk    schedule 25.11.2011
comment
Нет, я обнаруживаю изменение ландшафта с помощью OrientationEventListener, а затем делаю анимацию слайда снизу вверх, чтобы отобразить полноэкранный режим.   -  person ffleandro    schedule 25.11.2011
comment
вы не можете сделать xml в альбомной ориентации.. потому что вы хотите, чтобы панель заголовка активности была сверху, как портрет, и вид был как альбомный.. затем сделайте вид в xml, как он выглядит в альбомной ориентации, и покажите его..   -  person MKJParekh    schedule 25.11.2011
comment
Я не понял вашего ответа, но я не думаю, что это сработает.   -  person ffleandro    schedule 25.11.2011


Ответы (2)


Я не думаю, что вы можете сделать это через XML. На самом деле я не думаю, что есть простое решение. Если у вас есть что-то очень простое, вы, вероятно, можете переопределить onDraw, поверните холст, а затем нарисуйте вид. Если у вас есть более сложное поведение, такое как прокрутка, это в конечном итоге потребует много работы.

Почему вам нужен вид, который заполняет экран в ландшафтном режиме, а активность не находится в ландшафтном режиме? Что стоит за этим?

person kabuko    schedule 24.11.2011
comment
Моя активность - это TabActivity с 3 вкладками. Поведение, которое я хочу, заключается в том, что когда пользователь наклоняет экран в альбомную ориентацию, я хочу показать анимацию представления системы показателей, скользящего снизу вверх (в этом случае, поскольку оно находится в альбомной ориентации, оно должно идти слева направо), и когда он позиции обратно в портрет он скользит обратно вниз. Это то, что он сделает быстро, просто чтобы проверить результаты, я не хочу, чтобы строка состояния менялась на альбомную или воссоздавала всю мою вкладку. Я просто хочу показать вид поверх него, но в ландшафте. Неужели это так сложно сделать? - person ffleandro; 25.11.2011
comment
Да, к сожалению, насколько я знаю, это довольно сложно сделать, если только ваша система показателей не очень проста или не нарисована по индивидуальному заказу. - person kabuko; 25.11.2011
comment
Следуя вашему совету, я создал новую ландшафтную активность, которая запускалась, когда я наклонял устройство горизонтально. Не совсем то, что я хотел сделать, но достаточно разумно. - person ffleandro; 28.06.2012

Добавьте android:screenOrientation="landscape" к действию в AndroidManifest.xml. Например:

        <activity android:name=".SomeActivity"
              android:label="@string/app_name"
              android:screenOrientation="landscape">
person BronzeByte    schedule 24.11.2011
comment
Прочитайте мой вопрос. Это заставляет мою деятельность и приложение находиться в ландшафтном режиме. Я просто хочу поместить в ландшафт определенный вид моего макета. - person ffleandro; 25.11.2011
comment
@screamingnoises, это только помещает активность в альбомную ориентацию, а не ваше приложение. - person LuxuryMode; 25.11.2011
comment
Ну, если он меняет строку состояния на альбомную, приложение находится в альбомной ориентации для этого действия. Я не хочу этого. Я также не хочу, чтобы деятельность воссоздавала все в ландшафте. Я просто хочу, чтобы этот вид был в ландшафте. Я не уверен, возможно ли это, завтра я попытаюсь придумать лучшее решение для этого. - person ffleandro; 25.11.2011