我正在开发的应用程序应仅以横向模式显示。
在我的应用程序描述符中,我有
<aspectRatio>landscape</aspectRatio>
<autoOrients>false</autoOrients>
在iOS设备上,应用程序以横向模式启动,一切都按预期工作。
但是当我尝试在我的安卓设备上部署时(三星银河S3),该应用程序以纵向模式启动。
当我修改描述符文件以读取:
<aspectRatio>landscape</aspectRatio>
<autoOrients>true</autoOrients>
然后应用程序将更改方向。
调试时,我发现启动时的应用程序方向是stage.orientation=="默认"
此外,我还在我的应用程序中添加了android:screenOrientation="landscape"
android 特定配置.xml(应用程序描述符文件):
<android>
<manifestAdditions>
<![CDATA[
<manifest android:installLocation="auto">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch"/>
<application android:enabled="true">
<activity android:excludeFromRecents="false" android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
]]>
</manifestAdditions>
<!--Color depth for the app (either "32bit" or "16bit"). Optional. Default 16bit before namespace 3.0, 32bit after -->
<!--<colorDepth></colorDepth>-->
</android>
这是一个已知问题吗?这可能是什么原因?
编辑:
我最终在我的主课中使用了stage.setAspectRatio( StageAspectRatio.LANDSCAPE );
。它甚至可以与默认方向不是纵向的设备一起使用
我在方向方面也有类似的问题。由于我只需要限制某些设备的方向更改,因此我通过在运行时(在应用程序完全初始化之前)设置值来解决它。
在主应用程序标记中,侦听预初始化事件:
<s:Application ...
preinitialize="preinit()">
并在侦听器中设置方向值:
private function preinit():void
{
systemManager.stage.setOrientation(StageOrientation.ROTATED_LEFT);
systemManager.stage.autoOrients = false;
}
或者尝试StageOrientation.ROTATED_RIGHT。
编辑:正如Josh评论的那样,这仅适用于以纵向为默认值的设备(即:您的三星S3)。