mejor - Desactivar el modo paisaje en Android?
camara enfoque manual android (30)
¿Cómo puedo deshabilitar el modo horizontal para algunas de las vistas en mi aplicación de Android?
Agregue android:screenOrientation="portrait"
a la actividad que desea deshabilitar en modo horizontal.
Agregue el siguiente fragmento de código en su archivo de manifiesto.
<activity android:name=".yourActivity"
....
android:screenOrientation="portrait"/>
Este solo soporta modo retrato
Agregue este android:screenOrientation="portrait"
en su archivo de manifiesto donde declara su actividad de esta manera
<activity android:name=".yourActivity"
....
android:screenOrientation="portrait" />
Si quieres hacerlo usando el código java prueba
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
antes de llamar setContentView
método setContentView
para su actividad en onCreate()
.
Espero que esta ayuda y fácilmente comprensible para todos ...
Con la esperanza de ayudar a alguien más, todo lo que necesita es el siguiente atributo en la ACTIVIDAD en AndroidManifest.xml:
android: configChanges = "orientación"
Entonces, nodo de actividad completa:
<activity android:name="Activity1"
android:icon="@drawable/icon"
android:label="App Name"
android:configChanges="orientation">
Deberías poner este código en el archivo de manifiestos .......
<activity android:name=".SunderFlowersActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
>
</activity>
Debes establecer la orientación de cada actividad.
<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>
En el <apphome>/platform/android
creó AndroidManifest.xml
(copiándolo del generado). Luego agregue android:screenOrientation=
" portrait
" a TODOS los elementos de la actividad.
En kotlin mismo se puede lograr programáticamente usando abajo
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
Funcionó para mí, intenta agregar este código en el archivo AndroidManifest
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
....
....
</application>
Muchas de las respuestas aquí sugieren el uso de "portrait"
en su archivo AndroidManifest.xml. Esto puede parecer una buena solución, pero como se señala en la documentación, usted está seleccionando dispositivos que solo pueden tener un aspecto horizontal. También está obligando a ciertos dispositivos (que funcionan mejor en el paisaje) a ir en vertical, no obteniendo la orientación adecuada.
Mi sugerencia es usar "nosensor"
lugar. Esto dejará al dispositivo para que use su orientación preferida predeterminada, no bloqueará ninguna compra / descarga en Google Play y asegurará que el sensor no estropee su juego (NDK, en mi caso).
No estaba al tanto del cambio de archivo AndroidManifest.xml
hasta que leí esta publicación, por lo que en mis aplicaciones he usado esto en su lugar:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Fixed Portrait orientation
Puede forzar que su actividad particular permanezca siempre en modo retrato escribiendo esto en su archivo manifest.xml
<activity android:name=".MainActivity"
android:screenOrientation="portrait"></activity>
También puede forzar su actividad para que permanezca en modo postrazo escribiendo la siguiente línea en el método onCreate () de su actividad
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Puede hacer esto para toda su aplicación sin tener que hacer que todas sus actividades se extiendan a una clase base común.
El truco es primero asegurarse de incluir una subclase de aplicación en su proyecto. En su onCreate (), cuando la aplicación se inicia por primera vez, registra un objeto ActivityLifecycleCallbacks (nivel de API 14+) para recibir notificaciones de eventos del ciclo de vida de la actividad.
Esto le brinda la oportunidad de ejecutar su propio código cada vez que se inicie (o detenga, reanude, o lo que sea) cualquier actividad en su aplicación. En este punto, puede llamar a setRequestedOrientation () en la actividad recién creada.
Y no olvide agregar app: name = ". MyApp" en su archivo de manifiesto.
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);
}
....
});
}
}
Si desea deshabilitar el Landscape mode for your android app
(o una sola actividad) todo lo que necesita hacer es agregar,
android:screenOrientation="portrait"
a la etiqueta de actividad en el archivo AndroidManifest.xml
.
Me gusta:
<activity android:name="YourActivityName"
android:icon="@drawable/ic_launcher"
android:label="Your App Name"
android:screenOrientation="portrait">
Otra manera, enfoque programático.
Si quieres hacer esto programáticamente es decir. utilizando código Java. Puede hacerlo agregando el siguiente código en la clase de Java de la actividad que no desea que se muestre en modo horizontal.
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Espero que te ayude. Para más detalles puedes visitar aquí ingresa la descripción del enlace aquí
Si está utilizando Xamarin C #, algunas de estas soluciones no funcionarán. Aquí está la solución que encontré para trabajar.
[Activity(MainLauncher = true, Icon = "@drawable/icon", ScreenOrientation = ScreenOrientation.Portrait)]
Por encima de la clase funciona bien, similar a las otras soluciones, que tampoco son aplicables globalmente y deben colocarse en cada encabezado de actividad.
Si no desea pasar por la molestia de agregar mejor orientación en cada entrada de manifiesto de actividad, cree una clase BaseActivity (hereda ''Activity'' o ''AppCompatActivity'') que será heredada por cada actividad de su aplicación en lugar de ''Activity ''o'' AppCompatActivity ''y simplemente agregue el siguiente fragmento de código en su BaseActivity:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// rest of your code......
}
Si quieres configuraciones de usuario,
entonces recomendaría setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Puede cambiar la configuración desde un menú de configuración.
Necesito esto porque mis temporizadores deben corresponder a lo que está en la pantalla, y al girar la pantalla se destruirá la actividad actual.
Si su actividad está relacionada con el primer estado de orientación del dispositivo, obtenga la orientación actual del dispositivo en el método onCreate
y luego corríjala para siempre:
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);
}
Simplemente agregue android: screenOrientation = "portrait" a la etiqueta de actividad en el manifiesto de la aplicación.
P.ej:
<activity android:name=".ui.activities.MainActivity"
android:screenOrientation="portrait"></activity>
Solo agrega como esta linea en tu manifiesto
android: screenOrientation = "retrato"
<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>
Solo agrega este atributo en tu etiqueta de actividad.
android:screenOrientation="portrait"
Usa esto en onCreate () de la Actividad
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
añadir clase dentro del método oncreate ()
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
agregar android: screenOrientation = "retrato" en el archivo AndroidManifest.xml. example <activity android:name=".MapScreen" android:screenOrientation="portrait"></activity>
debes cambiar android:screenOrientation="sensorPortait"
en AndroidManifest.xml
utilizar
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait"
Cómo cambiar la orientación en algunas de las vistas.
En lugar de bloquear la orientación de toda la actividad, puede usar esta clase para bloquear dinámicamente la orientación desde cualquiera de sus puntos de vista de manera pragmática:
Haz tu vista Paisaje
OrientationUtils.lockOrientationLandscape(mActivity);
Haz tu vista Retrato
OrientationUtils.lockOrientationPortrait(mActivity);
Desbloquear Orientación
OrientationUtils.unlockOrientation(mActivity);
Orientación a la clase de servicios públicos.
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);
}
}
Agregue android:screenOrientation="portrait"
a la actividad en AndroidManifest.xml. Por ejemplo:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
EDITAR: Dado que esta se ha convertido en una respuesta súper popular, me siento muy culpable ya que forzar el retrato rara vez es la solución correcta para los problemas a los que se aplica con frecuencia.
Las principales advertencias con retrato forzado:
- Esto no lo exime de tener que pensar en los eventos del ciclo de vida de la actividad o en el estado correcto de guardar / restaurar. Hay muchas otras cosas además de la rotación de aplicaciones que pueden desencadenar una destrucción / recreación de la actividad, incluidas cosas inevitables como la multitarea. No hay atajos; Aprende a usar paquetes y
retainInstance
fragmentos deretainInstance
. - Tenga en cuenta que, a diferencia de la experiencia del iPhone bastante uniforme, hay muchos dispositivos en los que el retrato no es la orientación claramente popular. Cuando los usuarios están en dispositivos con teclados de hardware o juegos como el Droid 1-4, Xperia Play o el Nvidia Shield, forzar el retrato puede hacer que su aplicación sea una molestia de uso gigante (especialmente en el Shield). Si su aplicación no tiene un caso de uso extremadamente específico que podría conducir a una experiencia totalmente negativa para apoyar otras orientaciones, probablemente no debería forzar el paisaje. Estoy hablando de cosas como "esta es una aplicación de control remoto para un teléfono con un blaster IR en un solo lado del dispositivo" o "esta es una aplicación de caja registradora para un modelo específico de tableta que siempre se utiliza en una base fija. muelle de hardware ".
Por lo tanto, la mayoría de las aplicaciones deberían permitir que los sensores, el software y la configuración física del teléfono tomen su propia decisión sobre cómo el usuario desea interactuar con su aplicación. Sin embargo, es posible que desee pensar en algunos casos si no está satisfecho con el comportamiento predeterminado de sensor
orientación del sensor
en su caso de uso:
- Si su principal preocupación son los cambios de orientación accidentales en la mitad de la actividad, cree que los sensores y el software del dispositivo no se manejarán bien (por ejemplo, en un juego basado en la inclinación) considere la posibilidad de usar el paisaje y el retrato, pero use
nosensor
para la orientación. Esto obliga a la vista horizontal en la mayoría de las tabletas y a la vista vertical en la mayoría de los teléfonos, pero aún así no lo recomendaría para la mayoría de las aplicaciones "normales" (a algunos usuarios simplemente les gusta teclear el teclado de software en sus teléfonos, y muchos usuarios de tabletas leen en vertical - y usted debe dejarlos). - Si aún necesita forzar el retrato por alguna razón,
sensorPortrait
posible quesensorPortrait
sea mejor que elportrait
para Android 2.3+; esto permite un retrato al revés, que es bastante común en el uso de tabletas.
<?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>
podemos restringir la Actividad en modo vertical u horizontal utilizando el atributo o android: screenOrientation.
si tenemos más de una actividad en mi programa, entonces tiene la libertad de restringir cualquiera de las actividades en cualquiera de los modos y nunca afectará a las otras que no desea.
<android . . . >
. . .
<manifest . . . >
. . .
<application>
<activity android:name=".MyActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
</activity>
</application>
</manifest>
</android>