Android 设置初始屏幕方向

Android 设置初始屏幕方向,android,screen-orientation,android-4.2-jelly-bean,Android,Screen Orientation,Android 4.2 Jelly Bean,我正在制作一个应用程序,其中我想查看的第一个屏幕是肖像。然后我进入下一个活动,该活动以景观为背景 我面临的问题是,如果我返回到第一个屏幕,它将被设置为横向,显然继承了前一个屏幕的方向 是否有可能将初始屏幕方向设置为纵向,但用户可以在需要时继续将其更改为横向 谢谢 编辑:已解决 谢谢你的建议。我已经克服了这个问题。解释起来有点困难,但我会尽力的 因此,我的第一个活动有一个功能,即如果手机转向横向,它将显示一个图像,全屏。同样,如果手机是纵向的,纵向视图,我有一个列表视图 第二个活动加载一个编辑页面

我正在制作一个应用程序,其中我想查看的第一个屏幕是肖像。然后我进入下一个活动,该活动以景观为背景

我面临的问题是,如果我返回到第一个屏幕,它将被设置为横向,显然继承了前一个屏幕的方向

是否有可能将初始屏幕方向设置为纵向,但用户可以在需要时继续将其更改为横向

谢谢

编辑:已解决


谢谢你的建议。我已经克服了这个问题。解释起来有点困难,但我会尽力的

因此,我的第一个活动有一个功能,即如果手机转向横向,它将显示一个图像,全屏。同样,如果手机是纵向的,纵向视图,我有一个列表视图

第二个活动加载一个编辑页面,让我更改该图像

现在,如果我按下编辑器活动的返回键。第一个活动将加载到横向视图中的列表视图中。这不是我想要的

所以为了绕开这个。当第一个活动是横向时,我首先禁用了后退按钮,因此用户无法在不将手机转到横向的情况下将自己从视图中移除

然后我移动了代码:

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            //Show landscape picture
            }
    }
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            //Show landscape picture
            }
    }
在onCreate方法之前到达我的类的顶端

这解决了我的问题,所以现在,如果我要回到我的第一个活动,而在景观,唯一会显示的是景观

我希望大家都能明白:)


再次感谢你的帮助

您可以在每个活动标记内的应用程序清单文件中使用此选项更改单个活动的方向:

android:configChanges="orientation"
一起

android:screenOrientation="portrait"

android:screenOrientation="landscape"

根据您的需要

您可以在onCreate()方法中以编程方式设置屏幕方向:

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
就在调用super.onCreate()之前

我希望,我能帮助你

致以最良好的祝愿,
谢谢你的建议。我已经克服了这个问题。解释起来有点困难,但我会尽力的

因此,我的第一个活动有一个功能,即如果手机转向横向,它将显示一个图像,全屏。同样,如果手机是纵向的,纵向视图,我有一个列表视图

第二个活动加载一个编辑页面,让我更改该图像

现在,如果我按下编辑器活动的返回键。第一个活动将加载到横向视图中的列表视图中。这不是我想要的

所以为了绕开这个。当第一个活动是横向时,我首先禁用了后退按钮,因此用户无法在不将手机转到横向的情况下将自己从视图中移除

然后我移动了代码:

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            //Show landscape picture
            }
    }
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            //Show landscape picture
            }
    }
在onCreate方法之前到达我的类的顶端

这解决了我的问题,所以现在,如果我要回到我的第一个活动,而在景观,唯一会显示的是景观

我希望大家都能明白这一点


再次感谢你的帮助

您可以在onCreate()方法中以编程方式设置屏幕方向:

就在调用
super.onCreate()之后

您还可以像这样在清单文件中指定方向

<activity android:name="com.example.project.activity"
                  android:screenOrientation="portrait"/>


不幸的是,这会无限期地将视图设置为纵向。我以前确实尝试过这个方法,使用一个计数器说,一旦屏幕以纵向方向打开,就允许更改屏幕。当计数>0时,但还没有运气。好的……当计数>0时,您是否尝试将其设置回“ActivityInfo.SCREEN\u ORIENTATION\u FULL\u SENSOR”?我想,这可以解决它。下面是setRequestedOrientation(intScreenOrientation)方法的可能参数:对问题满意,但对答案不满意。没有人知道另一种方法吗?我正在寻找完全相同问题的解决方案。那么,有没有一种方法可以设置活动的初始方向(例如肖像),但不覆盖android:screenOrientation=“user”标记???