Как установить его, чтобы приложение работало только в портретном режиме? Я хочу, чтобы режим пейзажа был отключен во время работы приложения. Как это сделать программно?
Как установить все приложение только в портретном режиме?
Ответ 1
Для любой версии Android
Из XMLВы можете указать android:screenOrientation="portrait"
для каждого действия в файле manifest.xml. Вы не можете указать этот параметр в теге application
.
Другой вариант - сделать это программно, например, в базовом классе Activity
:
@Override
public void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Для Android 4+ (API 14 +)
Последний вариант - сделать это с помощью прослушивателей жизненного цикла активности, который доступен только с Android 4.0 (API 14+). Все происходит в пользовательском классе application
:
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleAdapter() {
@Override
public void onActivityCreated(Activity a, Bundle savedInstanceState) {
a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
});
}
ActivityLifecycleAdapter
- это просто вспомогательный класс, который вам нужно создать, который будет пустой реализацией ActivityLifecycleCallbacks
(поэтому вам не нужно переопределять все методы этого интерфейса, когда вам просто нужен один из них).
Ответ 2
Да, вы можете делать это как программно, так и для всех своих действий, делая AbstractActivity, что все ваши действия расширяются.
public abstract class AbstractActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
Этот абстрактный актив также может использоваться для глобального меню.
Ответ 3
Вы можете сделать это для всего вашего приложения без, чтобы все ваши действия расширяли общий базовый класс.
Трюк сначала заключается в том, чтобы включить в свой проект Application
подкласс. В своем onCreate()
, вызываемом при первом запуске приложения, вы регистрируете объект ActivityLifecycleCallbacks
(уровень API 14+) для получения уведомлений события жизненного цикла активности.
Это дает вам возможность выполнять свой собственный код всякий раз, когда активна любая активность в вашем приложении (или остановлена, или возобновлена, или что-то еще). На этом этапе вы можете вызвать setRequestedOrientation()
для вновь созданной активности.
class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// register to be informed of activities starting up
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity,
Bundle savedInstanceState) {
// new activity created; force its orientation to portrait
activity.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
....
});
}
}
Ответ 4
Вы можете установить это в своем файле манифеста.
android:name=".your launching activity name"
android:screenOrientation="portrait"
и вы также можете добиться этого, написав код в своем файле класса, например:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Ответ 5
Добавить android: screenOrientation = "портрет" в действие в AndroidManifest.xml. Например:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
Ответ 6
Использование:
android:screenOrientation="portrait"
Просто напишите эту строку в файле манифеста приложения в каждом действии, которое вы хотите показывать только в портретном режиме.
Ответ 7
Запишите это в файл манифеста, для каждого действия:
android:screenOrientation="portrait"
Ответ 8
Как из руководства разработчика Android:
"ориентация" Ориентация экрана изменилась - пользователь имеет повернул устройство. Примечание. Если ваше приложение нацелено на уровень API 13 или выше (как объявлено minSdkVersion и targetSdkVersion атрибуты), то вы также должны объявить "screenSize" конфигурации, поскольку он также изменяется, когда устройство переключается между портретной и ландшафтной ориентации.
"screenSize" Текущий доступный размер экрана изменился. Эта представляет изменение существующего в настоящее время размера по сравнению с текущее соотношение сторон, поэтому изменится, когда пользователь переключится между пейзаж и портрет. Однако, если ваше приложение нацелено на уровень API 12 или ниже, то ваша деятельность всегда обрабатывает эту конфигурацию (это изменение конфигурации не перезапускает ваш даже при работе на устройстве Android 3.2 или выше). добавленной в уровне API 13.
Итак, в файле AndroidManifest.xml мы можем поставить:
<activity
android:name=".activities.role_activity.GeneralViewPagerActivity"
android:label="@string/title_activity_general_view_pager"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize"
>
</activity>
Ответ 9
Добавление <preference name="orientation" value="portrait" />
под <widget>
в мой файл config.xml для меня.
(Другие решения либо не работали на моем устройстве, либо были перезаписаны во время сборки, либо дали ошибки устаревания в процессе сборки.)
Ответ 10
в файле манифеста, действие которого вы хотите использовать в "портрет" , вы должны записать этот код в теге Activity
android:screenOrientation="portrait"
как это
android:icon="@drawable/icon"
android:name="com.zemkoapps.hd.wallpaper.AndroidGridLayoutActivity"
android:screenOrientation="portrait" >
но если вы хотите, чтобы экран в ландшафтном режиме использовал этот код, как этот
android:screenOrientation="landscape"
Ответ 11
Если кто-то задавался вопросом, как вы могли бы сделать это для всего своего приложения, не делая все свои действия, расширяйте общий базовый класс в Kotlin, см. пример ниже:
class InteractiveStoryApplication: Application() {
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(object: ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?) {
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}
override fun onActivityPaused(activity: Activity?) {
}
override fun onActivityResumed(activity: Activity?) {
}
override fun onActivityDestroyed(activity: Activity?) {
}
override fun onActivitySaveInstanceState(activity: Activity?, outState: Bundle?) {
}
override fun onActivityStarted(activity: Activity?) {
}
override fun onActivityStopped(activity: Activity?) {
}
})
}
}
а затем вы должны добавить свой общий базовый класс в AndroidManifest следующим образом:
<application android:allowBackup="true"
android:name=".InteractiveStoryApplication"
Ответ 12
Вы можете сделать это двумя способами.
- Добавьте
android:screenOrientation="portrait"
в файл манифеста соответствующая деятельность - Добавить
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
к вашей деятельности в методе `onCreate()
Ответ 13
В вашем типе манифеста это:
<activity
android:screenOrientation="portrait"
<!--- Rest of your application information ---!>
</activity>