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);
                }
上一篇 下一篇

猜你喜欢

热点阅读