Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo capturar un evento de rotación de 180 grados de la pantalla?

¿Cómo capturar un evento de rotación de 180 grados de la pantalla?

Primero, conozcamos algunas constantes importantes

private static final int ROTATION_0 = 0;

Inicialmente, si el dispositivo es horizontal o vertical está relacionado con la dirección de visualización predeterminada cuando el El dispositivo de hardware está instalado.

private static final int ROTATION_90 = 1;

Después de configurar la orientación de la pantalla en rotación automática, la pantalla girará en esta dirección cuando el lado derecho se gire hacia arriba.

private static final int ROTATION_270 = 2;

Después de configurar la orientación de la pantalla en rotación automática, cuando el lado izquierdo se gira hacia arriba, la pantalla girará en esa dirección.

private static final int ROTATION_180 = 3;

Después de configurar la orientación de la pantalla en rotación automática, cuando la parte inferior de la pantalla se gira hacia arriba, la pantalla girará en esa dirección.

(Las constantes anteriores están definidas en WindowOrientationListener.java)

Echemos un vistazo a la clase WindowOrientationListener

La clase clave para controlar la rotación de la pantalla del teléfono móvil

Esta clase es una clase abstracta

WindowOrientationListener registra un acelerador de tipo SensorEventListener

La única otra implementación de esta clase en el sistema es la clase PhoneWindowManager

En la construcción de la clase WindowOrientationListener En la función, se obtendrá una instancia de la clase SensorManager, el objeto sensor de aceleración se obtendrá a través de SensorManager y finalmente se creará un SensorEventListener.

Ventana privadaOrientationListener(Contexto contexto, int tasa) {

mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_ SERVICE);

mRate = tasa;

mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

if (mSensor != null) {

mSensorEventListener = new SensorEventListenerImpl(this);

p>

}

}

Registre un monitor para el mSensor anterior (también conocido como mSensorEventListener anterior)

public void enable() { //zai zhu ce jian shi qi qian mEnabled=false

if (mSensor == null) {

Log.w(TAG, " No se puede detectar el sensor.

No habilitado");

Devolución;

}

if (mEnabled == false) {

if (localLOGV) Registro. d(TAG, " WindowOrientationListener habilitado");

mSensorManager.registerListener(mSensorEventListener, mSensor, mRate);

mEnabled = true; >

}