Я пользуюсь Android VNC зрителем на моем HTC G1. Но по какой-то причине это приложение всегда находится в ландшафтном режиме, несмотря на то, что мой G1 находится в портретном режиме. Поскольку средство просмотра VNC для Android является открытым исходным кодом, я хотел бы знать, как это возможно, чтобы жесткий код выглядел как «пейзаж». Я хотел бы изменить его, чтобы уважать ориентацию телефона.Принудительная активность Android для использования ландшафтного режима
ответ
Вы можете указать ориентацию деятельности в манифесте. См. here.
<activity android:allowTaskReparenting=["true" | "false"]
...
android:screenOrientation=["unspecified" | "user" | "behind" |
"landscape" | "portrait" |
"sensor" | "nosensor"]
...
"adjustResize", "adjustPan"] >
Вы также можете установить те же данные в своем Java-коде.
myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Другие значения в ActivityInfo позволят вам установить его обратно на сенсорный или заблокированный портрет. Лично мне нравится указывать что-то в манифесте, как предлагается в другом ответе на этот вопрос, а затем изменить его позже, используя вышеупомянутый вызов в Android SDK, если есть такая необходимость.
Глядя на AndroidManifest.xml (link), в строке 9:
<activity android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:name="VncCanvasActivity">
Эта строка определяет screenOrientation
как пейзаж, но автор идет дальше в переопределении любой ориентации экрана меняется с configChanges="orientation|keyboardHidden"
. Это указывает на переопределенную функцию в VncCanvasActivity.java.
Если посмотреть на VncCanvasActivity, на линии 109 является перекрытая функция:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// ignore orientation/keyboard change
super.onConfigurationChanged(newConfig);
}
Автор специально поставил комментарий игнорировать любые клавиатуры или ориентации изменения.
Если вы хотите изменить это, вы можете вернуться к файлу AndroidManifest.xml показан выше, и измените строку:
<activity android:screenOrientation="sensor" android:name="VncCanvasActivity">
Это должно изменить программу, чтобы перейти от портретного когда пользователь поворачивает устройство.
Это может сработать, но может испортить внешний вид GUI, в зависимости от того, как был создан макет. Вам придется это учитывать. Кроме того, в зависимости от того, как кодируются действия, вы можете заметить, что при изменении ориентации экрана значения, заполненные в любые поля ввода, исчезают. Возможно, это также придется обрабатывать.
Почему именно атрибут 'configChanges' нужен? Кажется, это работает на моем телефоне без клавиатуры без него ... В каких ситуациях ориентация изменится на портрет, если у вас есть screenOrientation = "landscape", но опустите 'configChanges'? – Timmmm
в новых версиях вы также должны указать screenSize: ['Если ваше приложение нацелено на уровень API 13 или выше (как указано атрибутами minSdkVersion и targetSdkVersion), вы также должны объявить конфигурацию« screenSize », так как она также изменяется, когда устройство переключается между портретной и альбомной ориентацией. '] (http://developer.android.com/guide/topics/manifest/activity-element.html) – Cel
как заставить встроенную активность, например, выбирать библиотеку выбора изображения только в ландшафте или только портрет? – Jacky
Арслан, почему вы хотите, чтобы ориентация про грамматически, но уже есть способ манифеста <activity android:name=".youractivityName" android:screenOrientation="portrait" />
Им не апеллятором, но, может быть, он хочет сделать программным путем, потому что хочет заставить его в определенное время? –
Ниже приведен код, который я использовал для отображения всей активности в ландшафтном режиме:
<activity android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden"
android:name="abcActivty"/>
«Ориентация» Если ваше приложение нацелено на уровень API 13 или выше, вы также должны объявить «screenSize» –
В моей OnCreate(Bundle)
я вообще сделать следующее:
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
спасибо ..u сделал день –
метод манифеста в других ответах, похоже, не работал, но @anwarma yours сделал – Anup
Вот и все! Долго ждать этого исправления.
Я старый Android вопрос о двойном начать деятельность, которая требует (программно) ландшафтного режима: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
Теперь Android сделать ландшафтный режим на старте.
Нажмите CTRL+F11
, чтобы повернуть экран.
Они хотят теперь, как настроить ориентацию по умолчанию приложения, а не как экран можно повернуть. –
CTRL + f12 для эмулятора. – Lazy
Для Android 4.0 (Ice Cream Sandwich), а затем мне нужно было добавить их, кроме значения landscape
.
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
Использование только keyboardHidden|orientation
будет по-прежнему приводит к утечкам памяти и отдыха моей деятельности при нажатии на кнопку питания.
Плохое предупреждение! Это не имеет никакого отношения к принудительной активности в ландшафтном режиме. Вам всегда необходимо реализовать хранение и воссоздание состояния вашей деятельности. Это базовые знания Android Development. Не решайте это с помощью этого хакерского исправления. Активность может быть закрыта системой, если ей требуется больше памяти. – Roel
@Roel, это единственный способ предотвратить поворот активности на портфолио, например, когда вы вращаете устройство. Это предотвращает влияние этих изменений на активность. – Peterdk
Извините за небольшое грубое сообщение, но я его протестировал, и у меня не все эти значения для ландшафтного режима. Когда вы добавляете все эти значения, это означает, что вы сами обрабатываете изменения в onConfigurationChanged() вместо того, чтобы активность была просто перезапущена (и вы должны это реализовать!), Но если вы закроете ландшафт, поворот не произойдет. – Roel
Выполнение этого кода является ошибкой IMO и даже более того, если вы поместите его в onCreate. Сделайте это в манифесте, и «система» знает ориентацию с момента запуска приложения. И этот тип мета или верхнего уровня «руководство» ДОЛЖЕН быть в манифесте. Если вы хотите доказать это сами, установите перерыв в onCreate Activity. Если вы сделаете это в коде там, он будет вызываться дважды: он запускается в портретном режиме, затем переключается на Пейзаж. Этого не происходит, если вы делаете это в манифесте.
Я не согласен. Выполнение чего-либо в коде, а не через манифест, всегда является моим предпочтительным методом. Основываясь на принципе единой ответственности, манифест должен касаться только свойств, разрешений приложений и привязок API. Я фактически не согласен с тегом
Быстрое и простое решение для файла AndroidManifest.xml, добавьте следующее по каждому виду деятельности, который вы хотите, чтобы заставить альбомный режим:
android:screenOrientation="landscape"
В манифесте:
<activity android:name=".YourActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|screenSize">
В вашей деятельности:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.your_activity_layout);
Это работает для Xamarin.Android. В OnCreate()
RequestedOrientation = Android.Content.PM.ScreenOrientation.Landscape;
Используйте ActivityInfo (android.content.pm.ActivityInfo) в вашем OnCreate метод перед вызовом метода setLayout как этот
this.setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
- 1. Android: альтернативный макет xml для ландшафтного режима
- 2. Неожиданная ошибка при смене ландшафтного режима android
- 3. Формирование ландшафтного режима на планшете
- 4. Ошибка ландшафтного режима
- 5. Изменение размера ландшафтного режима
- 6. Как избежать ландшафтного режима камеры в android?
- 7. Добавление отдельного основного для ландшафтного режима
- 8. Как отключить slideMenu для ландшафтного режима Tablet?
- 9. Набор изображений, не подходящих для ландшафтного режима
- 10. Кнопки режима ландшафтного режима UIViewController не работают
- 11. Блокировка ландшафтного режима в iPad
- 12. android OS не принимает дизайн ландшафтного режима при изменениях orintation
- 13. AVCaptureSession захват изображения ландшафтного режима
- 14. Принудительное приложение iPhone для ландшафтного режима
- 15. PagerSlidingTabStrip Исходный режим для ландшафтного режима
- 16. дизайн для портретного и ландшафтного режима в android
- 17. React-Native Different View для ландшафтного режима ios and android
- 18. takePicture() вращение ландшафтного режима андроида
- 19. Настройка ландшафтного режима только на Android Google Map Fragment
- 20. Как ограничить Android-приложение изменением своего режима ландшафтного ландшафта?
- 21. Принудительная активность для начала из истории
- 22. Макет ландшафтного режима и Категории макетов папок
- 23. Отключение ландшафтного режима на несколько страниц
- 24. проблема ландшафтного режима с навигационной панелью
- 25. смущен UIImageОценка портретного/ландшафтного режима фото
- 26. Выравнивание, искаженное при смене ландшафтного режима [Ионный]
- 27. Портретный режим для телефонов/планшетов и ландшафтного режима для Android TV?
- 28. Как добавить поддержки для ландшафтного режима в существующем приложении
- 29. Содержимое веб-сайта iOS не подходит для ландшафтного режима
- 30. iAd не подходит для ширины при запуске из ландшафтного режима
Хотя это работает, оно заставляет активность перезапускаться. – Yegor