zoukankan      html  css  js  c++  java
  • (五)在android 4.4上设置手机状态栏的背景

    一、demo效果图

    在android 4.4上 有一个新的特性可以设置手机状态栏的背景,让手机整个界面的风格保持一致,在今年的google i/o上的android l默认就是这种风格。来先看一下demo效果图:

                                        

                图一:透明状态栏                                                                                                               图2:蓝色背景状态栏

    二、整个DEMO的工程结构图如下所示:

    三、主要的实现代码如下所示:

    首先,要记得导入systembartint-1.0.4.jar包

     3.1 MainActivity.java中的代码如下所示:

    package com.example.testdemo;
    
    import android.annotation.TargetApi;
    import android.app.Activity;
    import android.os.Build;
    import android.os.Bundle;
    import android.view.Window;
    import android.view.WindowManager;
    
    import com.readystatesoftware.systembartint.SystemBarTintManager;
    
    public class MainActivity extends Activity {
        private boolean isBarTint = true;
        private boolean isTranslucentBarTint = false;
    
        public void setBarTint(boolean isBarTint) {
            this.isBarTint = isBarTint;
        }
    
        public void setTranslucentBarTint(boolean isTranslucentBarTint) {
            this.isTranslucentBarTint = isTranslucentBarTint;
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            if (isBarTint) {
                initSystemBar();
            } else if (isTranslucentBarTint) {
                initTranslucentSystemBar();
            }
        }
        @TargetApi(Build.VERSION_CODES.KITKAT)
        private void initSystemBar() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                setTranslucentStatus(true);
                SystemBarTintManager tintManager = new SystemBarTintManager(this);
                // 激活状态栏设置
                tintManager.setStatusBarTintEnabled(true);
                // 激活导航栏设置
                tintManager.setNavigationBarTintEnabled(false);
    
                int sbg = getResources().getColor(R.color.titlebar_rl_background);
                tintManager.setTintColor(sbg);
                tintManager.setStatusBarTintColor(sbg);
    
            }
        }
    
        @TargetApi(Build.VERSION_CODES.KITKAT)
        private void initTranslucentSystemBar() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                setTranslucentStatus(true);
                SystemBarTintManager tintManager = new SystemBarTintManager(this);
                // 激活状态栏设置
                tintManager.setStatusBarTintEnabled(true);
                // 激活导航栏设置
                tintManager.setNavigationBarTintEnabled(false);
    
                int sbg = getResources().getColor(R.color.viewfinder_title);
                tintManager.setTintColor(sbg);
                tintManager.setStatusBarTintColor(sbg);
            }
        }
    
        
    
        @TargetApi(Build.VERSION_CODES.KITKAT)
        private void setTranslucentStatus(boolean isOpen) {
            Window win = getWindow();
            WindowManager.LayoutParams winParams = win.getAttributes();
            final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
            if (isOpen) {
                winParams.flags |= bits;
            } else {
                winParams.flags &= ~bits;
            }
            win.setAttributes(winParams);
        }
    
        @TargetApi(Build.VERSION_CODES.KITKAT)
        private void setTranslucentNavigation(boolean isOpen) {
            Window win = getWindow();
            WindowManager.LayoutParams winParams = win.getAttributes();
            final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
            if (isOpen) {
                winParams.flags |= bits;
            } else {
                winParams.flags &= ~bits;
            }
            win.setAttributes(winParams);
        }
    }

     3.2 colors.xml的颜色值如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="titlebar_rl_background">#33b5e6</color>
        <color name="viewfinder_title">#80000000</color>
    </resources>

     3.3 styles.xml中的代码如下所示: 

    <resources>
        <style name="AppTheme" parent="AppBaseTheme">
            <item name="android:windowNoTitle">true</item>
            <item name="android:fitsSystemWindows">true</item>
        </style>
    </resources>

     3.4 AndroidManifest.xml  中application或对应的activity设置主题 android:theme="@style/AppTheme" 

  • 相关阅读:
    mybatis的物理分页:mybatis-paginator
    maven常用插件: 打包源码 / 跳过测试 / 单独打包依赖项
    mybatis 3.2.8 + log4j2.0.2 控制台输出sql语句
    struts2: config-browser-plugin 与 convention-plugin 学习
    struts2 异常处理3板斧
    java:集合的自定义多重排序
    mac/linux中vim永久显示行号、开启语法高亮
    weblogic下部署应用时slf4j与logbak冲突的解决办法
    struts2使用Convention Plugin在weblogic上以war包部署时,找不到Action的解决办法
    spring 3.2.x + struts2 + mybatis 3.x + logback 整合配置
  • 原文地址:https://www.cnblogs.com/fuyanan/p/4742286.html
Copyright © 2011-2022 走看看