如何只在纵向模式下设置整个应用程序?
我如何设置它,使应用程序只在肖像模式下运行? 我希望横向模式在应用程序运行时被禁用。 我该如何编程?
对于任何Android版本
来自XML
您可以在manifest.xml文件中为每个活动指定android:screenOrientation="portrait"
。 您不能在application
标签上指定此选项。
从Java
其他选项是以编程方式执行,例如在一个Activity
基类中:
@Override public void onCreate(Bundle savedInstanceState) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }
对于Android 4+(API 14+)
最后一个select是使用自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
只是一个你需要创build的助手类,它将是ActivityLifecycleCallbacks
一个空的实现(所以当你只需要其中的一个时,你不必重写该接口的每个方法)。
是的,您可以以编程方式执行此操作,也可以执行所有活动的AbstractActivity活动。
public abstract class AbstractActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } }
这个抽象活动也可以用于全局菜单。
你可以为你的整个应用程序做到这一点, 而不必让所有的活动扩展一个共同的基类。
诀窍首先要确保在项目中包含Application
子类。 在您的应用程序首次启动时调用的onCreate()
,注册ActivityLifecycleCallbacks
对象(API级别14+)以接收活动生命周期事件的通知。
这使您有机会在应用程序中的任何活动开始(或停止,恢复或其他)时执行自己的代码。 此时,您可以在新创build的活动上调用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); } .... }); } }
你可以在清单文件中设置
android:name=".your launching activity name" android:screenOrientation="portrait"
你也可以通过在类文件中写入代码来达到同样的目的:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
将android:screenOrientation =“portrait”添加到AndroidManifest.xml中的活动。 例如:
<activity android:name=".SomeActivity" android:label="@string/app_name" android:screenOrientation="portrait">
使用:
android:screenOrientation="portrait"
只需在应用程序的清单文件中将这一行写在您想以纵向模式显示的每个活动中。
把这个写到你的清单文件中,对于每一个活动:
android:screenOrientation="portrait"
从Android开发者指南:
“方向”屏幕方向已更改 – 用户旋转了设备。 注意:如果您的应用程序的目标API级别为13或更高(由minSdkVersion和targetSdkVersion属性声明),则还应该声明“screenSize”configuration,因为当设备在纵向和横向之间切换时,configuration也会更改。
“screenSize”当前可用的屏幕尺寸已更改。 这表示当前可用尺寸相对于当前宽高比的变化,所以当用户在横向和纵向之间切换时将会改变。 但是,如果您的应用程序的目标级别为12或更低,那么您的活动始终会自行处理此configuration更改(即使在Android 3.2或更高版本的设备上运行,此configuration更改也不会重新启动您的活动)。 在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>
在我的config.xml中的<widget>
下添加<preference name="orientation" value="portrait" />
为我工作。
(其他解决scheme或者在我的设备上不工作,在构build过程中被覆盖,或者在构build过程中出现弃用错误。)
在Manifest文件中你想要在“肖像”中使用的活动,你必须在Activity标签中写下这些代码
android:screenOrientation="portrait"
喜欢这个
android:icon="@drawable/icon" android:name="com.zemkoapps.hd.wallpaper.AndroidGridLayoutActivity" android:screenOrientation="portrait" >
但如果你想在横向屏幕使用这样的代码
android:screenOrientation="landscape"
如果有人想知道,如何在整个应用程序中完成这些工作,而无需让所有的活动在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"
在你的Manifest中input:
<activity android:screenOrientation="portrait" <!--- Rest of your application information ---!> </activity>