Ответ 1
См. редактирование @luisfer. Для таргетинга на Android 3.2 и выше вам необходимо ОБА
android:configChanges="orientation|screenSize"
http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange
Я хочу программно изменить ориентацию при работе с Android-приложением с этими строками кода:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
Они работают до сих пор, но основная проблема заключается в том, что вся деятельность перезагружается, когда меняется ориентация экрана, и я не хочу этого. Является ли это возможным? Спасибо.
EDIT: Хорошо, после того, как я узнал, что мне не хватает. Мне пришлось включить также "screenSize" в свойство configChanges, поэтому
android:configChanges="orientation|screenSize"
решил все это.
См. редактирование @luisfer. Для таргетинга на Android 3.2 и выше вам необходимо ОБА
android:configChanges="orientation|screenSize"
http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange
Вам необходимо переопределить onSaveInstanceState (Bundle savedInstanceState) и записать значения состояния приложения, которые вы хотите изменить, в параметр Bundle
В файле AndroidManifest добавьте android:configChanges="orientation"
для действия, которое вы хотите обработать с этой ориентацией
В работе используется метод onConfigurationChange overrided. Задача, с которой вы хотите обрабатывать изменения ориентации.
Принято здесь:
Android, как не уничтожить действие при повороте устройства?
Добавить
android:configChanges="orientation"
К вашему андроидному манифесту.
см
http://developer.android.com/guide/topics/manifest/activity-element.html#config
Вызвать этот метод и установить файл манифеста
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();
}
}