在android 的配置文件AndroidManifest.xml中有
android:screenOrientation属性
下面看下各个属性
"unspecified":默认值 由系统来推断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向."landscape":横屏显示(宽比高要长)"portrait":竖屏显示(高比宽要长)"user":用户当前首选的方向"behind":和该Activity以下的那个Activity的方向一致(在Activity堆栈中的)"sensor":有物理的感应器来决定。假设用户旋转设备这屏幕会横竖屏切换。"nosensor":忽略物理感应器。这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。
一般我们设置横屏:
android:screenOrientation="landscape"
设置竖屏
android:screenOrientation="portrait"
假如现在设置activity 禁止横屏
我们可以在配置文件中把屏幕设置为竖屏
android:screenOrientation="portrait"
经常玩王者荣耀的都会发现游戏界面是有物理的感应器决定这个时候设置为
android:screenOrientation="sensor"
以上呢就是在配置文件中设置,有时候我们做视频播放的时候里面有一个点击放大的方法,变为了横屏
这个时候就使用java代码
设置横屏代码:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
设置竖屏代码:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
在java 代码中设置呢,需要先设置一个默认的转向,原因是横屏的时候有2个方法的转向
假设不是默认的横屏方向,会把已经横屏的屏幕旋转180°
假如现在又一个图片点击视频屏幕转向代码如下
findViewById(R.id.big).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(MainActivity.this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}}});
视频转向了之后一般都是全屏的,但是加载在竖屏的时候设置播放的视频的布局宽和高不是match_parent 就达不到理想的效果了,这个时候我们可以使用2个布局来处理
如下
加载布局的名字要一样呢
我们看下lalyout-port布局显示的效果
在看看layout-land 里面布局的效果
这个时候我们需要把播放器布局的view高度设置match 即可。其他的自己在调试即可。。