android 状态栏总结

WindwManager.LayoutParams

WindowManager.LayoutParams是WindowManager接口的嵌套类;它继承于ViewGroup.LayoutParams; 它用于向WindowManager描述Window的管理策略。

主要成员常量

Window flag系列

该系列主要用于对Window的flag进行设置。

设置Window的flag,可以直接对Window的getAttributes()得到其 WindowManager.LayoutParams对象,然后直接对它flag变量操作。

也可以Window的addFlags(int flags)方法,setFlags(int flags, int mask)方法,clearFlags(int flags)方法进行操作。

  • windowTranslucentStatus 可以拉升到顶部状态栏,并且定义顶部状态栏透明
  • android:windowTranslucentNavigation 设置虚拟键透明

     /**
     * 设置沉浸式状态栏
     */
    public static void setImmersive (Activity activity)
    {
        Window window = activity.getWindow();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
        {
            //可以拉升到顶部状态栏,并且定义顶部状态栏透明
                                window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            // 导航条隐藏, decorView占据全屏,沉浸式
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    |View.SYSTEM_UI_FLAG_FULLSCREEN
                    |View.SYSTEM_UI_FLAG_IMMERSIVE);
        }
    }
    

关于WindowManager.LayoutParams更多细节可以参考这篇文章
http://blog.csdn.net/i_lovefish/article/details/8050025

/**
 * 设置透明状态栏
 * @param activity 需要设置的Activity
 */
public static void translucentWindow(Activity activity)
{
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
    {
        Window window = activity.getWindow();
        //取消设置透明状态栏,使 ContentView 内容不再覆盖状态栏
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
                | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        //DecorView布局充满全屏但状态栏显示, 隐藏虚拟按键. 稳定布局
        window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
        //需要设置这个 flag 才能调用 setStatusBarColor 来设置状态栏颜色
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        //设置状态栏颜色
        window.setStatusBarColor(Color.TRANSPARENT);
        window.setNavigationBarColor(Color.TRANSPARENT);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值