2013-02-14 6 views
30

Я хочу, чтобы изменить ориентацию программно во время выполнения мое приложение для Android, с этими строками кода:Изменение ориентации экрана в Android без перезагрузки активности

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 

Они работают до сих пор, но основная проблема заключается в том, что вся деятельность перезагружается, когда меняется ориентация экрана, и я не хочу этого. Является ли это возможным? Благодарю.

EDIT: Хорошо, после того, как я узнал, что мне не хватает. Я должен был включать в себя также «Размер экрана» в свойстве configChanges, так что наличие

android:configChanges="orientation|screenSize" 

решить все дело.

+0

Я думаю, что вы должны проверить третий выбор в этом ответе. Я считаю, что именно так PhoneGap обрабатывает изменения ориентации http://stackoverflow.com/questions/5913130/dont-reload-application-when-orientation-changes – MikeIsrael

ответ

4

Вы должны переопределить onSaveInstanceState (Bundle savedInstanceState) и записывать значение состояния приложения, которые вы хотите, чтобы изменить параметр Bundle

+0

+1, это правильный ответ => то, что он попросил, не представляется возможным , только с этим решением он может делать то, что хочет, только с API выше 13 android: configChanges = "orientation | screenSize" – 2013-09-12 07:24:16

1

В AndroidManifest файла добавить android:configChanges="orientation" для деятельности вы хотите справиться с этой ориентацией

При использовании функции onConfigurationChange отменяется. Задайте задачу, с которой вы хотите справиться с изменением ориентации.

+0

Спасибо, но он все еще не работает. Может быть, потому, что я использую Phonegap/HTML5 в активности? Спасибо. – luisfer

+0

можете ли вы добавить код? –

+0

@RajShah для чего нужен еще код? Вы прочитали вопрос? как насчет названия? – 2013-09-12 07:25:06

1

Ansewered здесь:

Android, how to not destroy the activity when I rotate the device?

Добавить:

android:configChanges="orientation"

К вашему androidmanifest.

см:

http://developer.android.com/guide/topics/manifest/activity-element.html#config

+0

Спасибо, но он все еще не работает. Может быть, потому, что я использую Phonegap/HTML5 в активности? Спасибо. – luisfer

1

вызывает этот метод и указан файл манифест

android:configChanges="orientation|screenSize|keyboardHidden" 

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

     // Checks the orientation of the screen 
     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
     } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
      Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
     } 
    }