经常在开发中,比如视频播放这种情况,当用户点击全屏播放的时候,我们需要切换手机屏幕,当然我们可以从像以前一样,在AndroidManifest给Activity设置好预先设置,然后通过点击进入这个页面。
//横屏设置;
android:screenOrientation="landscape"
//竖屏设置;
android:screenOrientation="portrait"
但是实际情况,我们不需要那么做,最理想的情况当然是在一个页面,动态设置横竖屏,但是也有弊端,当手机开启自动旋转屏幕(重力感应)的时候,我们的布局会被打乱,因为我们横屏设置的50dp,切换到竖屏的时候50dp就不一样了。
//横屏设置
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//竖屏设置
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
当然你也可以监听重力感应。
private final void startOrientationChangeListener() {
mOrientationListener = new OrientationEventListener(this) {
@Override
public void onOrientationChanged(int rotation) {
if (((rotation >= 0) && (rotation <= 45)) || (rotation >= 315)||((rotation>=135)&&(rotation<=225))) {//portrait
mCurrentOrient = true;
if(mCurrentOrient!=mScreenProtrait)
{
mScreenProtrait = mCurrentOrient;
OrientationChanged(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Log.d(TAG, "Portrait!");
}
}
else if (((rotation > 45) && (rotation < 135))||((rotation>225)&&(rotation<315))) {//landscape
mCurrentOrient = false;
if(mCurrentOrient!=mScreenProtrait)
{
mScreenProtrait = mCurrentOrient;
OrientationChanged(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Log.d(TAG, "Landscape!");
}
}
}
};
mOrientationListener.enable();
}