¿Cómo configurar toda la aplicación en modo retrato solamente?

¿Cómo lo configuro para que la aplicación se ejecute solo en modo retrato? Quiero que el modo de paisaje esté desactivado mientras la aplicación se está ejecutando. ¿Cómo lo hago programáticamente?

Para cualquier versión de Android

De XML

Puede especificar android:screenOrientation="portrait" para cada actividad en su archivo manifest.xml. No puede especificar esta opción en la etiqueta de la application .

De Java

Otra opción es hacerlo programáticamente, por ejemplo en una clase base de Activity :

 @Override public void onCreate(Bundle savedInstanceState) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } 

Para Android 4+ (API 14+)

La última opción es hacerlo con escuchas del ciclo de vida de la actividad, que solo está disponible desde Android 4.0 (API 14+). Todo sucede en una clase de Application personalizada:

 @Override public void onCreate() { super.onCreate(); registerActivityLifecycleCallbacks(new ActivityLifecycleAdapter() { @Override public void onActivityCreated(Activity a, Bundle savedInstanceState) { a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } }); } 

ActivityLifecycleAdapter es solo una clase auxiliar que necesitarás crear, que será una implementación vacía de ActivityLifecycleCallbacks (para que no tengas que anular todos y cada uno de los métodos de esa interfaz cuando simplemente necesites uno de ellos).

Sí, puedes hacer esto tanto programáticamente como para todas tus actividades haciendo una actividad abstracta que extienda todas tus actividades.

 public abstract class AbstractActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } } 

Esta actividad abstracta también se puede usar para un menú global.

Puede hacer esto para toda su aplicación sin tener que hacer que todas sus actividades amplíen una clase base común.

El truco es primero asegurarse de incluir una subclase de Application en su proyecto. En su onCreate() , llamado cuando su aplicación se inicia por primera vez, registra un objeto ActivityLifecycleCallbacks (nivel API 14+) para recibir notificaciones de los eventos del ciclo de vida de la actividad.

Esto le da la oportunidad de ejecutar su propio código cada vez que se inicia (o se detiene, reanuda, o lo que sea) alguna actividad en su aplicación. En este punto, puede llamar a setRequestedOrientation() en la actividad recién creada.

 class MyApp extends Application { @Override public void onCreate() { super.onCreate(); // register to be informed of activities starting up registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { // new activity created; force its orientation to portrait activity.setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } .... }); } } 

Puede configurar esto en su archivo de manifiesto …

 android:name=".your launching activity name" android:screenOrientation="portrait" 

y también puedes lograr lo mismo escribiendo el código en tu archivo de clase como:

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

Agregue android: screenOrientation = “portrait” a la actividad en AndroidManifest.xml. Por ejemplo:

  

Utilizar:

 android:screenOrientation="portrait" 

Simplemente escriba esta línea en el archivo de manifiesto de su aplicación en cada actividad que desee mostrar solo en modo retrato.

Escriba esto en su archivo de manifiesto, para cada actividad:

 android:screenOrientation="portrait" 

A partir de la guía para desarrolladores de Android:

“orientación” La orientación de la pantalla ha cambiado: el usuario ha girado el dispositivo. Nota: Si su aplicación se dirige al nivel API 13 o superior (según lo declarado por los atributos minSdkVersion y targetSdkVersion), también debe declarar la configuración de “tamaño de pantalla”, porque también cambia cuando un dispositivo cambia entre orientación vertical y paisaje.

“screenSize” El tamaño de pantalla actual disponible ha cambiado. Esto representa un cambio en el tamaño disponible actualmente, relativo a la relación de aspecto actual, por lo que cambiará cuando el usuario cambie entre paisaje y retrato. Sin embargo, si su aplicación se dirige al nivel API 12 o inferior, su actividad siempre maneja esta configuración por sí misma (este cambio de configuración no reinicia su actividad, incluso cuando se ejecuta en un dispositivo con Android 3.2 o superior). Agregado en el nivel de API 13.

Entonces, en el archivo AndroidManifest.xml, podemos poner:

   

Agregar en en mi config.xml funcionó para mí.

(Las otras soluciones o no funcionaron en mi dispositivo, se sobrescribieron durante la construcción o dieron errores de desaprobación durante el proceso de comstackción).

en el archivo Manifiesto qué actividad desea usar en “retrato” debe escribir estos códigos en la etiqueta Actividad

  android:screenOrientation="portrait" 

Me gusta esto

  android:icon="@drawable/icon" android:name="com.zemkoapps.hd.wallpaper.AndroidGridLayoutActivity" android:screenOrientation="portrait" > 

pero si quieres pantalla en el paisaje utiliza este código como este

 android:screenOrientation="landscape" 

Si alguien se preguntaba cómo podría hacer esto para toda su aplicación sin tener que hacer que todas sus actividades amplíen una clase base común en Kotlin , vea el siguiente ejemplo:

 class InteractiveStoryApplication: Application() { override fun onCreate() { super.onCreate() registerActivityLifecycleCallbacks(object: ActivityLifecycleCallbacks { override fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?) { activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT } override fun onActivityPaused(activity: Activity?) { } override fun onActivityResumed(activity: Activity?) { } override fun onActivityDestroyed(activity: Activity?) { } override fun onActivitySaveInstanceState(activity: Activity?, outState: Bundle?) { } override fun onActivityStarted(activity: Activity?) { } override fun onActivityStopped(activity: Activity?) { } }) } } 

y luego tienes que agregar tu clase base común en AndroidManifest así:

  

Puedes hacerlo de dos maneras.

  1. Agregue android:screenOrientation="portrait" en su archivo de manifiesto a la actividad correspondiente
  2. Agregar setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); a su actividad en el método `onCreate ()

Similar a la respuesta de Graham Borland … pero parece que no tienes que crear una clase de aplicación si no quieres … solo crea una actividad base en tu proyecto

 public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_base); setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } 

Y amplíe esta clase en lugar de AppCompatActivity donde quiera usar el modo Potrait

 public class your_activity extends BaseActivity {} 

En tu Manifiesto escribe esto: