Android全屏显示

Android全屏显示

一、获取状态栏和导航条的高度:

1. 获取状态栏的高度:

    public int getStatusBarHeight() {

    Resources resources = mActivity.getResources();

    int resourceId = resources.getIdentifier("status_bar_height","dimen","android");

    int height = resources.getDimensionPixelSize(resourceId);

    Log.v("status bar>>>", "height:" + height);

    return height;

}

2. 获取导航条的高度:

public int getNavigationBarHeight() {

    Resources resources = mActivity.getResources();

    int resourceId=resources.getIdentifier("navigation_bar_height","dimen","android");

    int height = resources.getDimensionPixelSize(resourceId);

    Log.v("navigation bar>>>", "height:" + height);

    return height;

}

二、全屏

方法一: 直接隐藏:

Window window = getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

方法二、通过DecorView类:

一、DecorView类(通过getWindow().getDecorView()获取)提供了setSystemUiVisibility(int i) 方法来动态隐藏和显示状态栏;

1. setSystemUiVisibility(int i)里面的参数详情:
  • View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,
  • View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。
  • View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。
  • View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。
  • View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。

三、沉浸式状态栏

  1. 4.4以上的沉浸式:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
  1. 5.0以上的沉浸式:
    //沉浸模式
    private void immersionMode(){
        Window window = getWindow();
        if (window != null){
            View decorView = window.getDecorView();
            int option = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
            decorView.setSystemUiVisibility(option);
            decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
                @Override
                public void onSystemUiVisibilityChange(int visibility) {
                    Log.d(TAG, "onSystemUiVisibilityChange: "+visibility);
                }
            });
        }
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值