Estou tentando forçar o modo "retrato" para o meu aplicativo porque meu aplicativo não foi projetado para o modo "paisagem".
Depois de ler alguns fóruns, adicionei estas linhas no meu arquivo de manifesto:
<application
android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:screenOrientation="portrait">
Mas não funciona no meu dispositivo (HTC Desire). Ele muda de "retrato" para "paisagem", ignorando as linhas do arquivo de manifesto.
Depois de ler mais fóruns, tentei adicionar isso ao meu arquivo de manifesto:
<application
android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:configChanges="orientation"
android:screenOrientation="portrait">
e esta função na minha classe de atividade:
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Mas, novamente, sem sorte.
Observe que
é adicionado no arquivo de manifesto - onde a atividade é definida.
fonte
Eu acho que
android:screenOrientation="portrait"
pode ser usado para atividades individuais. Então use esse atributo na<activity>
tag como:fonte
Se você estiver tendo muitas atividades como a minha, no seu aplicativo ou se não quiser inserir o código para cada marca de atividade no manifesto, poderá fazê-lo.
na sua classe Application Base, você receberá um retorno de chamada do ciclo de vida
Então, basicamente, o que acontece em cada atividade ao criar o na criação na Classe de Aplicativo é acionado aqui é o código.
Eu espero que isso ajude.
fonte
Defina o modo retrato ou paisagem , adicione linhas respectivamente.
Importar abaixo da linha:
Adicionar linha abaixo logo acima
setContentView(R.layout.activity_main);
Para Retrato :
Para Landscap :
Isso definitivamente vai funcionar.
fonte
De acordo com a documentação do Android, você também deve incluir frequentemente
screenSize
como uma possível alteração na configuração.Além disso, se todos incluem valor
keyboardHidden
em seus exemplos, você não deveria então também considerarlocale
,mcc
,fontScale
,keyboard
e outros? ..fonte
Eu tinha essa linha no meu AndroidManifest.xml
Que mudei para (acabei de adicionar
android:screenOrientation="portrait"
)Isso consertou as coisas para mim.
fonte
Algo para complementar: atualizei um aplicativo recentemente, o anterior estava funcionando nos modos paisagem e retrato e quero que a versão atualizada funcione no modo retrato, então adicionei
para a atividade correspondente e ela falhou quando testei a atualização. Então eu adicionei
também e funciona.
fonte
Eu acho que você deseja adicionar
android:configChanges="orientation|keyboardHidden"
à sua atividade? Caso contrário, a atividade será reiniciada na mudança de configuração. OonConfigurationChanged
não seria chamado então, apenas oonCreate
fonte
Se você deseja oferecer suporte a orientações
debug
erelease
compilações diferentes, escreva-o (consulte https://developer.android.com/studio/build/gradle-tips#share-properties-with-the-manifest ).Em
build.gradle
de suaapp
gravação pasta:Então,
AndroidManifest
você pode usar esta variável "orientação" em qualquerActivity
:Você pode adicionar
android:configChanges
:manifestPlaceholders = [configChanges: "", orientation: "fullSensor"]
na depuração emanifestPlaceholders = [configChanges: "keyboardHidden|orientation|screenSize", orientation: "portrait"]
na liberação,fonte
Resposta curta: não faça isso.
Redesenhe seu aplicativo para que ele possa ser executado nos modos retrato e paisagem. Não existe uma interface do usuário que não possa ser projetada para funcionar em retrato e paisagem; apenas desenvolvedores preguiçosos ou sem imaginação.
A razão pela qual é bastante simples. Você deseja que seu aplicativo seja utilizável pelo maior público possível em tantos dispositivos diferentes quanto possível. Ao forçar uma orientação de tela específica, você impede que seu aplicativo seja executado (utilizável) em dispositivos que não suportam essa orientação e frustra e aliena clientes em potencial que preferem uma orientação diferente.
Exemplo: você cria seu aplicativo para forçar o modo retrato. Um cliente baixa o aplicativo em um dispositivo 2 em 1, usado predominantemente no modo paisagem.
Consequência 1: seu aplicativo não pode ser usado ou seu cliente é forçado a desencaixar o dispositivo, girá-lo e usá-lo em uma orientação que não seja familiar ou confortável para ele.
Consequência 2: o cliente fica frustrado com o design não intuitivo do seu aplicativo e encontra uma alternativa ou descarta o aplicativo completamente.
Estou lutando contra isso com um aplicativo no momento e, como consumidor e desenvolvedor, odeio isso. Por mais útil que o aplicativo seja, por mais fantástico que sejam os recursos que ele oferece, eu odeio o aplicativo, porque ele me obriga a usar uma orientação que é contrária a qualquer outra maneira de usar o dispositivo.
Você não quer que seus clientes odeiem seu aplicativo.
Sei que isso não responde diretamente à pergunta, então quero explicá-la com mais detalhes para quem está curioso.
Há uma tendência para os desenvolvedores serem realmente bons em escrever código e realmente terríveis em design. Essa pergunta, embora pareça uma questão de código e o solicitante certamente sinta que é uma questão de código, é realmente uma questão de design.
A questão é realmente "Devo bloquear a orientação da tela no meu aplicativo?" O solicitante optou por projetar a interface do usuário para funcionar e ter uma boa aparência apenas no modo retrato. Suspeito que foi para economizar tempo de desenvolvimento ou porque o fluxo de trabalho do aplicativo é particularmente propício a um layout de retrato (comum para jogos para celular). Mas esses motivos negligenciam todos os fatores reais importantes que motivam o design adequado.
Engajamento do cliente - você deseja que seus clientes se sintam atraídos pelo seu aplicativo, e não empurrados para fora dele. O aplicativo deve fazer a transição sem problemas do que o cliente estava fazendo antes de abrir o aplicativo. (Esse é o motivo pelo qual a maioria das plataformas possui princípios de design consistentes, portanto, a maioria dos aplicativos é mais ou menos parecida, embora não seja necessário.)
Resposta do cliente - você deseja que seus clientes reajam positivamente ao seu aplicativo. Eles devem gostar de usá-lo. Mesmo se for um aplicativo de folha de pagamento para o trabalho, deve ser um prazer para eles abri-lo e entrar. O aplicativo deve economizar tempo de seus clientes e reduzir a frustração por alternativas. Aplicativos que incomodam os usuários criam ressentimentos contra seu aplicativo, que se tornam ressentidos contra sua marca.
Conversão de clientes - você deseja que seus clientes possam passar rápida e facilmente da navegação para a interação. Esse é o objetivo final de qualquer aplicativo: converter impressões em receita. Aplicativos que não geram receita são uma perda de tempo para criar, do ponto de vista comercial.
Uma interface do usuário mal projetada reduz o envolvimento e a resposta do cliente, o que resulta em menor receita. Em um mundo centralizado em dispositivos móveis (e particularmente no assunto dos modos de exibição retrato / paisagem), isso explica por que o web design responsivo é tão importante. O Walmart Canadá introduziu o design responsivo em seu site em novembro de 2013 e obteve um aumento de 20% na conversão de clientes. O'Neill Roupa implementado web design responsivo e receitas de clientes que utilizam dispositivos iOS aumentou 101,25% e 591,42% de clientes usando dispositivos Android .
Também há uma tendência para os desenvolvedores se concentrarem intensamente na implementação de uma solução específica (como bloquear a orientação da tela), e a maioria dos desenvolvedores deste site ficará muito feliz em ajudar a implementar essa solução, sem questionar se isso é o melhor. solução para o problema.
Bloquear a orientação da tela é o equivalente ao design da interface do usuário da implementação de um loop do while. Você está realmente certo de que quer fazer isso dessa maneira, ou se há uma alternativa melhor?
Não force seu aplicativo a entrar em um único modo de exibição. Invista tempo e esforço extras para torná-lo responsivo.
fonte