réglage screenOrientation dans AndroidManifest.xml ne fonctionne pas
J'ai un simple hello world Android, le projet de tests. Dans mon AndroidManifest.xml j'ai déjà mis
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|keyboard|orientation">
mais quand je debug mon code, la variable jardin flottant est Vrai quand il le faut censé être Faux
boolean isLandscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
Je sais que je peux aussi définir l'orientation des activités par le code, mais j'ai besoin de la mettre en xml pour certaines raisons. Comment puis-je le faire?
Edit: ma 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>
mon onCreate de l'activité de la méthode:
@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");
}
Maintenant, il devient de plus en plus étrange, le jardin flottant variable est Vrai, mais parfois, c'est Faux. C'est en quelque sorte comme un bug.
Ne l'orientation de l'écran en fait, changer ou tout simplement que la variable est de retour vrai?
Vous êtes sur l'activité de la balise de droit? Ne pas le mettre dans la balise application? developer.android.com/guide/topics/manifest/...
l'Activité de l'écran est en mode paysage, pas dans le portrait que je veux.
oui. Je l'ai mis dans l'activité de la balise.
bizarre. J'ai littéralement tout essayé et ne peux pas reproduire le problème. Ce problème sur tous les appareils/les émulateurs?
Vous êtes sur l'activité de la balise de droit? Ne pas le mettre dans la balise application? developer.android.com/guide/topics/manifest/...
l'Activité de l'écran est en mode paysage, pas dans le portrait que je veux.
oui. Je l'ai mis dans l'activité de la balise.
bizarre. J'ai littéralement tout essayé et ne peux pas reproduire le problème. Ce problème sur tous les appareils/les émulateurs?
OriginalL'auteur Cuồn Yết | 2013-06-26
Vous devez vous connecter pour publier un commentaire.
Assurez-vous de le mettre dans le
<activity>
tag, pas la<application>
tag.Il ne fonctionne que dans le
<activity>
tag, mais ne se plaindra pas si vous le mettez dans le<application>
tag.http://developer.android.com/guide/topics/manifest/application-element.html
vs
http://developer.android.com/guide/topics/manifest/activity-element.html
Vous aurez besoin de mettre pour chaque
Activity
vous définissez dans votremanifest.xml
Je ne sais pas ce que c'est, donc, tout semble très bien de ce que vous avez décrit. Peut-être éditer votre post et ajouter votre
manifest.xml
? Nous avons besoin de plus d'indices 🙂vous devez déclarer
screeSize
trop si votre cible déclarée de l'API est de 13 ou plus.Une chose que j'ai pensé (long shot) - assurez-vous il n'y a pas une autre erreur vous empêche de construction et que vous êtes réellement tester la dernière version de votre application. Faire une petite modification à une chaîne ou à quelque chose et voir si cela passe à travers.
J'ai édité le fichier xml de et la méthode onCreate.
OriginalL'auteur Ken Wolf
Tout semble ok, sauf une chose! Je ne sais pas si c'est votre cas ou pas, mais vous devriez lire le la documentation 😀
Vous aurez à déclarer
screeSize
si vous applications cibles de l'API de niveau 13 ou plus.Me le faire savoir cela résout votre problème.
OriginalL'auteur yugidroid