码迷,mamicode.com
首页 > 其他好文 > 详细

自定义状态栏背景(status bar)

时间:2015-01-08 15:21:32      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:android   status bar   透明状态栏   

公司大设计师只出iOS设计图。新的iOS系统的状态栏(status bar,就是显示时间、电量那个)是透明的,Android 4.4 (Kitkat,api 19)也添加了自定义 status bar 和 navigation bar 的一些api,可以实现同样的效果。

---

github上有 SystemBarTint 可以使用,但是很多功能用不到,所以自己实现了下。

---

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            setStatusBarColor(android.R.color.transparent);
        }
    }

    /**
     * 使status bar 和 navigation bar 透明
     */
    private void setStatusBarColor(int colorId) {
        int flags = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION | WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
        getWindow().addFlags(flags);

        int statusBarHeight = getStatusBarHeight(this);
        View view = new View(this);
        view.setBackgroundResource(colorId);

        ViewGroup parent = (ViewGroup) getWindow().getDecorView().findViewById(android.R.id.content);//parent是setContentView(content)中content的父view
        parent.addView(view, ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight);
        parent.getChildAt(0).setPadding(0, statusBarHeight, 0, 0);
    }

    private int getStatusBarHeight(Context context) {
        int id = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
        int dimen = 0;
        if (id > 0)
            dimen = getResources().getDimensionPixelSize(id);
        return dimen;
    }
}

---

DecorView的相关知识补充(Debug模式下一点点查看出来的):

技术分享



自定义状态栏背景(status bar)

标签:android   status bar   透明状态栏   

原文地址:http://blog.csdn.net/shang1jk/article/details/42522333

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!