工作生活

Android 四大组件--Activity 系列(二) ---

2019-07-01  本文已影响0人  青青雉

        在 Android 中大多数的时候,大家都需要对于Activity 进行屏幕方向的竖屏限制(大部分的时候APP 都需要对于屏幕进行竖屏的限制),但是也有很多时候需要对于屏幕进行横屏操作(大部分的游戏都是使用的横屏的限制),但是对于视频而言横竖屏切换是不可避免的一个操作.那么,在这里我就为大家介绍一下,因为某些问题需要和之后的一些东西相关联,所以将横竖屏切换转换为多个版本进行介绍

 Activity 的横屏/竖屏的使用方式

                方式一:(清单文件配置)

                        在清单文件中对于Activity 加上 screenOrientation 的属性,对于screenOrientation  具有以下几个值

                            unspecified : 默认值,由系统显示方向,在不同的系统上可能会有所不同

                            landscape : 横屏方向,显示的宽比高长

                            portrait : 竖屏方向,显示的高比宽长

                            user : 用户当前首选的方向

                            behind : 跟activity堆栈中的下面一个activity的方向一致

                            sensor : 由设备的物理方向传感器决定,如果用户旋转设备,这屏幕就会横竖屏切换

                            nosensor : 忽略物理方向传感器,这样就不会随着用户旋转设备而横竖屏切换了(”unspecified”设置除外)

                            reverseLandscape : API 9 以上,反向横屏

                            reversePortrait : API 9 以上,反向竖屏

                            sensorLandscape : API 9 以上,横屏,但是可以根据 物理方向传感器来切换正反向横屏

                            sensorPortrait : API 9 以上,竖屏,但是可以根据 物理方向传感器来切换正反向竖屏

                            fullSensor : API 9 以上,上下左右四个方向,由物理方向传感器决定

                            locked : API 18 以上,锁死当前屏幕的方向

                    方式二:(java代码配置)

                            在Activity 的onCreate 的方法中调用 setRequestedOrientation 的方法进行配置横竖屏

                            需要注意的是:

                            setRequestedOrientation 方法需要在 setContentView 之前调用

                        其中:

                            ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE : 竖屏

                            ActivityInfo.SCREEN_ORIENTATION_PORTRAIT  : 横屏

                            如果不配置,那么就是默认的,由系统显示方向


   视频播放的时候根据按钮来判断是否是横屏/竖屏

        在Activity 的 setScreenOrientation 方法中进行配置     

        代码:

@Override

public void setRequestedOrientation(int requestedOrientation) {

super.setRequestedOrientation( requestedOrientation );

    if (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT  ==  requestedOrientation){

//todo 当前屏幕是横屏

    }else  if (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE  ==  requestedOrientation){

//todo 当前屏幕适说

    }

}

上一篇下一篇

猜你喜欢

热点阅读