美文网首页
An_android沉浸式透明渐变Demo

An_android沉浸式透明渐变Demo

作者: android_en | 来源:发表于2017-11-26 18:50 被阅读17次

    根据android studio 的版本和API的不同,沉浸式的效果可能会显示不出来,下面的例子请进行个参考:
    参考博客:http://blog.csdn.net/csdnzouqi/article/details/70210814
    首先我们在values里面的styles添加一行代码:

     <item name="android:windowTranslucentStatus">true</item>
    

    build.gradle 里面的API改为19:

    defaultConfig {
            applicationId "com.example.liuentong20171123"
            minSdkVersion 19
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
    
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
        }
    

    下面我们需要个工具类:
    ImmersiveStatusbar

    package com.example.liuentong20171123.Utils;
    
    import android.app.ActionBar;
    import android.graphics.Color;
    import android.os.Build;
    import android.view.View;
    import android.view.Window;
    
    /**
     * 作者:author
     * 时间 :2017/11/24:15:17
     * 说明:
     */
    
    public class ImmersiveStatusbar {
        private static ImmersiveStatusbar immersiveStatusbar;
    
        // 构造函数私有化
        private ImmersiveStatusbar() {
    
        }
    
        // TODO: 2017/4/17 单例模式
        public static ImmersiveStatusbar getInstance() {
    
            if (immersiveStatusbar == null) {
                // 加锁提高使用效率
                synchronized (ImmersiveStatusbar.class) {
                    if (immersiveStatusbar == null) {
                        immersiveStatusbar = new ImmersiveStatusbar();
                    }
                }
            }
            return immersiveStatusbar;
    
        }
    
        /***
         * 状态栏透明化
         * @param window    Window对象
         * @param actionBar ActionBar对象
         */
        public void Immersive(Window window, ActionBar actionBar) {
    
            if (Build.VERSION.SDK_INT >= 21) {
    
                View view = window.getDecorView();
                // TODO: 2017/4/13 两个FLAG一起使用表示会让应用的主体内容占用系统状态栏的时空间
                int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
                view.setSystemUiVisibility(option);
                // 将状态栏设置成透明色
                window.setStatusBarColor(Color.TRANSPARENT);
            }
        }
    
    }
    
    

    接下来我们设置在MainActivity:

     ImmersiveStatusbar.getInstance().Immersive(getWindow(),getActionBar());
    

    相关文章

      网友评论

          本文标题:An_android沉浸式透明渐变Demo

          本文链接:https://www.haomeiwen.com/subject/isqlbxtx.html