Android屏幕方向更改所有活动

PVo*_*Lan 28 android screen-orientation

我想在我的Android应用程序上修改屏幕方向为肖像.我发现,使用谷歌可以通过将以下代码添加到我的manifest.xml来完成:

<activity android:name=".LauncherActivity"
  android:configChanges="keyboardHidden|orientation" 
  android:screenOrientation="portrait">
</activity>
Run Code Online (Sandbox Code Playgroud)

这很好,但问题如下:我现在大约有15项活动,这个数字会增长.有没有办法立即对所有活动进行定向?

我尝试以下列方式使用样式:

theme.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
  <style name="Custom" parent="android:Theme">
    <item name="android:screenOrientation">portrait</item>
    <item name="android:windowBackground">@drawable/launcher</item>
    <item name="android:configChanges">keyboardHidden|orientation</item>
  </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

的Manifest.xml

<application ... 
android:debuggable="true"
  android:theme="@style/Custom"
>
//...
</application>
Run Code Online (Sandbox Code Playgroud)

要么

<activity
... 
  android:theme="@style/Custom"
>
//...
</activity>
Run Code Online (Sandbox Code Playgroud)

这两个例子都windowBackground成功应用,但screenOrientation不起作用.有任何想法吗?

PVo*_*Lan 21

没门.我需要重复一遍

<activity android:name=".LauncherActivity"
  android:configChanges="keyboardHidden|orientation" 
  android:screenOrientation="portrait">
</activity>
Run Code Online (Sandbox Code Playgroud)

<activity>在清单中的每个标签中.


mth*_*pvg 15

您可以创建一个扩展的类Activity:

public class PortraitActivity extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为如果你的活动延伸PortraitActivity而不是Activity它会做.

编辑:SCREEN_ORIENTATION_PORTRAIT或SCREEN_ORIENTATION_LANDSCAPE

  • 无论如何,setRequestedOrientation()对我没有帮助.在这种情况下,活动首先定向横向片刻,之后onCreate()调用和活动返回到纵向.用户可以看到"风景时刻",特别是在慢速设备上 (2认同)