Android NavigationBar 代码分析记录(一)

NavigationBar 源码地址:

http://androidxref.com/5.1.0_r1/xref/frameworks/base/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/NavigationBar.java
这是androidxref的源码,最新的源码可以在github/android上看。

阅读源码可知:

      //noinspection SpellCheckingInspection
      loadIcon(back,   "ic_sysbar_back.png",   density, isRtl);
       //noinspection SpellCheckingInspection
       loadIcon(2,      "ic_sysbar_home.png",   density, isRtl);
      //noinspection SpellCheckingInspection
       loadIcon(recent, "ic_sysbar_recent.png", density, isRtl);

导航栏底部三个按钮由这三个方法加载完成
方法有四个参数 默认第一个按钮为back=1,第三个为recent=3,此处基于5.1.0的源码,github中android最新的源码back=1,recent=5

        int back = 1;
        int recent = 3;
        if (orientation == LinearLayout.VERTICAL || (isRtl && !rtlEnabled)) {
            // If RTL is enabled, then layoutlib mirrors the layout for us.
            back = 3;
            recent = 1;
        }

if中的Rtl是 right to left,android开发者模式里有一个强制右到左布局的功能,这个boolean应该是对应这个,而loadicon里的第一个参数应该是在navigationbar的位置。

下面是布局的部分源码,为了方便阅读,我去掉了一部分与分析无关的内容,
源码地址
http://androidxref.com/5.1.0_r1/xref/frameworks/base/packages/SystemUI/res/layout/navigation_bar.xml




    
       按钮间的间距,后面也有,为了方便阅读,后面的部分去掉
        
     返回按钮
        
            
home按钮
        

最近运行的app按钮
        
      菜单按钮  和 选择键盘 按钮 默认是隐藏的
        

            

            
        
        
       某些操作时,隐藏藏本来的三个按钮,替换成三个小点,这个情况我只在nexus自带的相机软件里面看到过
    
    

        

        

        

        

        
    

   全屏等情况出现避免误触?
    



你可能感兴趣的:(Android NavigationBar 代码分析记录(一))