#android
#Android
Вопрос:
Я работаю на Android. Я попробую следующий код, чтобы предотвратить перезапуск приложения при повороте вкладки или телефона. Он работает, но не обеспечивает корректный альбомный и портретный режим.
android:configChanges="keyboardHidden|orientation"
Ответ №1:
На самом деле,
android:configChanges="orientation"
android:screenOrientation="landscape"
атрибуты Activity
объявления в манифесте не препятствуют воссозданию активности при изменении ориентации, это не позволяет платформе что-либо делать с ориентацией по умолчанию и сохраняет ее по умолчанию, например, альбомной.
Вы можете переопределить
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.newLayout);
}
чтобы принудительно восстановить действие.
Ответ №2:
Если у вас есть 2 макета (книжный и альбомный), и порядок на планшете кажется обратным, тогда переключитесь на использование getRotation
вместо устаревшего getOrientation
. Что-то вроде этого
private void setLayout() {
// Get display for detecting the phone orientation
final Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
if (display.getRotation() == Surface.ROTATION_0 || display.getRotation() == Surface.ROTATION_180) {
setContentView(R.layout.home);
} else {
setContentView(R.layout.home_l);
}
}