Android设置沉浸式状态栏和Material主题

来源:互联网 发布:淘宝店铺宝贝详情教程 编辑:程序博客网 时间:2024/05/22 13:01

出处:http://blog.csdn.net/android_zhengyongbo/article/details/69396242

1.设置沉浸式状态栏的方法


/**
* true 进入全屏模式,状态栏不显示
* false 显示状态栏
*/

public static void setSystemUiVisibility(Activity activity, boolean enterFullscreen) {        if (activity == null) {            return;        }        View decor = activity.getWindow().getDecorView();        if (enterFullscreen) {            activity.getWindow().setFlags(                    WindowManager.LayoutParams.FLAG_FULLSCREEN,                    WindowManager.LayoutParams.FLAG_FULLSCREEN);        } else {            activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);        }        /* place the window within the entire screen, ignoring         *  decorations around the border (such as the status bar).*/        activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);        activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {            return;        }        Window window = activity.getWindow();        // Translucent status bar        window.setFlags(                WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,                WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);        // Translucent navigation bar        window.setFlags(                WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION,                WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);        int systemUiVisibility = decor.getSystemUiVisibility();        int flags = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar                | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;        if (enterFullscreen) {            systemUiVisibility |= flags;        } else {            systemUiVisibility &= ~flags;        }        decor.setSystemUiVisibility(systemUiVisibility);    }/****是否进入全屏模式**/    public static boolean isFullScreenActivity(Activity activity) {        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {            return (activity.getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) > 0;        }        View decor = activity.getWindow().getDecorView();        int systemUiVisibility = decor.getSystemUiVisibility();        int flags = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION                | View.SYSTEM_UI_FLAG_FULLSCREEN                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;        return (systemUiVisibility & flags) == flags;    }

2.使用Material主题(比较倾向于这种方法)

在BaseActivity中添加下面代码

 requestWindowFeature(Window.FEATURE_NO_TITLE);//无标题        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖直方向        this.TAG = getClass().getSimpleName();        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);//软键盘自适应

修改状态栏颜色只有在5.0及以上的版本才会生效,首先查看styles.xml中是否存在AppTheme:

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">        <!-- Customize your theme here. -->    </style>    然后新建values-v19,values-v21文件,创建styles.xml文件,添加主题:    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">        <!--状态栏颜色-->        <item name="android:colorPrimaryDark">@color/colorAccent</item>        <!--ActionBar颜色-->        <item name="android:colorPrimary">#ff0</item>        <!--界面背景颜色-->        <item name="android:windowBackground">@color/colorAccent</item>        <!--导航栏颜色-->        <item name="android:navigationBarColor">#f00</item>    </style>
最后将Manifest里面的主题更换为AppTheme就行了。这是我第一次写自己的博客,本博客主要是为了自我学习和提高,若能帮助到您将欣喜万分!!!
0 0