沉浸式状态栏

来源:互联网 发布:农村淘宝怎么下载 编辑:程序博客网 时间:2024/06/08 15:30

TextView textView;    ViewGroup view;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        if (android.os.Build.VERSION.SDK_INT > 18) {            Window window = getWindow();//设置StatusBar为透明显示,需要在setContentView之前完成操作            window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);        }        setContentView(getResultId());        // 创建TextView用于叠加StatusBar的颜色块        textView = new TextView(this);        LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,getStatusHeight());//在此指定宽高        textView.setBackgroundColor(Color.parseColor("#ff6219"));//在此指定颜色        textView.setLayoutParams(lParams);        // 获得根视图并把TextView加进去。        view = (ViewGroup) getWindow().getDecorView();        view.addView(textView);        initView();        initListener();        initData();    }在填充布局(setContentView)之前填充状态栏,安卓4.4(api19)支持//设置窗体全屏getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置窗体始终点亮getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,      WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//设置窗体背景模糊getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,                        WindowManager.LayoutParams.FLAG_BLUR_BEHIND);当向fragmet添加导航栏时不会发生重叠,当向activity添加导航栏时会被状态栏遮挡在下方获取状态栏高度的两个方法:1.通过获取到status_bar_height的资源id,在计算其高度 public int getStatusBarHeight(){int height =0;Int resourceId=getResources().getIdentifier(“status_bar_height”,”dimen”,”android”);if(resourceID>0){height=getResources().getDiensionPixelSize(resourceId);}return height;} 

2.通过反射Public static int getStatusHeight(){Int statusHeight=-1;Try{Class(?) clazz=Class.forName(“com.android.internal.R$dimen”);Object object=clazz.newInstance();Int height=Integer.parseInt(clazz.getField(“status_bar_height”).get(object).toString());statusHeight=context.getResource().getDiensionPixelSize(height);}catch(Exception e){E.ppppppp();}Return statusHeight;}

原创粉丝点击