Обработка изменений ориентации условно - PullRequest
4 голосов
/ 02 марта 2011

Я добавил android:configChanges="orientation" и переопределил onConfigurationChanged().То, что я хотел бы сделать, это разрешить изменение альбомной ориентации, только если устройство имеет настройку разрешения экрана размером с планшет (более короткая сторона, превышающая 480 пикселей - предложения по улучшению способа обработки этого приветствуются!).Я думал, что это будет работать одним из двух способов, но ни один из них не работает в моих тестах ни на моем телефоне, ни в эмуляторе.

Моей первой идеей было не вызывать реализацию суперкласса onConfigurationChanged(), но я получаю исключение, которое жалуется на то, что я не позвонил в суперкласс.

Моя вторая идея состояла в том, чтобы просто вручную установить для newConfig.orientation значение Configuration.ORIENTATION_PORTRAIT, прежде чем передавать его в суперкласс.Между моим Activity и реальным классом Activity в фреймворке у меня есть класс ActivityBase, который я использую там, где я тоже это переопределяю.Я могу вспомнить значение newConfig.orientation в ActivityBase, чтобы увидеть, что объект конфигурации, который действительно передается, действительно имеет новое значение, но он игнорируется и изменение ориентации уже произошло.

Где можно разместить кодчто позволяет мне условно замкнуть изменение ориентации в одних случаях и разрешить это в других?

1 Ответ

2 голосов
/ 02 марта 2011

Я бы установил запрашиваемую ориентацию для исправления в методе Activity onCreate (), что-то вроде этого:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

, если Display не является дисплеем xhdmi или имеет требуемое разрешение.

...