andriod沉浸实现(全面)

2/13/2017来源:iOS开发人气:412

app实现沉浸效果能使界面效果更加和谐,改善用户体验。Andriod在API19之后还是支持沉浸效果,下main介绍三种方法: 方法一:下载支持jar包:http://download.csdn.net/detail/u012193089/9022715 1、在stylex.xml中你所引用的主题style<>中加入 [java] view plaincopy <!-- Status Bar -->   <item name="android:windowTranslucentStatus">true</item>   <!-- Navigation Bar -->   <item name="android:windowTranslucentNavigation">true</item>   2、在MainActivity.java的onCreate()方法中进行设置 [java] view plaincopy     //设置标题栏的颜色           getActionBar().setBackgroundDrawable(new ColorDrawable(Color.rgb(51, 181, 250)));       // 创建状态栏的管理实例            <span style="white-space:PRe"> </span>SystemBarTintManager tintManager = new SystemBarTintManager(this);         // 激活状态栏设置             tintManager.setStatusBarTintEnabled(true);         // 激活导航栏设置             tintManager.setNavigationBarTintEnabled(true);         // 设置一个颜色给系统栏            tintManager.setTintColor(Color.rgb(51, 181, 250));   方法二:下载支持jar包:http://download.csdn.net/detail/u012193089/9022715 直接在MainActivity.java的onCreate()方法中添加 [java] view plaincopy // 设置状态栏颜色           getActionBar().setBackgroundDrawable(                   new ColorDrawable(Color.rgb(51, 181, 250)));   //判断版本           if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {               setTranslucentStatus(true);           }   //创建实例           SystemBarTintManager tintManager = new SystemBarTintManager(this);   [java] view plaincopy //激活,设置颜色           tintManager.setStatusBarTintEnabled(true);           tintManager.setTintColor(Color.rgb(51, 181, 250));       }          @TargetApi(19)        private void setTranslucentStatus(boolean on) {           Window win = getWindow();           WindowManager.LayoutParams winParams = win.getAttributes();           final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;           if (on) {               winParams.flags |= bits;           } else {               winParams.flags &= ~bits;           }           win.setAttributes(winParams);       }   以上两种方法摘录于itbobby的专栏(http://blog.csdn.net/u012193089/article/details/47778433) 方法三: 在style上写以下代码: 指定style为noactionbar而且半透明
<resources xmlns:android="http://schemas.android.com/apk/res/android"><style type="text/CSS" parent="android:Theme.Holo.Light.NoActionBar.TranslucentDecor" name="AppBaseTheme"></style> </resources>
然后运行程序可以看到,状态栏与app顶部颜色是一致的,但是如果布局文件的顶部写有其它内容的话会发现布局文件上的内容会与状态栏上的内容重合~~这肯定是不允许的。 有没有方法解决呢? 在使用了沉浸式状态栏的布局文件上写上以下两句话:   然后在要使用沉浸式状态栏的布局文件上写上两句代码:
android:clipToPadding="true" android:fitsSystemWindows="true"
方法一和方法二在没有使用actionbar的情况下要把 getActionBar().setBackgroundDrawable(new ColorDrawable(Color.rgb(51181250)));  去掉,单独设置状态栏的颜色,另外要在根布局里加上
android:clipToPadding="true" android:fitsSystemWindows="true"
否则会出现状态栏遮盖内容的现象。 方法三的导航栏颜色设置区别于方法一和方法二是在根布局里设置背景色