gpt4 book ai didi

android - 在 AndroidManifest.xml 中设置 screenOrientation 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:06:03 33 4
gpt4 key购买 nike

我有一个简单的 hello world Android 测试项目。在我的 AndroidManifest.xml 中,我已经设置了

android:screenOrientation="portrait" 
android:configChanges="keyboardHidden|keyboard|orientation">

但是当我调试我的代码时,变量 isLandscape 是 True,而它应该是 False

boolean isLandscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;

我知道我也可以通过代码设置activity方向,但是因为某些原因需要在xml中设置。我该怎么做?

编辑:我的 AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidgames.mreater"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="preferExternal">

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
android:icon="@drawable/ic_launcher"
android:allowBackup="true"
android:label="Mr. Eater" >
<activity
android:name="com.androidgames.mreater.MrEaterGame"
android:label="Mr. Eater"
android:screenOrientation="portrait"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

我实际的 onCreate Activity 方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

boolean isLandscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

int frameBufferWidth = isLandscape ? 480 : 320;
int frameBufferHeight = isLandscape ? 320 : 480;
Bitmap frameBuffer = Bitmap.createBitmap(frameBufferWidth,
frameBufferHeight, Config.RGB_565);

float scaleX = (float) frameBufferWidth
/ getWindowManager().getDefaultDisplay().getWidth();
float scaleY = (float) frameBufferHeight
/ getWindowManager().getDefaultDisplay().getHeight();

renderView = new AndroidFastRenderView(this, frameBuffer);
graphics = new AndroidGraphics(getAssets(), frameBuffer);
fileIO = new AndroidFileIO(getAssets());
audio = new AndroidAudio(this);
input = new AndroidInput(this, renderView, scaleX, scaleY);
screen = this.getStartScreen();
setContentView(renderView);

PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "GLGame");
}

现在越来越奇怪了,isLandscape变量为True,但有时为False。它有点像错误。

最佳答案

确保将其放在 <activity> 中标签,而不是 <application>标签。

它只适用于 <activity>标签,但如果你把它放在 <application> 中就不会提示标签。

http://developer.android.com/guide/topics/manifest/application-element.html

对比

http://developer.android.com/guide/topics/manifest/activity-element.html

您需要为每个 Activity 放置它您在 manifest.xml 中定义

关于android - 在 AndroidManifest.xml 中设置 screenOrientation 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17327025/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com