Предотвращение перехода приложения в книжную ориентацию при разблокированном устройстве - PullRequest
1 голос
/ 07 марта 2019

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

Однако, если я уложу свое устройство в спящий режим, а затем разблокирую его, я на мгновение вижу свое приложение в портретном режиме, пока мое устройство не переориентируется на альбомную ориентацию. Такое поведение имеет смысл, поскольку телефон естественным образом используется в портретной ориентации, но я не хочу, чтобы моя деятельность переключалась с альбомной.

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

Чего мне не хватает?

В MainActivity у меня есть

this.setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE)

в нескольких местах, включая onConfigurationChanged, onWindowFocusChanged, onPause и onResume.

Вот как моя активность определяется в моем AndroidManifest

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:hardwareAccelerated="true"
        android:screenOrientation="sensorLandscape"
        android:configChanges="orientation|screenSize"
        android:launchMode="singleTask"
        android:alwaysRetainTaskState="true"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:windowSoftInputMode="stateAlwaysHidden" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Спасибо за любую помощь / совет!

-J.L.

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

приложение по-прежнему отображается как неправильная ориентация в течение доли секунды, когда телефон разблокирован.

Переместили ли вы setContentView (R.layout.main) в onResume, ПОСЛЕ того, где вы указали код ориентации?Я бы попробовал установить ориентацию, затем setContentView ()

0 голосов
/ 07 марта 2019

Вы забыли удалить датчик из тега screenOrientation. Попробуйте это:

 <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:hardwareAccelerated="true"
        android:screenOrientation="landscape"
        android:configChanges="orientation|screenSize"
        android:launchMode="singleTask"
        android:alwaysRetainTaskState="true"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:windowSoftInputMode="stateAlwaysHidden" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...