Android – disabilitare la modalità orizzontale?

Come posso distriggersre la modalità orizzontale per alcune delle viste nella mia applicazione Android?

  • Colore di background a spanableString in android
  • Studio di Android: problemi di rendering Stili mancanti - tema corretto per questo layout, imansible trovare lo stile con id
  • Dichiarare le variables locali il più tardi ansible o la parentesi curva più vicina che appartengono?
  • Impostazione di RelativeLayout nel codice java
  • ActivityUnitTestCase e startActivity con ActionBarActivity
  • Come usare il tema Holo.Light e rientrare in 'Luce' su dispositivi pre-honeycomb?
  • L'applicazione Android si blocca su addAccountEsplicamente (account, password, null);
  • Ottenimento di ImageView nero con Picasso e Glide
  • Recupera la firma apk in runtime per Android
  • Layout personalizzato Android
  • L'SDK Manager di Android dà "Errore durante l'accesso all'indirizzo https://dl-ssl.google.com/android/repository/repository.xml" quando si seleziona il repository
  • Android per OpenCV - file di traccia di apertura errori, UnsatisfiedLinkError
  • 28 Solutions collect form web for “Android – disabilitare la modalità orizzontale?”

    Aggiungi android:screenOrientation="portrait" all'attività in AndroidManifest.xml. Per esempio:

     <activity android:name=".SomeActivity" android:label="@string/app_name" android:screenOrientation="portrait" /> 

    EDIT: Dal momento che questo è diventato una risposta super-popolare, mi sento molto colpevole come forzare il ritratto è raramente la soluzione giusta per i problemi a cui è spesso applicato.
    I principali avvertimenti con ritratto forzato:

    • Questo non ti assolve a wherer pensare agli events di ciclo di vita di attività oa risparmiare o ripristinare correttamente lo stato. Ci sono molte cose oltre alla rotazione delle applicazioni che possono innescare una distruzione / ricreazione di attività, incluse cose inevitabili come il multitasking. Non ci sono scorciatoie; imparare ad utilizzare i fasci e retainInstance frammenti di retainInstance .
    • Tieni presente che a differenza dell'esperienza iPhone abbastanza uniforms, ci sono molti dispositivi in ​​cui il ritratto non è l'orientamento chiaramente popolare. Quando gli utenti sono in dispositivi con tastiere hardware o pad di gioco, la Droid 1-4, Xperia Play o Nvidia Shield, forzando il ritratto può rendere la tua applicazione un gigantesco problema di usabilità (specialmente sullo schermo). Se la tua applicazione non dispone di un caso di utilizzo estremamente specifico che potrebbe portre ad un'esperienza negativa diretta per sostenere altri orientamenti, probabilmente non dovreste forzare il paesaggio. Sto parlando di cose come "questa è un'applicazione per il controllo remoto per un telefono con un blaster IR solo su un lato del dispositivo" o "questa è un'applicazione per registratore di cassa per un model specifico di tablet utilizzato sempre in un sistema fisso dock hardware ".

    Quindi la maggior parte delle applicazioni dovrebbe lasciare che i sensori del telefono, il software e la configuration fisica fanno la propria decisione su come l'utente desidera interagire con l'applicazione. Alcuni casi, tuttavia, si può ancora pensare, se non siete soddisfatti del comportmento predefinito dell'orientamento del sensor nel caso di utilizzo:

    • Se la tua preoccupazione principale è l'orientamento accidentale, la modifica dell'attività di metà attività che pensi che i sensori e il software del dispositivo non dovranno affrontare bene (ad esempio, in un gioco basato su inclinazione) considerare il supporto del paesaggio e del ritratto, ma utilizzando il nosensor per l'orientamento. Questo forzano il paesaggio sulla maggior parte delle tavolette e il ritratto sulla maggior parte dei telefoni, ma non lo consiglierei per la maggior parte delle applicazioni "normali" (alcuni utenti apprezzano il softkeyboard del paesaggio sui loro telefoni e molti utenti di tablet leggono in ritratto dovresti lasciarli).
    • Se wherete ancora forzare il ritratto per qualche motivo, il sensorPortrait potrebbe essere migliore di portrait per Android 2.3+; questo consente un ritratto verticale, abbastanza comune nell'utilizzo del tablet.

    Non sapevo l'interruttore di file di AndroidManifest.xml fino a leggere questo post, quindi nelle mie applicazioni ho usato questo invece:

     setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Fixed Portrait orientation 

    aggiungi questo Aggiungi android:screenOrientation="portrait" nel tuo file manifesto where dichiari la tua attività come questa

     <activity android:name=".yourActivity" .... android:screenOrientation="portrait"/> 

    se vuoi fare utilizzando il codice java provare

     setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

    prima di setContentView per la tua attività in aiuto di aiuto onCreate() e facilmente comprensibile per qualcuno ..

    Molte delle risposte qui suggeriscono di utilizzare "portrait" nel file AndroidManifest.xml. Questo potrebbe sembrare una buona soluzione – ma come indicato nella documentazione, si sta selezionando dispositivi che possono avere solo paesaggi. Fornire anche alcuni dispositivi (che funzionano meglio nel paesaggio) per entrare in ritratto, senza get l'orientamento appropriato.

    Il mio suggerimento è quello di usare invece il "nosensor" . Questo lascerà il dispositivo ad utilizzare il suo orientamento preferito predefinito, non blocca gli acquisti / download su Google Play e assicura che il sensore non confondi il tuo gioco (NDK, nel mio caso).

    Se si desidera che le impostazioni utente,

    quindi consiglio setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    È ansible modificare le impostazioni da un menu delle impostazioni.

    Ho bisogno di questo perché i timer devono corrispondere a quello che è sullo schermo e ruotare lo schermo distruggerà l'attività corrente.

    Basta aggiungere come questa linea nel tuo manifesto

    Android: screenOrientation = "ritratto"

     <manifest package="com.example.speedtestmeter" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="MainActivity" android:label="@string/app_name" android:screenOrientation="portrait" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="ComparisionActivity" android:label="@string/app_name" android:screenOrientation="portrait" > </activity> <activity android:name="GaugeView" android:label="@string/app_name" android:screenOrientation="portrait" > </activity> <activity android:name="Resultactivity" android:label="@string/app_name" android:screenOrientation="portrait" > </activity> </application> </manifest> 

    Basta aggiungere questo attributo nel tuo tag di attività.

      android:screenOrientation="portrait" 

    devi cambiare android:screenOrientation="sensorPortait" in AndroidManifest.xml

    Aggiungere il seguente frammento nel file Manifest.

     <activity android:name=".yourActivity" .... android:screenOrientation="portrait"/> 

    Questo support solo la modalità ritratto

    Aggiungi android:screenOrientation="portrait" all'attività che si desidera distriggersre la modalità orizzontale.

    Se desideri distriggersre la Landscape mode for your android app (o una singola attività) tutto quello che devi fare è aggiungere,

    android:screenOrientation="portrait" al tag di attività nel file AndroidManifest.xml .

    Piace:

     <activity android:name="YourActivityName" android:icon="@drawable/ic_launcher" android:label="Your App Name" android:screenOrientation="portrait"> 

    Un altro modo, approccio programmato.

    Se vuoi farlo programmaticamente, vale a dire. utilizzando il codice Java. È ansible farlo aggiungendo il codice riportto di seguito nella class Java dell'attività che non si desidera visualizzare in modalità orizzontale.

     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

    Spero che ti aiuti. Per maggiori dettagli puoi visitare qui entra qui il link description

    Utilizzare questo in onCreate () dell'attività

     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

    Se non si desidera passare attraverso l'inconveniente di aggiungere orientamento in each manifesto di attività migliore, creare una class BaseActivity (eredita 'Attività' o 'AppCompatActivity') che verrà ereditata da each attività dell'applicazione invece che dall'attività 'o' AppCompatActivity 'e basta aggiungere il seguente codice di codice nella tua BaseActivity:

     @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // rest of your code...... } 

    uso

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

    È necessario impostare l'orientamento di ciascuna attività.

     <activity android:name="com.example.SplashScreen2" android:label="@string/app_name" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar" > </activity> <activity android:name="com.example.Registration" android:label="@string/app_name" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar" > </activity> <activity android:name="com.example.Verification" android:label="@string/app_name" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar" > </activity> <activity android:name="com.example.WelcomeAlmostDone" android:label="@string/app_name" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar" > </activity> <activity android:name="com.example.PasswordRegistration" android:label="@string/app_name" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar" > </activity> 

    aggiungere la class all'interno del metodo oncreate ()

      setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

    Se si utilizza Xamarin C # alcune di queste soluzioni non functionranno. Ecco la soluzione che ho trovato per funzionare.

     [Activity(MainLauncher = true, Icon = "@drawable/icon", ScreenOrientation = ScreenOrientation.Portrait)] 

    Sopra la class funziona bene, simile alle altre soluzioni, anche non globalmente applicabile e deve essere inserito in each intestazione di attività.

    Come modificare l'orientamento in alcune delle visualizzazioni

    Invece di bloccare l'orientamento dell'intera attività, è ansible utilizzare questa class per bloccare dynamicmente l'orientamento da qualsiasi punto di vista in modo pragmatico:

    Fai la tua vista Paesaggio

     OrientationUtils.lockOrientationLandscape(mActivity); 

    Fai la tua vista Ritratto

     OrientationUtils.lockOrientationPortrait(mActivity); 

    Sblocca l' orientamento

     OrientationUtils.unlockOrientation(mActivity); 

    Orientamento Util Class

     import android.app.Activity; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.os.Build; import android.view.Surface; import android.view.WindowManager; /* * This class is used to lock orientation of android app in nay android devices */ public class OrientationUtils { private OrientationUtils() { } /** Locks the device window in landscape mode. */ public static void lockOrientationLandscape(Activity activity) { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); } /** Locks the device window in portrait mode. */ public static void lockOrientationPortrait(Activity activity) { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } /** Locks the device window in actual screen mode. */ public static void lockOrientation(Activity activity) { final int orientation = activity.getResources().getConfiguration().orientation; final int rotation = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay() .getRotation(); // Copied from Android docs, since we don't have these values in Froyo // 2.2 int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8; int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9; // Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO if (!(Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO)) { SCREEN_ORIENTATION_REVERSE_LANDSCAPE = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; SCREEN_ORIENTATION_REVERSE_PORTRAIT = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; } if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) { if (orientation == Configuration.ORIENTATION_PORTRAIT) { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } else if (orientation == Configuration.ORIENTATION_LANDSCAPE) { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } } else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) { if (orientation == Configuration.ORIENTATION_PORTRAIT) { activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_PORTRAIT); } else if (orientation == Configuration.ORIENTATION_LANDSCAPE) { activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_LANDSCAPE); } } } /** Unlocks the device window in user defined screen mode. */ public static void unlockOrientation(Activity activity) { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER); } } 

    Basta aggiungere android: screenOrientation = "ritratto" al tag di attività nel manifesto delle applicazioni.

    Per esempio:

      <activity android:name=".ui.activities.MainActivity" android:screenOrientation="portrait"></activity> 
     <android . . . > . . . <manifest . . . > . . . <application> <activity android:name=".MyActivity" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation"> </activity> </application> </manifest> </android> 

    Puoi forzare la tua particolare attività per rimanere sempre in modalità ritratto scrivendo nel manifesto.xml

      <activity android:name=".MainActivity" android:screenOrientation="portrait"></activity> 

    È inoltre ansible forzare la tua attività a rimanere in modalità postrait scrivendo la row successiva nel metodo onCreate () della tua attività

      @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } 

    Dovresti mettere questo codice in file manifesti …….

      <activity android:name=".SunderFlowersActivity" android:label="@string/app_name" android:screenOrientation="portrait"> > </activity> 

    Nella <apphome>/platform/android creata AndroidManifest.xml (copiandola da quella generata). Quindi aggiungere android:screenOrientation= " portrait " a TUTTI gli elementi di attività.

    aggiungere android: screenOrientation = "ritratto" nel file AndroidManifest.xml. example <activity android:name=".MapScreen" android:screenOrientation="portrait"></activity>

    Nella speranza di aiutare qualcun altro, è necessario il seguente attributo sull'ATTIVITÀ in AndroidManifest.xml:

    android: configChanges = "orientamento"

    Quindi, nodo di attività completa:

     <activity android:name="Activity1" android:icon="@drawable/icon" android:label="App Name" android:configChanges="orientation"> 

    se la tua attività relativa al primo stato di orientamento del dispositivo, get l'orientamento corrente del dispositivo nel metodo onCreate e quindi risolverlo per sempre:

      int deviceRotation = ((WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation(); if(deviceRotation == Surface.ROTATION_0) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } else if(deviceRotation == Surface.ROTATION_180) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT); } else if(deviceRotation == Surface.ROTATION_90) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } else if(deviceRotation == Surface.ROTATION_270) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); } 

    In kotlin lo stesso può essere raggiunto in modo programmato utilizzando di seguito

     requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT 
      <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="in.co.nurture.bajajfinserv"> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

    possiamo limitare l'attività in modalità ritratto o orizzontale utilizzando l'attributo o android: screenOrientation.

    se abbiamo più di un'attività nel mio programma allora hai la libertà di limitare qualsiasi attività in qualunque modo e non effettua mai gli altri che non vuoi.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.