android 横竖屏切换属性和播放视频全屏切换

本文介绍如何在Android应用中控制屏幕方向,包括锁定横屏或竖屏的方法,并详细解释了通过设置manifest文件中的screenOrientation属性来实现不同屏幕方向的切换。此外,还提供了视频全屏时隐藏状态栏和导航栏的具体实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.youkuaiyun.com/u013895206/article/details/44035091

最近在做平板项目,需要用到横屏切换,现在把属性贴出来方便以后查看。

通常我们的应用只会设计成横屏或者竖屏,锁定横屏或竖屏的方法是在manifest.xml文件中设定属性android:screenOrientation为”landscape”或”portrait”:

<activity
    android:name="com.jooylife.jimei_tablet.base.Main"
    android:label="@string/app_name" 
    android:screenOrientation="landscape">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

其实screenOrientation还可以设置成很多值:

android:screenOrientation=
[“unspecified” | “behind” |”landscape” | “portrait”|”reverseLandscape”|”reversePortrait” |”sensorLandscape” | “sensorPortrait” |”userLandscape” | “userPortrait” |”sensor” | “fullSensor” | “nosensor” |”user” | “fullUser” | “locked”]
1
2
其中sensorLandscape就是横屏根据重力切换,sensorPortrait竖屏根据重力切换。

播放视频全屏切换:
1.Demo:

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(this.getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE) {
getWindow().getDecorView().setSystemUiVisibility(View.INVISIBLE);
}else if (this.getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT) {
// this.requestWindowFeature(Window.f);// 去掉标题栏
// this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
// WindowManager.LayoutParams.FLAG_FULLSCREEN);// 去掉信息栏
Log.i(“info”, “portrait”); // 竖屏

}

View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐藏的操作,以及获取状态栏当前可见性。

setSystemUiVisibility(int visibility)方法可传入的实参为:

  1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态的正常情况)。

  2. View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。

  3. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。

  4. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。

  5. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

  6. View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

  7. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。

  8. View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。
    2.

if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs);
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(attrs);
getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值