當前位置:編程學習大全網 - 編程語言 - 怎麽捕獲屏幕180度旋轉事件?

怎麽捕獲屏幕180度旋轉事件?

先來認識壹下幾個重要的常量

private static final int ROTATION_0 = 0;

初始情況,設備是橫屏還是豎屏與硬件設備安裝時默認的顯示方向有關。

private static final int ROTATION_90 = 1;

設置屏幕方向自動旋轉後,右側翻起側立時,屏幕會旋轉到這個方向。

private static final int ROTATION_270 = 2;

設置屏幕方向自動旋轉後,左側翻起度側立時,屏幕會旋轉到這個方向。

private static final int ROTATION_180 = 3;

設置屏幕方向自動旋轉後,屏幕底部側立時,屏幕會旋轉到這個方向。

(以上幾個常量在WindowOrientationListener.java中定義)

接下來看看WindowOrientationListener類

控制手機屏幕旋轉的關鍵類

該類為抽象類

WindowOrientationListener會註冊壹個Accelerator類型的SensorEventListener

系統中唯壹實現該類的為PhoneWindowManager類

在WindowOrientationListener類的構造函數中,會獲取壹個SensorManager類的實例對象,通過SensorManager獲取壹個加速度傳感器對象,最後new壹個SensorEventListener。

private WindowOrientationListener(Context context, int rate) {

mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);

mRate = rate;

mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

if (mSensor != null) {

mSensorEventListener = new SensorEventListenerImpl(this);

}

}

給上述的mSensor註冊壹個監視器(也就是上述的mSensorEventListener)

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

if (mSensor == null) {

Log.w(TAG, "Cannot detect sensors. Not enabled");

return;

}

if (mEnabled == false) {

if (localLOGV) Log.d(TAG, "WindowOrientationListener enabled");

mSensorManager.registerListener(mSensorEventListener, mSensor, mRate);

mEnabled = true;

}

}

  • 上一篇:廣東考研需要核酸檢測嗎
  • 下一篇:喚境引擎陪妳走過了怎樣的2021?
  • copyright 2024編程學習大全網