安卓开发实现应用程序与系统的沉浸效果

在ios的所有应用中系统栏和应用在风格和色彩上都非常统一,显得非常唯美。那么安卓是否也能实现相同的效果呢?答案是肯定的。在安卓4.4(API19)以后系统开始支持沉浸效果,MIUI通过Xposed框架可以实现非系统应用的沉浸效果,安卓官方也提供了了两套系统的主题可以实现NoActionBar的沉浸,可以再style.xml进行更改尝试,在开发中我们也可以通过代码实现应用在4.4以上不同ROM中的沉浸效果,下来介绍两种方法(两种方法均需要一个第三方jar包,将其放入lib文件夹中,下载地址:点击打开链接):

方法一:

1、在stylex.xml中你所引用的主题style<>中加入

[java]  view plain copy print ?
  1. <!-- Status Bar -->  
  2. <item name="android:windowTranslucentStatus">true</item>  
  3. <!-- Navigation Bar -->  
  4. <item name="android:windowTranslucentNavigation">true</item>  
2、在MainActivity.java的onCreate()方法中进行设置

[java]  view plain copy print ?
  1.     //设置标题栏的颜色  
  2.         getActionBar().setBackgroundDrawable(new ColorDrawable(Color.rgb(51181250)));  
  3.     // 创建状态栏的管理实例    
  4.        <span style="white-space:pre"> </span>SystemBarTintManager tintManager = new SystemBarTintManager(this);    
  5.     // 激活状态栏设置    
  6.         tintManager.setStatusBarTintEnabled(true);    
  7.     // 激活导航栏设置    
  8.         tintManager.setNavigationBarTintEnabled(true);    
  9.     // 设置一个颜色给系统栏   
  10.         tintManager.setTintColor(Color.rgb(51181250));  
方法二:

直接在MainActivity.java的onCreate()方法中添加

[java]  view plain copy print ?
  1. // 设置状态栏颜色  
  2.         getActionBar().setBackgroundDrawable(  
  3.                 new ColorDrawable(Color.rgb(51181250)));  
  4. //判断版本  
  5.         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {  
  6.             setTranslucentStatus(true);  
  7.         }  
  8. //创建实例  
  9.         SystemBarTintManager tintManager = new SystemBarTintManager(this);  
[java]  view plain copy print ?
  1. //激活,设置颜色  
  2.         tintManager.setStatusBarTintEnabled(true);  
  3.         tintManager.setTintColor(Color.rgb(51181250));  
  4.     }  
  5.   
  6.     @TargetApi(19)   
  7.     private void setTranslucentStatus(boolean on) {  
  8.         Window win = getWindow();  
  9.         WindowManager.LayoutParams winParams = win.getAttributes();  
  10.         final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;  
  11.         if (on) {  
  12.             winParams.flags |= bits;  
  13.         } else {  
  14.             winParams.flags &= ~bits;  
  15.         }  
  16.         win.setAttributes(winParams);  
  17.     }  

最终实现的效果如下:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值