由于Android3.0以上版本才有ActionBar,所以如果要在Android3.0以下的版本用上ActionBar似乎是一件不可能的事情,至少对于新手来说几乎不可能实现,对于一般的老手也没有一个完整的解决方案,即要适配新版本又要在低版本上用到Actionbar.不过很幸运的是已经有牛人实现这一工作,我们要做的就是学会使用它就好,但是你肯定很想知道到底牛人是怎么实现的,去github上找源码吧.
我也很想知道牛人是怎么实现的,毕竟结果不重要,重要的是思路,想法,对吧?那让我们一起来分析他们的思路与想法吧!
最近只看了HoloEverywhere Library中的android.support.v7.app包.这个包中有如下几个类:
- ActionBarActivity.java
- ActionBar.java
- ActionBarImplICS.java
- ActionBarImplBase.java
- ActionBarImplHC.java
- ActionBarActivityDelegate.java
- ActionBarActivityDelegateICS.java
- ActionBarActivityDelegateBase.java
- ActionBarActivityDelegateHC.java
现在来分析一下这个类的关系.首先这9个类分为三大类:
第一类只有一个类:ActionBarActivity.java,这是一个单独的类,是对外提供给使用者使用的类.看类声明就知道,只有这个类的权限是public权限,如果需要用ActionBar,在Activity中继承这个类就可以.这个类对所有版本使用ActivityBar进行了封装和统一管理.会根据不同的A