У меня есть приложение, которое находится в портретном режиме, но некоторые экраны должны иметь ландшафтный режим для телефонов с физическими клавиатурами.
Я использую tabhost, и я заметил, что когда я разрешаю принудительное изменение ориентации, он перезагружает вкладку "КАЖДЫЙ" и немного медленный.
Есть ли способ разрешить принудительное изменение ориентации (например, только при выталкивании жесткой клавиатуры) И только перезагрузить это представление в ландшафтном режиме? Я хочу сделать это без задержки перезагрузки всех видов деятельности. В настоящее время мой табуст будет циклически перебирать каждое действие при изменении ориентации. Я знаю, что это имеет какое-то отношение к перерисовке "живых" действий при изменении ориентации, но tabhost просто увеличивает эту перерисовку.
Действия, требующие дополнительного ландшафтного режима, также должны выполняться внутри табуляции.
Проницательность оценена
Вы предотвращаете уничтожение Activity, самостоятельно изменяя ориентацию.
Отредактируйте действия вашего манифеста:
<activity android:name=".MyActivity" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden" />
И затем переопределите в своих действиях:
@Override
public void onConfigurationChanged(Configuration newConfig) {
//ignore orientation change
super.onConfigurationChanged(newConfig);
}
НО вы должны знать, что перезагрузка используется для загрузки специальных ресурсов для каждой ориентации, у вас может быть странный эффект, если вы действительно не справляетесь с этим изменением. Есть причины для перезагрузки.
super.onConfigurationChanged(newConfig);
? Похоже, сейчас это не работает для меня. Я бы хотел, чтобы только отдельные действия в группе вкладок можно было перезагрузить без перезагрузки всей вкладки