Réponses:
Dans le manifeste, définissez ceci pour toutes vos activités:
<activity android:name=".YourActivity"
android:configChanges="orientation"
android:screenOrientation="portrait"/>
Laisse-moi expliquer:
android:configChanges="orientation"
vous dites à Android que vous serez responsable des changements d'orientation.android:screenOrientation="portrait"
vous définissez le mode d'orientation par défaut.android:screenOrientation="portrait"
PortraitActivity
et lors de l'appel onCreate setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
Toutes les activités prolongeant cela ne tourneront pas
Activity
, comme une activité s'étend de ListActivity
tandis que d'autres s'étendent simplement de Activity
?
Dans Android File Manifest, mettez votre attribut pour <activity>
queandroid:screenOrientation="portrait"
Il y a deux façons,
android:screenOrientation="portrait"
pour chaque activité dans le fichier manifestethis.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
chaque fichier java.dans le manifeste:
<activity android:name=".activity.MainActivity"
android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
ou: dans la MainActivity
@SuppressLint("SourceLockedOrientationActivity")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
app/src/main/AndroidManifest.xml; lineNumber: 20; columnNumber: 50; The prefix "tools" for attribute "tools:ignore" associated with an element type "activity" is not bound.
. L'ajout xmlns:tools="http://schemas.android.com/tools"
de l'élément racine résout le problème
Ancien poste, je sais. Afin d'exécuter votre application toujours en mode portrait, même lorsque l'orientation peut être ou est inversée, etc. (par exemple sur les tablettes), j'ai conçu cette fonction qui est utilisée pour définir l'appareil dans la bonne orientation sans avoir besoin de savoir comment le portrait et le paysage les fonctionnalités sont organisées sur l'appareil.
private void initActivityScreenOrientPortrait()
{
// Avoid screen rotations (use the manifests android:screenOrientation setting)
// Set this to nosensor or potrait
// Set window fullscreen
this.activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
DisplayMetrics metrics = new DisplayMetrics();
this.activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
// Test if it is VISUAL in portrait mode by simply checking it's size
boolean bIsVisualPortrait = ( metrics.heightPixels >= metrics.widthPixels );
if( !bIsVisualPortrait )
{
// Swap the orientation to match the VISUAL portrait mode
if( this.activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT )
{ this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); }
else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ); }
}
else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); }
}
Fonctionne comme un charme!
AVIS: Modifiez this.activity
par votre activité ou ajoutez-le à l'activité principale et supprimez this.activity
;-)
j'utilise
android:screenOrientation="nosensor"
Il est utile si vous ne souhaitez pas prendre en charge le mode portrait à l'envers.