重新加载应用程序后,Android 会忽略 XML 中的 autoOrients 设置

Posted

技术标签:

【中文标题】重新加载应用程序后,Android 会忽略 XML 中的 autoOrients 设置【英文标题】:Android ignores the autoOrients setting in XML after reloading app 【发布时间】:2013-04-03 16:02:17 【问题描述】:

我的 android 应用有一个小问题。 在我的控制 XML 中,我有

<autoOrients>false</autoOrients>
<aspectRatio>landscape</aspectRatio> 

这也适用于应用程序的第一次启动。该应用程序以横向模式启动,一切正常。 然后,我单击主页按钮(或手机进入待机模式)。现在我从任务列表中选择应用程序或单击应用程序图标。该应用程序现在处于纵向模式(他不是为此而设计的),并且由于我禁用了 autoOrients,我无法切换回横向模式。

这是 Flex 4.6 中的错误(我使用 Adob​​e Flash Builder 4.6)还是缺少其他一些开关?

最好的问候KjM

【问题讨论】:

【参考方案1】:

我遇到了类似的问题;我相信某些版本的Android。我将这样的代码添加到我的主应用程序文件中。它使用 applicationComplete 和 activate 事件在运行时设置应用程序的纵横比。它是描述符设置变得不稳定时的备份。

<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                            xmlns:s="library://ns.adobe.com/flex/spark" 
                            firstView="something"   
applicationComplete="viewnavigatorapplication1_applicationCompleteHandler(event)"
activate="viewnavigatorapplication1_activateHandler(event)">

    <fx:Script>
        <![CDATA[

            import mx.events.FlexEvent;


            protected function viewnavigatorapplication1_applicationCompleteHandler(event:FlexEvent):void
            
                this.stage.setAspectRatio( StageAspectRatio.LANDSCAPE );
            

            protected function viewnavigatorapplication1_activateHandler(event:Event):void
            
                if(this.stage)
                    this.stage.setAspectRatio( StageAspectRatio.LANDSCAPE );
                
            

        ]]>
    </fx:Script>

【讨论】:

我有几乎相同的解决方案(NativeApplication,ACTIVATE 事件的事件监听器),但由于未知原因,结果是调用 setAspectRatio() 函数的无限循环:| 那么我不确定。我没有要亲自测试的 S3。【参考方案2】:

添加

<activity
            android:name="xxxx"
            android:label="xxxxx"
            android:screenOrientation="landscape" >

到清单中的活动标签

【讨论】:

他正在使用 Flex/AIR。我很确定 Android Manifest 是由 AIR 编译器在幕后创建的;基于他的 Flex/AIR 应用程序描述符文件。我猜他指定的 aspectRatio 元素将转换为 screenOrientation;但我实际上并不知道。我认为他可以将其添加到他的应用程序描述符的 manifestAdditions 部分;但他不应该这样做。 是的,没错。编译器抛出关于未绑定元素的错误:(【参考方案3】:

在您的 main-app.xml 中输入以下值

<aspectRatio>portrait</aspectRatio>
<autoOrients>false</autoOrients>

无论移动设备的方向如何,您的移动应用现在都将以纵向纵横比启动。您的应用现在将忽略您的移动设备的旋转。

【讨论】:

以上是关于重新加载应用程序后,Android 会忽略 XML 中的 autoOrients 设置的主要内容,如果未能解决你的问题,请参考以下文章

即使在 ios 等 android 应用程序崩溃后重新加载应用程序

Android WebView 防止页面重新加载

部署后更改 web.xml

我的简单相机应用程序(android)在第一次尝试后不会加载相机视图

XML报表开发基本过程

UITableViewController 在iOS7中删除行后忽略点击