private OrientationEventListener mOrientationListener;
private String TAG = "MainActivity";
private int screenCurOrient = 2; //1表示正豎屏,2表示正橫屏,3表示反豎屏,4表示反橫屏
private final void startOrientationChangeListener() {
mOrientationListener = new OrientationEventListener(this) {
@Override
public void onOrientationChanged(int rotation) {
//判斷四個方向
if (rotation == -1) {
Log.d(TAG, "手機平放:" + rotation);
} else if (rotation < 10 || rotation > 350) {
screenOrientChange(1);
} else if (rotation < 100 && rotation > 80) {
screenOrientChange(4);
} else if (rotation < 190 && rotation > 170) {
screenOrientChange(3);
} else if (rotation < 280 && rotation > 260) {
screenOrientChange(2);
}
else
{
}
}
};
mOrientationListener.enable();
}
private void screenOrientChange(int Orient)
{
if(Orient != screenCurOrient)
{
screenCurOrient = Orient;
switch (screenCurOrient)
{
case 1:
Log.d(TAG, "正豎屏:");
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
case 2:
Log.d(TAG, "正橫屏:");
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
case 3:
Log.d(TAG, "反豎屏:");
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
case 4:
Log.d(TAG, "反橫屏:");
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
}
}
}
在onCreate方法中調用startOrientationChangeListener方法便可。