• Android 4.4新特性之透明状态栏和透明虚拟导航栏


    参考资料:

    http://www.cnblogs.com/zhengxt/p/3536905.html

    http://www.xuebuyuan.com/2207437.html

    http://www.jcodecraeer.com/a/opensource/2014/1222/2198.html

    http://www.eoeandroid.com/thread-560459-1-1.html?_dsign=acfc8bcd

    除了沉浸模式外,Android 4.4还有新的API,能使应用内的状态栏和虚拟按钮透明。如果要使应用内的状态栏和虚拟按钮变成透明有两种方法。

    一种是代码方式:

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //下面这句话要写在setContentView之前
            //getWindow().requestFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_main);
    
            //设定状态栏的颜色,当版本大于4.4时起作用
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                Window window = getWindow();
                window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
                window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
                SystemBarTintManager tintManager = new SystemBarTintManager(this);
                tintManager.setStatusBarTintEnabled(true);
                tintManager.setNavigationBarTintEnabled(true);
                tintManager.setTintColor(Color.BLUE);
    
                //SystemBarTintManager.SystemBarConfig config = tintManager.getConfig();
                //map.setPadding(0, config.getPixelInsetTop(), config.getPixelInsetRight(), config.getPixelInsetBottom());
            }
    
            if (getSupportActionBar() != null){
                if (getSupportActionBar().isShowing()){
                    getSupportActionBar().hide();
                }
                else {
                    getSupportActionBar().show();
                }
            }
        }


    通过

    compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'

    可以在android4.4版本改变状态栏和虚拟导航栏的颜色。这是个4.4的替代方案,在5.0以后有新的API,就不需要再使用这个库,所以做好版本判断。

    注意在布局文件头加入如下句:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:context="com.badu.immersivemode.MainActivity">

    在样式文件里添加这俩句也可以达到透明的效果。

            <!-- <item name="android:windowTranslucentNavigation" >true</item>
            <item name="android:windowTranslucentStatus">true</item> -->

    另外一种是使用两个新的主题风格:

    Theme.Holo.NoActionBar.TranslucentDecorTheme.Holo.Light.NoActionBar.TranslucentDecor

    但是这种方式只支持Android4.4以上系统,所以为了保持兼容性,我们还是采用代码方式比较好。只需要先判断,如果是4.4以上系统才启用代码。

  • 相关阅读:
    369. Plus One Linked List
    147. Insertion Sort List
    817. Linked List Components
    61. Rotate List
    Object 类
    多态
    重写方法
    Protected 修饰符
    继承
    数组
  • 原文地址:https://www.cnblogs.com/8dull/p/5382091.html
Copyright © 2020-2023  润新知