Olhando para o AndroidManifest.xml ( link ), na linha 9:
<activity android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:name="VncCanvasActivity">
Essa linha especifica screenOrientation
como paisagem, mas o autor vai mais longe ao substituir qualquer alteração na orientação da tela configChanges="orientation|keyboardHidden"
. Isso aponta para uma função substituída no VncCanvasActivity.java.
Se você olhar para VncCanvasActivity, na linha 109 é a função substituída:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// ignore orientation/keyboard change
super.onConfigurationChanged(newConfig);
}
O autor especificamente colocou um comentário para ignorar qualquer alteração no teclado ou na orientação.
Se você quiser alterar isso, volte ao arquivo AndroidManifest.xml mostrado acima e altere a linha para:
<activity android:screenOrientation="sensor" android:name="VncCanvasActivity">
Isso deve alterar o programa para alternar entre retrato e paisagem quando o usuário gira o dispositivo.
Isso pode funcionar, mas pode atrapalhar a aparência da GUI, dependendo de como o layout foi criado. Você terá que dar conta disso. Além disso, dependendo de como as atividades são codificadas, você pode perceber que, quando a orientação da tela é alterada, os valores preenchidos em qualquer caixa de entrada desaparecem. Isso também pode ter que ser tratado.
configChanges
atributo é necessário? Parece funcionar no meu telefone sem teclado ... Em que situações a orientação mudará para retrato se vocêscreenOrientation="landscape"
omitir oconfigChanges
?If your application targets API level 13 or higher (as declared by the minSdkVersion and targetSdkVersion attributes), then you should also declare the "screenSize" configuration, because it also changes when a device switches between portrait and landscape orientations.
Você pode definir os mesmos dados no seu código java também.
Outros valores no ActivityInfo permitirão que você o ajuste novamente para retrato controlado por sensor ou bloqueado. Pessoalmente, gosto de defini-lo como algo no manifesto, conforme sugerido em outra resposta a esta pergunta, e depois alterá-lo posteriormente, usando a chamada acima no SDK do Android, se houver necessidade.
fonte
If the activity is currently in the foreground or otherwise impacting the screen orientation, the screen will immediately be changed (possibly causing the activity to be restarted)
No meu
OnCreate(Bundle)
, geralmente faço o seguinte:fonte
Você pode especificar a orientação de uma atividade no manifesto. Veja aqui .
fonte
No manifesto:
Na sua atividade:
fonte
A seguir, o código que eu usei para exibir todas as atividades no modo paisagem:
fonte
Uma solução rápida e simples é para o arquivo AndroidManifest.xml, adicione o seguinte para cada atividade que você deseja forçar ao modo paisagem:
fonte
Isso funciona para o Xamarin.Android. Em OnCreate ()
fonte
É isso aí!! Longa espera por essa correção.
Eu tenho um problema antigo do Android sobre iniciar duas atividades que exigiam (programaticamente) o modo paisagem:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
Agora o Android faz o modo Paisagem no início.
fonte
Arslan, por que você deseja forçar a orientação de forma programática, embora já exista uma maneira de manifestar
<activity android:name=".youractivityName" android:screenOrientation="portrait" />
fonte
Fazê-lo no código é IMO errado e, mais ainda, se você o colocar no onCreate. Faça isso no manifesto e o "sistema" conhece a orientação desde a inicialização do aplicativo. E esse tipo de meta ou "orientação" de nível superior DEVE estar no manifesto. Se você quiser provar isso, defina uma pausa no onCreate da atividade. Se você fizer isso no código, ele será chamado duas vezes: inicia no modo Retrato e depois muda para Paisagem. Isso não acontece se você fizer isso no manifesto.
fonte
Para o Android 4.0 (Ice Cream Sandwich) e posterior, eu precisava adicioná-los, além do
landscape
valor.Usar apenas
keyboardHidden|orientation
ainda resultaria em vazamento de memória e recreação de minhas atividades ao pressionar o botão liga / desliga.fonte
orientation|screensize
não era suficiente em todos os casos. Autorotaria de volta ao retrato.Use o ActivityInfo (android.content.pm.ActivityInfo) em seu método onCreate antes de chamar o método setLayout como este
fonte
use Only
android: screenOrientation = "portrait" tools: ignore = "LockedOrientationActivity"
fonte
Adicionar as seguintes linhas na atividade
Você precisa entrar em todas as atividades
para paisagem
para retrato
Aqui o exemplo de MainActivity
fonte
Pressione
CTRL+F11
para girar a tela.fonte