Estoy tratando de forzar el modo "vertical" para mi aplicación porque mi aplicación no está diseñada para el modo "horizontal".
Después de leer algunos foros, agregué estas líneas en mi archivo de manifiesto:
<application
android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:screenOrientation="portrait">
Pero no funciona en mi dispositivo (HTC Desire). Cambia de "retrato" a "paisaje", ignorando las líneas del archivo de manifiesto.
Después de leer más foros, intenté agregar esto en mi archivo de manifiesto:
<application
android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:configChanges="orientation"
android:screenOrientation="portrait">
y esta función en mi clase de actividad:
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Pero de nuevo, no hubo suerte.
Tenga en cuenta que
se agrega en el archivo de manifiesto, donde se define la actividad.
fuente
Creo que
android:screenOrientation="portrait"
puede usarse para actividades individuales. Entonces use ese atributo en<activity>
etiquetas como:fuente
Si tiene mucha actividad como la mía, en su aplicación O si no desea ingresar el código para cada etiqueta de actividad en manifiesto, puede hacerlo.
en su clase Base de aplicación, recibirá una devolución de llamada del ciclo de vida
así que, básicamente, lo que sucede en cada actividad cuando se crea la creación on on Application Class aquí es el código ...
espero que esto ayude.
fuente
Establezca el modo de fuerza vertical u horizontal , agregue líneas respectivamente
Importar debajo de la línea:
Agregar debajo de la línea justo arriba
setContentView(R.layout.activity_main);
Para el retrato :
Para paisajismo :
Esto definitivamente funcionará.
fuente
Según la documentación de Android, a menudo también debe incluir
screenSize
como posible cambio de configuración.Además, si todos incluyen el valor
keyboardHidden
en sus ejemplos, ¿no debería también considerar a continuaciónlocale
,mcc
,fontScale
,keyboard
y otros? ..fuente
Tenía esta línea en mi AndroidManifest.xml
Lo cual cambié a (recién agregado
android:screenOrientation="portrait"
)Esto me arregló las cosas.
fuente
Algo para complementar: he actualizado una aplicación recientemente, la anterior funcionaba tanto en modo horizontal como vertical, y quiero que la versión actualizada funcione en modo vertical, así que agregué
a la actividad correspondiente, y simplemente se bloqueó cuando probé la actualización. Entonces agregué
También, y funciona.
fuente
Creo que quieres agregar
android:configChanges="orientation|keyboardHidden"
a tu actividad? De lo contrario, la actividad se reinicia en config-change. ElonConfigurationChanged
no se llamaría entonces, solo elonCreate
fuente
Si desea admitir diferentes orientaciones
debug
yrelease
compilaciones, escríbalo (consulte https://developer.android.com/studio/build/gradle-tips#share-properties-with-the-manifest ).En
build.gradle
suapp
carpeta escriba:Luego
AndroidManifest
, puede usar esta variable "orientación" en cualquierActivity
:Puedes agregar
android:configChanges
:manifestPlaceholders = [configChanges: "", orientation: "fullSensor"]
en depuración ymanifestPlaceholders = [configChanges: "keyboardHidden|orientation|screenSize", orientation: "portrait"]
en liberación,fuente
Respuesta corta: no lo hagas.
Rediseñe su aplicación para que pueda ejecutarse tanto en modo vertical como horizontal. No existe una interfaz de usuario que no pueda diseñarse para funcionar tanto en vertical como en horizontal; solo desarrolladores flojos o poco imaginativos.
La razón por la cual es bastante simple. Desea que su aplicación sea utilizable por el mayor público posible en tantos dispositivos diferentes como sea posible. Al forzar una orientación de pantalla en particular, evita que su aplicación se ejecute (usablemente) en dispositivos que no admiten esa orientación y frustra y enajena a los clientes potenciales que prefieren una orientación diferente.
Ejemplo: diseña tu aplicación para forzar el modo vertical. Un cliente descarga la aplicación en un dispositivo 2 en 1 que utiliza principalmente en modo horizontal.
Consecuencia 1: su aplicación no se puede usar, o su cliente se ve obligado a desacoplar su dispositivo, rotarlo y usarlo en una orientación que no les resulta familiar o cómoda.
Consecuencia 2: el cliente se frustra por el diseño no intuitivo de su aplicación y encuentra una alternativa o abandona la aplicación por completo.
Estoy luchando con esto con una aplicación en este momento y como consumidor y desarrollador, lo odio. Tan útil como es la aplicación, tan fantásticas como son las características que ofrece, odio absolutamente la aplicación porque me obliga a usar una orientación que es contraria a cualquier otra forma en que uso mi dispositivo.
No quiere que sus clientes odien su aplicación.
Sé que esto no responde directamente a la pregunta, así que quiero explicarlo con un poco más de detalle para aquellos que tienen curiosidad.
Hay una tendencia para que los desarrolladores sean realmente buenos escribiendo código y realmente terribles en el diseño. Esta pregunta, aunque suena como una pregunta de código y el autor de la pregunta ciertamente siente que es una pregunta de código, es realmente una pregunta de diseño.
La pregunta realmente es "¿Debo bloquear la orientación de la pantalla en mi aplicación?" El autor de la pregunta eligió diseñar la interfaz de usuario para que funcione y se vea bien solo en modo vertical. Sospecho que fue para ahorrar tiempo de desarrollo o porque el flujo de trabajo de la aplicación es particularmente propicio para un diseño vertical (común para los juegos móviles). Pero esas razones descuidan todos los factores importantes reales que motivan el diseño adecuado.
Compromiso con el cliente: desea que sus clientes se sientan atraídos por su aplicación, no expulsados de ella. La aplicación debe pasar sin problemas de lo que sea que esté haciendo su cliente antes de abrir su aplicación. (Esta es la razón por la cual la mayoría de las plataformas tienen principios de diseño consistentes, por lo que la mayoría de las aplicaciones se parecen más o menos aunque no es necesario).
Respuesta del cliente: desea que sus clientes reaccionen positivamente a su aplicación. Deberían disfrutar de usarlo. Incluso si se trata de una aplicación de nómina para el trabajo, debería ser un placer para ellos abrirla y registrarla. La aplicación debería ahorrarle tiempo a sus clientes y reducir la frustración por las alternativas. (Las aplicaciones que molestan a los usuarios generan resentimiento contra su aplicación, lo que se convierte en resentimiento contra su marca).
Conversión de clientes: desea que sus clientes puedan pasar rápida y fácilmente de la navegación a la interacción. Este es el objetivo final de cualquier aplicación, convertir las impresiones en ingresos. (Las aplicaciones que no generan ingresos son una pérdida de tiempo para crear, desde una perspectiva comercial).
Una interfaz de usuario mal diseñada reduce el compromiso y la respuesta del cliente, lo que finalmente resulta en menores ingresos. En un mundo centrado en los dispositivos móviles (y particularmente en el tema de los modos de visualización vertical / horizontal), esto explica por qué el diseño web receptivo es tan importante. Walmart Canadá introdujo un diseño receptivo en su sitio web en noviembre de 2013 y experimentó un aumento del 20% en la conversión de clientes. O'Neill Clothing implementó un diseño web receptivo y los ingresos de los clientes que usan dispositivos iOS aumentaron 101.25% , y 591.42% de los clientes que usan dispositivos Android .
También existe una tendencia a que los desarrolladores se concentren intensamente en implementar una solución particular (como bloquear la orientación de la pantalla), y la mayoría de los desarrolladores en este sitio estarán muy contentos de ayudar a implementar esa solución, sin cuestionar si eso es lo mejor solución al problema.
Bloquear la orientación de la pantalla es el equivalente de diseño de la interfaz de usuario de implementar un bucle do-while. Eres realmente seguro de que quieres hacerlo de esa manera, o hay una alternativa mejor?
No fuerce su aplicación a un solo modo de visualización. Invierta el tiempo extra y el esfuerzo para que responda.
fuente