自定義狀态欄背景(statusbar) - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

您當前位置>首頁 » 新聞資(zī)訊 » 技術(shù)分享 >

自定義狀态欄背景(statusbar)

發表時間:2021-1-10

發布人:葵宇科技

浏覽次數:36


公司大設計師(shī)隻出iOS設計圖。新的iOS系統的狀态欄(status bar,就是顯示時間、電量那個(gè))是透明的,Android 4.4 (Kitkat,api 19)也添加了自定義 status bar 和(hé) navigation bar 的一些api,可(kě)以實現同樣的效果。
---
github上有 SystemBarTint 可(kě)以使用,但是很多功能用不到,所以自己實現了下(xià)。
---
 @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 和(hé) 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)中(zhōng)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的相關(guān)知識補充(Debug模式下(xià)一點點查看出來的):
[img]http://img.blog.csdn.net/20150108140856496

相關(guān)案例查看更多