Android沉浸式状态栏完美实现

来源:互联网 发布:everaver renamer mac 编辑:程序博客网 时间:2024/06/11 20:13

Android4.4以上才支持,也就是API 19以上, 下面直接上代码

参考了git上的一个项目:https://github.com/jiangqqlmj/FastDev4Android

核心代码就是这些,

/**     * 设置沉浸式状态栏     */    protected void setImmergeState() {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            //透明状态栏            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            //透明导航栏,有虚拟键的下面的需要注释掉,不然效果感人            //getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);            LinearLayout linear_bar = (LinearLayout) findViewById(R.id.linear_bar);            linear_bar.setVisibility(View.VISIBLE);            int statusHeight = getStatusBarHeight();            LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) linear_bar.getLayoutParams();            params.height = statusHeight;            linear_bar.setLayoutParams(params);        }    }    /**     * 用于获取状态栏的高度。 使用Resource对象获取     *     * @return 返回状态栏高度的像素值。     */    public int getStatusBarHeight() {        int result = 0;        int resourceId = getResources().getIdentifier("status_bar_height", "dimen",                "android");        if (resourceId > 0) {            result = getResources().getDimensionPixelSize(resourceId);        }        return result;    }



下面的布局代码,放在你要设置的界面的最上面

  <!-- 用来填充状态栏==========-->    <LinearLayout        android:id="@+id/linear_bar"        android:layout_width="fill_parent"        android:layout_height="1dp"        android:background="#3289ff"        android:orientation="vertical"        android:visibility="gone"        >    </LinearLayout>


如果有问题的可以看项目用的工具是Android Studio,下面是项目下载地址:

http://download.csdn.net/detail/qq137464739/9385115

1 0