经常在开发中,比如视频播放这种情况,当用户点击全屏播放的时候,我们需要切换手机屏幕,当然我们可以从像以前一样,在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();  
}