Sobes.tech
Middle

É possível fazer com que a atividade não seja recriada ao girar a tela?

sobes.tech IA

Resposta da IA

Sim, é possível. Existem duas formas principais.

  1. Declarar configChanges no manifesto: No AndroidManifest.xml, para <activity>, adicionar o atributo android:configChanges="orientation|screenSize".

    <activity
        android:name=".MainActivity"
        android:configChanges="orientation|screenSize" />
    

    Neste caso, a atividade não é recriada, mas o método onConfigurationChanged() é chamado, e deve ser sobrescrito para lidar com as mudanças de configuração.

    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
        // Lidar com mudanças, por exemplo:
        // if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        //     // Mudança para modo paisagem
        // } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        //     // Mudança para modo retrato
        // }
    }
    
  2. Fixar a orientação da tela: Pode-se definir uma orientação fixa para a atividade, adicionando o atributo android:screenOrientation no manifesto.

    <activity
        android:name=".MainActivity"
        android:screenOrientation="portrait" />
    

    ou

    <activity  
        android:name=".MainActivity"  
        android:screenOrientation="landscape" />
    

    Neste caso, a orientação da atividade não mudará independentemente da rotação do dispositivo, e ela não será recriada.