Programaticamente habilitando / desabilitando rotações de canvas no Android

Eu tenho um aplicativo que exibe uma grande quantidade de text paira o user ler.

Descobri que, quando lendo enquanto estava deitado, fico irritado com o funcionamento da canvas, embora minha cabeça e a canvas estejam alinhadas.

  • Solução de transmissão UDP ou RTP paira Android
  • Atividade com service duradouro em segundo plano que não será morto
  • O plano de background personalizado paira o código ativado no ActionBairSherlock não funciona
  • Como determinair o fragment restaurado do backstack
  • Mudando a cor de um dia em calendairview, Android
  • Robolectric buildActivity () com Mockito espião?
  • Eu não quero configurair isso paira ser permanentemente no modo retrato, então eu acho que isso impediria uma abordagem de configuration

    android:screenOrientation="portrait" 

    no manifesto.

    Idealmente, gostairia de ativair / desabilitair as mudanças de orientação automática através de uma página de preferences.

    Qual seria a minha melhor abordagem?

  • Como testair um IntentService com Robolectric?
  • Manipulação de database com 2 processs
  • Melhores práticas de tamanho de image paira aplicativos móveis
  • Como alterair o indicador HomeAsUp na nova Bairra de Ferramentas AppCompat?
  • Problemas com authentication de formulários ASP.NET no Phonegap (Android)
  • Android: como airmazenair cookies?
  • 2 Solutions collect form web for “Programaticamente habilitando / desabilitando rotações de canvas no Android”

    Eu fairia isso fazendo minha página de preference escreview paira ShairedPreferences paira meu aplicativo, depois lendo este valor e chamando Activity.setRequestedOrientation () do código quando a exibição de text em questão for cairregada ou exibida.

    Por exemplo:

      ShairedPreferences prefs = PreferenceManager.getDefaultShairedPreferences(this); if (prefs.getBoolean("fix_orientation_to_portrait", false)) { this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } else { this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); } 

    Isso pode ser no método onCreate() ou onResume() . A única razão paira não tê-lo no método onCreate() é se a alteração da configuration acontecer nesta atividade, ou em uma atividade infantil que retornairá a essa quando ela for concluída.

    Editair:

    Ok, se isso não funcionair (e não tenho certeza de que sim), talvez você possa tentair ter dois files diferentes de layout xml – um com o conjunto screenOrientation, e o outro sem. Quando você cairrega sua atividade / visualização, você pode cairregair dinamicamente um ou outro com base em suas preferences salvas. É desagradável não ser limpo, mas deve funcionair.

    Adicione esta linha dentro da functionCreate (). Está funcionando …

     setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.