Android (假)沉浸式菜单栏使用总结

               大部分人所想或所看的沉浸式菜单栏并不是这么称呼的,真正的沉浸式是类似于游戏全屏菜单栏已经看不到的,

       所以这里我把大部分人所想象或看到的称为假沉浸式菜单栏。 

              本文基于Android4.4(v19)以上所述,想使用自动沉浸式,首先得在配置文件中配置包(这包导入整个应用会多几百K)

      compile 'com.android.support:appcompat-v7:23.2.0'  
         然后在 res 文件下 (当sdk >= 19的时候,系统会自动调用):

                      1. 新建一个 values-v19 的文件  

                      2. 在 values-v19 下新建一个styles.xml文件

       注:如果用AndroidStudio开发的话,直接在原styles文件下写样式会发出错误警告,然后你可以根据提示直接生成这个 v19 文件以及样式了。 

      
<style name="MainTheme" parent="Theme.AppCompat.NoActionBar">  
    <item name="android:windowTranslucentStatus">true</item>  
    <item name="android:windowTranslucentNavigation">true</item>  这两句已经达到沉浸效果  
  <item name="android:fitsSystemWindows">true</item>    加上这一句,系统自动调整你布局控件在菜单栏一下  
</style>  
    把该样式设置application的属性,之后所有子布局(不设置特定样式前提)会自动调用。 


 其实所谓沉浸就把布局全屏,然后再显示状态栏而已,所以加上

<item name="android:fitsSystemWindows">true</item> 
  这句后,布局就会自动把被状态栏遮住的控件自动往下移动,也就是修整布局, 但是这属性只针对当前设置的布局进行修整,

 也就是说,如果你是在application设置了这个样式,以后的所有布局(不设置特定样式前提),都是按第一个总布局进行修整

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"    
     android:id="@+id/main_layout"  总布局
> <LinearLayout android:layout_width="match_parent"
        android:id="@+id/child_layout"  二级布局
android:layout_height="wrap_content" android:orientation="vertical" > </LinearLayout></LinearLayout>


   如上所示,也就是总布局的子控件如果被状态栏遮住了,就会自动往下移动,并且状态栏的颜色就是总布局的背景颜色
 
  如果你在二级布局设置了 android:fitsSystemWindows 同理如果二级布局的控件被状态栏遮住了,就会自动往下移动,并且状态栏的颜色就是二级布局的背景颜色
 
        所以很多人想把自定义的actionBar作为沉浸,这时候,你的actionBar的上一级高度就不能写死(除非你写死一个很大的高度值)
  ,否则只能wrap_content
   小编测试到这里的时候,才发现Android控制有一个很不友好的地方,就是给控件或布局(高度wrap_content)设置图片为背景的时候,
 如果图片过大,就是把控件拉大了,很不美观,但是把背景设置一个颜色值,就很好的填充控件或者布局,但是很多情况下都想用图片
做背景,并且沉浸,所以没想到什么好的办法解决,如有想到好的解决这沉浸不写死actionBar上一级高度的办法,请留言
  有人会想,直接用一级布局的背景作为状态栏的背景不是也很好吗,下面的控件又填充其他颜色覆盖就可以了,这是个办法,
但是如果有关注GPU渲染的,都不想这么做,毕竟这样又多了一层渲染。


  文章描述得不是很好(敬请原谅),以上所述均为小编个人测试所得结果,如有错漏,请指出,多谢!!!

 




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值