Android запускает макет с текущей ориентацией, после этого отключаем вращение - PullRequest
1 голос
/ 12 сентября 2011

Я хочу сделать возможным использование деятельности в пейзаже / портрете Действие начинается с макета для текущей ориентации (это означает, что перед началом действия). После этого он должен придерживаться этого и не реагировать на изменение ориентации.

Я пытался поставить

android:configChanges="orientation" 

в манифесте активности и переопределении

@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);
}

ничего не делать (тоже попытался прокомментировать супер вызов, но это привело к исключению) но это не приводит к отключению изменения поворота - изменение обрабатывается и макет восстанавливается, просто он не использует правильный.

И я не могу использовать

android:screenOrientation

Потому что, кажется, мне нужно всегда указывать только один режим, и это тоже не то, что мне нужно. И в любом случае, если я укажу что-то там, активность будет восстановлена ​​при вращении. Пробовал с

android:screenOrientation="nosensor"

это ничего не делает

Здесь есть блокировка текущей ориентации с кодом http://www.samcoles.co.uk/mobile/android-lock-and-unlock-screen-orientation/

Но он достигает того же эффекта, что и указание ориентации в XML (сохраняет макет, но восстанавливает действие). Это немного ближе к тому, что я хочу (сохраняет ориентацию с самого начала), но восстанавливает активность, и я не хочу, чтобы она вообще реагировала.

Ответы [ 3 ]

1 голос
/ 12 сентября 2011

android: configChanges = «ориентация» вообще не работает на эмуляторе, но отлично работает на устройствах.

0 голосов
/ 05 февраля 2014

Добавить в onCreate

if (this.getResources().getConfiguration().orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);}
        else {setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}
0 голосов
/ 12 сентября 2011

Попробуйте

@Override
public void onConfigurationChanged(Configuration newConfig) {
    newConfig.orientation = getResources().getConfiguration().orientation;
    super.onConfigurationChanged(newConfig);
}
...