Android屏幕的方向处理
2018-02-19 本文已影响18人
海在路上
在清单文件中设置
<activity android:name=".FragmentActivity"
android:theme="@style/FragmentActivityTheme"
android:screenOrientation="portrait"/>
image.png
1.landscape:横屏(风景照),显示时宽度大于高度;
2.portrait:竖屏(肖像照), 显示时高度大于宽度;
3.user:用户当前的首选方向;
4.behind:继承Activity堆栈中当前Activity下面的那个Activity的方向;
5.sensor:由物理感应器决定显示方向,它取决于用户如何持有设备,当设备被旋转时方向会随之变化——在横屏与竖屏之间;
6.nosensor:忽略物理感应器——即显示方向与物理感应器无关,不管用户如何旋转设备显示方向都不会随着改变("unspecified"设置除外);
7.unspecified:未指定,此为默认值,由Android系统自己选择适当的方向,选择策略视具体设备的配置情况而定,因此不同的设备会有不同的方向选择;:横屏(风景照),显示时宽度大于高度;
代码处理
获取屏幕的方向
int requestedOrientation = getActivity().getRequestedOrientation();
switch (requestedOrientation) {
case ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED:
Toast.makeText(getActivity(), "没有定义", Toast.LENGTH_SHORT).show();
break;
case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE: // 横屏
Toast.makeText(getActivity(), "横屏", Toast.LENGTH_SHORT).show();
break;
case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT: // 竖屏
Toast.makeText(getActivity(), "竖屏", Toast.LENGTH_SHORT).show();
break;
case ActivityInfo.SCREEN_ORIENTATION_SENSOR: // 感应器
Toast.makeText(getActivity(), "感应器", Toast.LENGTH_SHORT).show();
break;
}
设置屏幕的方向
if (getActivity().getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else {
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}