Я использую средство просмотра VNC Android на своем HTC G1. Но по некоторым причинам, то приложение всегда находится в альбомном режиме несмотря на мой G1, находится в режиме портрета. Так как средство просмотра VNC Android является открытым исходным кодом, я хотел бы, знают, как это - возможный твердый код действие, чтобы быть 'средой'. Я хотел бы изменить его для уважения телефонной ориентации.
Глядя на ссылку AndroidManifest.xml ( ), в строке 9:
<activity android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:name="VncCanvasActivity">
Эта строка определяет сценариента
как ландшафт, но автор идет дальше в переопределении любых изменений ориентации экрана С Configchanges = «Ориентация | KeyboardHidden»
. Это указывает на переопределенную функцию в vnccanvasactivity.java.
Если вы посмотрите на VNCCANVActive, на линии 109 - это переопределенная функция:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// ignore orientation/keyboard change
super.onConfigurationChanged(newConfig);
}
Автор специально указал комментарий для игнорирования любых изменений клавиатуры или ориентации.
Если вы хотите изменить это, вы можете вернуться к файлу AndroidManifest.xml, показанному выше, и изменить строку к:
<activity android:screenOrientation="sensor" android:name="VncCanvasActivity">
Это должно изменить программу для переключения от портрета в ландшафт, когда пользователь поворачивает устройство.
Это может работать, но может испортить, как выглядит графический интерфейс, в зависимости от того, как было создано макет. Вам придется объяснить это. Кроме того, в зависимости от того, как выполнены действия, вы можете заметить, что при изменении ориентации экрана исчезают значения, заполненные любыми вводами. Это также может быть обработано.
Вы можете указать ориентацию активности в манифесте. Смотри здесь .
<activity android:allowTaskReparenting=["true" | "false"]
...
android:screenOrientation=["unspecified" | "user" | "behind" |
"landscape" | "portrait" |
"sensor" | "nosensor"]
...
"adjustResize", "adjustPan"] >
Вы также можете установить те же данные в вашем коде Java.
myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Другие значения на ActivityInfo позволит вам вернуться к датчику, управляемую или заблокированному портрету. Лично я люблю настроить его на что-то в манифесте, как предложено в другом ответе на этот вопрос, а затем изменить его позже, используя вышеуказанный вызов в Android SDK, если есть необходимость.