Устройство захвата вращения без вращения приложения - PullRequest
0 голосов
/ 20 марта 2019

Приложение для Android com Webview, Minha Activity Está Configurationurada Para portrait:

<activity
        android:name=".activity.MainActivity"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateUnspecified|adjustResize"></activity>

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

Ответы [ 2 ]

1 голос
/ 20 марта 2019

Если вы хотите повернуть свою деятельность, вы должны удалить android: screenOrientation = "Portrait" и добавить android: configChanges = "direction | keyboardHidden"

<activity
    android:name=".activity.MainActivity"
    android:configChanges="orientation|keyboardHidden"
    android:windowSoftInputMode="stateUnspecified|adjustResize"></activity>

Затем переопределите метод onConfigurationChanged () в своем действии, чтобы получить обратный вызов при повороте приложения

class MainActivity extends AppCompatActivity {
    ...

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        // Checks the orientation of the screen
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            // App is rotated to landscape
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            // App is rotated to portrait
        }
    }
}

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

Обновлено:

Если вы хотите удерживать Activity в портретном режиме и обнаруживать тольковращение посмотрите на:

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

Разрешить:

    SensorManager sensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);
    sensorManager.registerListener(new SensorEventListener()
    {
        int orientation = -1;

        @Override
        public void onSensorChanged(SensorEvent event)
        {
            if (event.values[1] < 6.5 && event.values[1] > -6.5)
            {
                if (orientation != 1)
                {
                    Log.d("SensorLog", "Landscape");
                }
                orientation = 1;
            }
            else
            {
                if (orientation != 0)
                {
                    Log.d("SensorLog", "Portrait");
                }
                orientation = 0;
            }
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy)
        {
            // TODO Auto-generated method stub

        }
    }, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);
...