Como faço para configurá-lo para que o aplicativo seja executado apenas no modo retrato? Quero que o modo paisagem seja desativado enquanto o aplicativo estiver em execução. Como faço isso programaticamente?
201
Você pode especificar android:screenOrientation="portrait"
para cada atividade no seu arquivo manifest.xml. Você não pode especificar esta opção na application
tag.
Outra opção é fazer isso programaticamente, por exemplo, em uma Activity
classe base:
@Override
public void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
A última opção é fazer isso com os listeners do ciclo de vida da atividade, disponíveis apenas desde o Android 4.0 (API 14 ou superior). Tudo acontece em uma Application
classe 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
é apenas uma classe auxiliar que você precisará criar, a qual será uma implementação vazia ActivityLifecycleCallbacks
(para que você não precise substituir todos os métodos dessa interface quando precisar de um deles).
Sim, você pode fazer isso programaticamente e para todas as suas atividades, criando uma AbstractActivity que todas as suas atividades se estendem.
Essa atividade abstrata também pode ser usada para um menu global.
fonte
ActivityInfo.SCREEN_ORIENTATION_NOSENSOR
deve ser a melhor resposta, pois se destina a deixar o dispositivo no estado padrão, porque alguns dispositivos não têm a orientação Retrato. No entanto, 'nosensor' NÃO funciona para mim, então a resposta da @ arcone me representa.Você pode fazer isso para todo o aplicativo sem precisar fazer com que todas as suas atividades estendam uma classe base comum.
O truque é o primeiro a garantir que você inclua uma
Application
subclasse no seu projeto. Por issoonCreate()
, chamado quando o aplicativo é iniciado pela primeira vez, você registra umActivityLifecycleCallbacks
objeto (nível de API 14+) para receber notificações de eventos do ciclo de vida da atividade.Isso oferece a oportunidade de executar seu próprio código sempre que qualquer atividade em seu aplicativo é iniciada (ou parada, retomada ou qualquer outra coisa). Nesse ponto, você pode chamar
setRequestedOrientation()
a atividade recém-criada.fonte
Você pode definir isso no seu arquivo de manifesto.
e você também pode obter o mesmo escrevendo o código no seu arquivo de classe como:
fonte
Adicione android: screenOrientation = "portrait" à atividade no AndroidManifest.xml. Por exemplo:
fonte
Usar:
Basta escrever esta linha no arquivo de manifesto do seu aplicativo em cada atividade que você deseja mostrar apenas no modo retrato.
fonte
Escreva isso no seu arquivo de manifesto, para todas as atividades:
fonte
A partir do guia do desenvolvedor do Android:
Portanto, no arquivo AndroidManifest.xml, podemos colocar:
fonte
Adicionar
<preference name="orientation" value="portrait" />
abaixo<widget>
no meu config.xml funcionou para mim.(As outras soluções não funcionaram no meu dispositivo, foram substituídas durante a criação ou deram erros de descontinuação durante o processo de criação.)
fonte
no arquivo manifesto qual atividade você deseja usar em "retrato", você deve escrever esse código na marca de atividade
como isso
mas se você quiser tela na paisagem use esse código assim
fonte
fonte
Se alguém estava se perguntando, como você poderia fazer isso em todo o aplicativo sem precisar fazer com que todas as suas atividades estendessem uma classe base comum no Kotlin , veja o exemplo abaixo:
e então você deve adicionar sua classe base comum no AndroidManifest da seguinte forma:
fonte
Você pode fazer isso de duas maneiras.
android:screenOrientation="portrait"
seu arquivo de manifesto à atividade correspondentesetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
à sua atividade no método `onCreate ()fonte
Semelhante à resposta de Graham Borland ... mas parece que você não precisa criar a classe Application se não quiser ... basta criar uma Atividade Base no seu projeto
E estenda essa classe em vez de AppCompatActivity onde você deseja usar o Modo Potrait
fonte
Para usuários do Xamarin:
Se você estender todas as suas atividades a um
BaseActivity
Basta adicionar:Isso resolverá o problema. Se você deseja que uma atividade específica esteja na paisagem, substitua-a por
OnActivityCreated
. Como:fonte
No seu manifesto, digite isto:
fonte