Частичная альбомная ориентация, частичная портретная ориентация для одного действия

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

Возможно ли, чтобы некоторые виды (или макеты) в вашей деятельности отображались в альбомной ориентации, а некоторые — в портретной? Может быть, я могу отображать два действия как одно действие, если это возможно? Таким образом, я могу определить ориентацию для каждого действия.


-Редактировать 24 июня 2011, 11:45:

Извините, я должен был потратить больше времени на то, чтобы лучше объяснить свой вопрос. Я хочу, чтобы в одном действии всегда были зафиксированы некоторые представления в альбомной ориентации экрана (не в макете), а некоторые всегда фиксированы в портретной ориентации экрана (опять же, не в ориентации макета) . Я понимаю, что ориентация макета определяет, добавляются ли представления вертикально или горизонтально (вертикально складываются сверху вниз и горизонтально складываются слева направо), но если ориентация экрана ландшафта активности все равно будет отображаться в ландшафте ориентация и наоборот для портрета. Я не об этом спрашиваю. Таким образом, по сути, некоторые из моих видов будут отображаться в альбомной ориентации, а остальные — в портретном, что означает, что их текст/форма будут «боковыми» или «перпендикулярными» по отношению к пейзажным видам.

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

Я не хочу использовать фрагменты, так как хочу поддерживать более старые версии Android. И я не уверен, что фрагменты вообще поддерживают это. Я также не хочу использовать два действия, одно из которых горизонтальное и прозрачное, и накладываться поверх другого, портретного, поскольку это сделает вещи излишне сложными.

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

Вот несколько изображений, которые я собрал, чтобы проиллюстрировать мою точку зрения. Похоже, я слишком новичок на форуме, чтобы вставлять изображения в свой вопрос. Извиняюсь! Вам придется пройти по ссылкам.

1) Это то, что у меня сейчас есть, вертикально ориентированный LinearLayout имеет два суб-LinearLayouts. Первый sub-LinearLayout имеет кучу TextView. Второй sub-LinearLayout имеет кучу кнопок, и это та, которую я хочу ориентировать в портретном режиме: !(http://synappze.com/development/activity-partial-screen-orientation-illustration-1.jpg)

2) Если я сориентирую основной LinearLayout горизонтально, два дополнительных LinearLayout будут отображаться, как показано ниже. Но я хочу, чтобы тот, что справа, с кнопками отображался в портретной ориентации: http://synappze.com/development/activity-partial-screen-orientation-illustration-2.jpg

3) Это то, что я хочу. Обратите внимание, что кнопки справа отображаются в портретной ориентации, тогда как TextView по-прежнему имеют альбомную ориентацию: http://synappze.com/development/activity-partial-screen-orientation-illustration-3.jpg


person AdeelMufti    schedule 22.06.2011    source источник
comment
Я не уверен, что понимаю тебя. Можно установить «ориентацию» как горизонтальную/вертикальную на разных макетах в одном и том же действии. Это то, что ты имеешь в виду?   -  person Squonk    schedule 22.06.2011
comment
Мистер Сквонк, нет, я не это имел в виду. Я, конечно, понимаю, что вы можете установить ориентацию макета на горизонтальную/вертикальную (например, с линейным макетом, горизонтальный макет поместит виды рядом, а вертикальный поместит их ниже предыдущего). Я хочу, чтобы часть экрана/активности была ориентирована в альбомной ориентации, чтобы все мои виды в этой части отображались в альбомной ориентации, и я хочу, чтобы часть экрана/активности была ориентирована в портретной ориентации, чтобы остальные виды отображались в портрет. Я постараюсь опубликовать несколько образцов изображений, которые я создал, чтобы проиллюстрировать свою точку зрения.   -  person AdeelMufti    schedule 24.06.2011
comment
Для всех, кто читает это, я изменил отображаемое имя с user810982 на Adeel83.   -  person AdeelMufti    schedule 24.06.2011


Ответы (2)


Вы можете сохранить часть, которую хотите отобразить в книжной ориентации, и часть, которую хотите, в виде фиксированной альбомной ориентации в двух разных файлах макета xml. Затем в методе onCreate() программно определите ориентацию телефона и соответственно включите два файла в макет. Извините за быстрый ответ... Я сейчас на работе. Дайте мне знать, если у вас есть вопросы по этому поводу, я могу ответить, когда буду там.

person Gyan aka Gary Buyn    schedule 22.06.2011
comment
Гэри, спасибо за ответ. Я думаю, вы могли неправильно понять мои вопросы. Я отредактирую свой вопрос выше, чтобы уточнить через минуту. Я не хочу, чтобы у моей деятельности был макет для ландшафтного режима, а другой - для портретного режима. Я хочу, чтобы одно действие всегда отображало некоторые виды в альбомной ориентации и всегда отображало некоторые виды в портретной ориентации в одном и том же действии. - person AdeelMufti; 24.06.2011

Для каждого действия в файле манифеста вы можете добавить атрибут ориентации и установить для него альбомную или портретную ориентацию.

пример :

вы можете сделать это для всех ваших действий, определенных в манифесте

person Kavitha    schedule 22.06.2011
comment
‹Активность android:name=.TestUrlsActivity android:label=@string/app_name android:screenOrientation=landscape› - person Kavitha; 23.06.2011
comment
KC203, спасибо за ответ, однако он мне не поможет (разве я вас неправильно понял?). Я хочу, чтобы одно действие отображало некоторые виды в альбомной ориентации и некоторые виды в портретной ориентации. Я опубликую несколько образцов изображений, которые я создал, чтобы проиллюстрировать мою точку зрения. - person AdeelMufti; 24.06.2011
comment
Эммм, вы имеете в виду, что на основе некоторых действий пользователя ориентация должна определяться на лету. Например, если он уже отображается в портретной ориентации, то же самое, что нам нужно, чтобы принудительно повернуть его в альбомную??? - person Kavitha; 24.06.2011
comment
Нет, я хочу, чтобы некоторые виды всегда были зафиксированы в альбомной ориентации, а некоторые — в портретной. не имеет значения, если пользователь что-то сделает для изменения ориентации, это все равно будет исправлено. Просмотрите это изображение: synappze.com/development/. Вы заметите, что кнопки справа — портретные, тогда как текстовые представления слева — альбомные, все в одном действии (это просто изображение, которое я собрал). - person AdeelMufti; 24.06.2011
comment
Самый простой способ сделать это - создать изображение кнопки для сброса и добавить его к своей кнопке, в этом случае вам не нужно беспокоиться о вращении текста и всех - person Kavitha; 24.06.2011
comment
Это хороший обходной путь, но я бы предпочел выяснить, как это сделать. Это не только кнопки, которые должны быть в другой ориентации экрана (я просто использовал их, чтобы проиллюстрировать свою точку зрения), но некоторые тексты редактирования и некоторые вещи в этом роде... интерактивные представления. Таким образом, изображения не будут делать этого. - person AdeelMufti; 25.06.2011