Respuestas:
Puede especificar android:screenOrientation="portrait"
para cada actividad en su archivo manifest.xml. No puede especificar esta opción en la application
etiqueta.
Otra opción es hacerlo mediante programación, por ejemplo en una Activity
clase base:
@Override
public void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
La última opción es hacerlo con los oyentes del ciclo de vida de la actividad, que solo está disponible desde Android 4.0 (API 14+). Todo sucede en una Application
clase 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á crear, que será una implementación vacía de ActivityLifecycleCallbacks
(para que no tenga que anular todos y cada uno de los métodos de esa interfaz cuando simplemente necesita uno de ellos).
Sí, puede hacer esto tanto programáticamente como para todas sus actividades haciendo una actividad abstracta que extienda todas sus 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 utilizar para un menú global.
ActivityInfo.SCREEN_ORIENTATION_NOSENSOR
debería ser la mejor respuesta porque está destinado a dejar el dispositivo en el estado predeterminado porque algunos dispositivos no tienen una orientación vertical. Sin embargo, 'nosensor' NO funciona para mí, por lo que la respuesta de @ arcone me representa.
Puede hacer esto para toda su aplicación sin tener que hacer que todas sus actividades extiendan una clase base común.
El truco es primero asegurarse de incluir una Application
subclase en su proyecto. En su onCreate()
, llamado cuando su aplicación se inicia por primera vez, registra unActivityLifecycleCallbacks
objeto (nivel 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 inicia cualquier actividad en su aplicación (o se detiene, se reanuda o lo que sea). En este punto, puede llamar setRequestedOrientation()
a 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 puede lograr lo mismo escribiendo el código en su archivo de clase como:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Agregue android: screenOrientation = "portrait" a la actividad en AndroidManifest.xml. Por ejemplo:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
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 vertical.
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 a la API de nivel 13 o superior (según lo declarado por los atributos minSdkVersion y targetSdkVersion), también debe declarar la configuración "screenSize", porque también cambia cuando un dispositivo cambia entre las orientaciones vertical y horizontal.
"screenSize" El tamaño de pantalla disponible actual ha cambiado. Esto representa un cambio en el tamaño disponible actualmente, en relación con la relación de aspecto actual, por lo que cambiará cuando el usuario cambie entre horizontal y vertical. Sin embargo, si su aplicación se dirige al nivel de API 12 o inferior, entonces su actividad siempre maneja este cambio de configuración en sí mismo (este cambio de configuración no reinicia su actividad, incluso cuando se ejecuta en un dispositivo Android 3.2 o superior). Agregado en API nivel 13.
Entonces, en el archivo AndroidManifest.xml, podemos poner:
<activity
android:name=".activities.role_activity.GeneralViewPagerActivity"
android:label="@string/title_activity_general_view_pager"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize"
>
</activity>
Agregando <preference name="orientation" value="portrait" />
debajo<widget>
de mi config.xml funcionó para mí.
(Las otras soluciones no funcionaron en mi dispositivo, se sobrescribieron durante la construcción o dieron errores de desaprobación durante el proceso de construcción).
en el archivo Manifiesto, qué actividad desea utilizar en "retrato" , debe escribir este código 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 horizontal usa este código como este
android:screenOrientation="landscape"
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//setting screen orientation locked so it will be acting as potrait
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
}
Si alguien se preguntaba, cómo podría hacer esto para toda su aplicación sin tener que hacer que todas sus actividades extiendan 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í:
<application android:allowBackup="true"
android:name=".InteractiveStoryApplication"
Similar a la respuesta de Graham Borland ... pero parece que no tiene que crear una clase de Aplicación si no lo desea ... solo cree una Actividad Base en su 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 extienda esta clase en lugar de AppCompatActivity donde quiera usar el modo Potrait
public class your_activity extends BaseActivity {}
Para usuarios de Xamarin:
Si extiende todas sus actividades a BaseActivity
Solo agregue:
this.RequestedOrientation = ScreenOrientation.Portrait;
Esto resolverá el problema. Si desea que alguna actividad en particular esté en paisaje, anule esto OnActivityCreated
. Como:
this.Activity.RequestedOrientation = ScreenOrientation.Landscape;
En su Manifiesto, escriba esto:
<activity
android:screenOrientation="portrait"
<!--- Rest of your application information ---!>
</activity>