2012-02-29 2 views
0

Добро пожаловать всеМожно узнать, когда меняется ориентация экрана, но с режимом портретного режима, принудительно отображаемым?

У меня есть специальная потребность в моем приложении. Я должен заставить приложение работать только в портретном режиме, но мне нужно знать, когда пользователь переместил телефон в альбомный режим. Зачем? потому что я показываю представление opengl с текстурным изображением, и когда пользователь меняет положение телефона в альбомном режиме, я должен вращать многоугольник без переустановки активности. Затем я должен заставить портретный режим использовать манифест, потому что я не хочу, чтобы мой метод onCreate снова вызывался.

Пожалуйста, может кто-нибудь сказать мне, как этого достичь?

Я знаю, как вращать изображение, мне нужно знать, когда пользователь переместил телефон в альбомное положение, но с портретом, который был принудительно отображен.

Я попытался добавить андроид: screenOrientation = "портрет" в манифесте, а также добавление android: configChanges = "keyboardHidden | orientation" в декларации в манифесте; а затем переопределить onConfigurationChanged() в моей активности. Но это doens't работает, потому что режим портрет forzed, то onConfigurationChanged метод никогда не вызывается ......

Благодаря

+0

Попробуйте это: Удалите андроида: screenOrientation = "портрет" из манифеста. Добавьте android: configChanges = "keyboardHidden | orientation" и переопределите onConfigurationChanged(). Таким образом, ваш onCreate не будет вызываться дважды. – Derzu

+0

Derzu, пожалуйста, можете ли вы помочь мне объяснить ответ ашока? спасибо – NullPointerException

ответ

3

Почему бы не использовать SensorManager контролировать, когда телефон повернут на 90 градусов. Фактически this также может быть полезен.

0

использовать этот атрибут в манифесте android: configChanges = "ориентация", это останавливает процесс воссоздания, а затем переопределяет метод onConfigurationChange(). Дайте такой же макет как в портретном, так и в ландшафтном режимах. когда происходит изменение ориентации, этот метод будет вызван, а затем измените изображение так, как

+0

, пожалуйста, может кто-нибудь объяснить мне, как это сделать: «Дайте тот же макет как в портретном, так и в ландшафтном режимах». – NullPointerException

0

Не устанавливать ориентацию экрана в манифесте (андроид: экранОриентация = "портрет"). Добавьте android: configChanges = "keyboardHidden | orientation" и переопределите onConfigurationChanged(). Таким образом, ваш onCreate не будет вызываться дважды.

Вот пример вашей onConfigurationChanged:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); // tem que ter 
    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { 

    } else 
    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { 

    } 
} 
Смежные вопросы