1、动态改变屏幕方向
在Android中,通过setRequestedOrientation()方法更改屏幕方向,通过getRequestedOrientation()方法获取屏幕方向
注意,要在AndroidManifest.xml文件中,添加android:screenOrientation="portrait",可添加在Activity下。
方法一,根据getRequestedOrientation()判断当前屏幕显示方向,代码如下:
switch (getRequestedOrientation()) { case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE://当前横屏,转为竖屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); break; case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT://当前竖屏,转为横屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); break; default: Toast.makeText(MainActivity.this, "getRequestedOrientation()="+getRequestedOrientation(), 0).show(); break; }
方法二,更加屏幕宽高比判断方向,代码如下:
final Display display = getWindow().getWindowManager().getDefaultDisplay(); if(display.getWidth()>display.getHeight()){ //当前横屏,转为竖屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }else{ //当前竖屏,转为横屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } }
2、捕获屏幕改变事件:
在AndroidManifest.xml文件中,需要添加权限
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
在对应Activity节点中添加android:configChanges="orientation|keyboard"
java代码如下:
复写onConfigurationChanged方法
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); switch (newConfig.orientation) { case Configuration.ORIENTATION_LANDSCAPE: bt.setText("旋转为竖屏"); break; case Configuration.ORIENTATION_PORTRAIT: bt.setText("旋转为横屏"); break; } }