咳咳,答应过年增加新功能的,没想到拖到现在,延迟了一个来月,尴尬,尴尬
成都创新互联成都企业网站建设服务,提供网站设计制作、做网站网站开发,网站定制,建网站,网站搭建,网站设计,响应式网站建设,网页设计师打造企业风格网站,提供周到的售前咨询和贴心的售后服务。欢迎咨询做网站需要多少钱:18982081108
那个,我们先忽略这尴尬的事情吧,进入正题才是最重要滴
老规矩,先上效果图:
跟原来的图有个很明显的区别,你们也一定都发现了,对不对。那么显眼的小红点,一定都看到了吧。
当然除了这个,还增加了一项功能,虽然不是很明显,但相信也有小伙伴发现了吧,截图的这俩手机屏幕明显大小不同,但是底部导航栏的大小还是相差不大滴。
是的,你们没有看多,这次不仅增加了小红点功能,还增加了底部导航栏的适配,你没有听错,以后底部导航栏也不用那些dp、sp了,都按照UI妹子们标注的px来就可以了,再也不用为了底部导航栏去跟UI妹子解释啥叫dp了。
好了,效果图展示完了,现在该进入枯燥的使用介绍了。
由于这次改动有点大,所以,先介绍下上个稳定版本的用法,到底是用最新的,还是用原来的,就看各位小伙伴的意愿了
上个稳定版本是1.1.3的,引用方式如下
compile 'com.hjm:BottomTabBar:1.1.3'
具体用法如下(备注都加好了,我也就不多废话了):
最新版本是1.2.2的,引用方式如下
compile 'com.hjm:BottomTabBar:1.2.2'
其实1.2.0与1.1.3区别并不大,只有4点改动:
现在默认的,分割线高度都是设置的1个像素。这里以后也固定都用这个默认的高度了,不再对外提供修改的方法。
这就是新增加的适配了,多的也不说了,你们都懂的
标准尺寸,就是UI妹子给你提供的效果图的屏幕尺寸,只要在init()方法里添加上标准尺寸,你就可以放肆的使用px了
这个方法就是控制小红点显示的方法了,index就是需要显示或者隐藏小红点的TabItem,isShow是一个boolean类型的参数,他是控制小红点是否显示的,如果为true,就会显示小红点;如果为false,就会隐藏小红点
1.2.2版本新增了两个方法
介绍到这里,超简单的底部导航栏,第二阶段就可以告一段落了。以后还会持续优化,完善的。
第三阶段我打算封装一下有中间凸起的底部导航栏,这个功能我本地已经做了,但是封装进去的时候,封装的不理想,这次就没有上线,留作下次了。
最后,再上个 GitHub 地址
这是布局:
** android:clipChildren="false"**的意思是孩子的宽高不必受父亲的约束,即可大过父布局,父亲以及父亲的父亲都必须申明才可以,中间Imageview的android:layout_gravity="bottom"表示当高度超过父布局时,底部对齐,于是就达到上图的效果。
Android 从4.4开始引进透明状态栏和导航栏的概念,并且在5.0进行了改进,将透明变成了半透明的效果。虽然此特性最早出现在ios,但不否认效果还是很赞的。
至于4.4以下的手机,就不要考虑此特性了,好在4.4以下的手机份额已经非常小了。
我们先来看一下透明状态栏的实现,两种常见效果图如下:
虚拟导航栏并不是所有的手机都有,华为的手机多比较常见,就是上图屏幕底部按钮那块区域。设置导航栏和状态栏类似:
这是官方的解释,大致意思就是我们在布局的最外层设置 android:fitsSystemWindows="true",会在屏幕最上方预留出状态栏高度的padding。
由于fitsSystemWindows属性本质上是给当前控件设置了一个padding,所以我们设置到根布局的话,会导致状态栏是透明的,并且和窗口背景一样。
但是多数情况,我们并不在根布局设置这个属性,我们想要的无外乎是让内容沉浸在状态栏之中。所以我们经常设置在最上端的图片背景、Banner之类的,如果是Toolbar的,我们可以使用一层LinearLayout包裹,并把这个属性设置给LinearLayout,这样就可以避免Toolbar的内容下沉了。如:
上述方法可以解决普通页面的透明式状态栏需求,如有复杂需求可以参考下面这些:
Android 系统状态栏沉浸式/透明化完整解决方案
Android 沉浸式状态栏的实现
Android沉浸式状态栏(透明状态栏)最佳实现
还有开源库推荐: ImmersionBar
在 Android导航栏隐藏与浮现(一) 中已经以 Nexus5 为例, Android M 为基础介绍了怎么实现底部导航栏的隐藏与浮现,本文将介绍怎么在设置(辅助功能)中加入控制该功能的开关。
上图可以看到,应用中加入了一个 Enhance Navigation bar 的选项,该功能开启后可以长点击任务键(Recent)时,导航栏隐藏;从下不向上滑时,导航栏展示。 关闭后即取消了该功能。下面看一下整体的操作步骤:
在 Settings.apk 中修改相应的资源文件即可,修改中可以参考系统设置中的 Large text , 步骤如下:
修改 ./packages/apps/Settings/res/values-zh-rCN/strings.xml ,添加资源名称:
修改 ./packages/apps/Settings/res/values/strings.xml ,添加资源名称:
修改 ./packages/apps/Settings/res/xml/accessibility_settings.xml ,添加开关:
修改 ./frameworks/base/core/java/android/provider/Settings.java ,在内部类 Secure 中添加字段:
修改文件 ./frameworks/base/packages/SettingsProvider/res/values/defaults.xml ,添加默认开关:
修改文件 ./packages/apps/Settings/src/com/android/settings/accessibility/AccessibilitySettings.java , 修改部分基本和 Large text 的相同,diff后的试图如下,也可以根据下面提供修改前和修改后的文件,可以使用 diff 工具对比查看。
diff后的文件对比试图
AccessibilitySettings修改前 AccessibilitySettings修改后
修改 ./frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java ,添加变量:
在recent键长点击处添加开关控制:
使用 mmm 命令针对涉及的模块进行打包。
使用 make snod 命令生成 system.img 。
两次的结合完整的解决了导航栏的隐藏与浮现以及功能控制。
刷机需谨慎!刷机需谨慎!刷机需谨慎!如若刷机请提前备份数据!