ActionTitleBar轻量级 actionbar 实现

联合创作 · 2023-09-24 11:19

对于 android actionbar 的兼容实现,目前用得最多的就是 ActionBarSherlock,那么为什么还要重复造一个轮子呢?在实际项目开发中,ActionBarSherlock 的实现无疑是目前最强大的 actionbar 兼容实现,但是,强大并不意味着好用。

  1. ActionBarSherlock 的完全兼容是一种侵入式实现,对于一些老项目而言这种实现完全不能用。
  2. ActionBarSherlock 太大了,有时候,我们并不需要完全的 actionbar 功能,但是,我们却要为我们不需要的功能进行买单(导致打包后的安装包增大了几百K)。
  3. ActionBarSherlock 需要一定的学习曲线。虽然,ActionBarSherlock 对比官方 actionbar 的 api 只是加上一个 Sherlock 的前缀,但是,对于刚上手 ActionBar 的人来说,具有一定的疑惑。大大增加了学习的难度。

基于以上几点,我决定动手写一个足够轻量级的 actionbar 实现,它可能并不能像 ActionBarSherlock 那样完全实现 actionbar 的所有功能,但是,如果你只是用 actionbar 的比较简单的功能的话,或许可以考虑使用。

实现原理

从最新版本的sdk 源码中提取了ActionBar 源码,实际上这是个抽象类,定义了actionbar 相关接口。

然后,我继承这个类实现了另外一个版本的actionbar。这样的好处,就是可以能够完全重用官方的api。

实际使用中你只需要:

ActionTitleBar.getActionBar(this, titleMenu);替换调原来的 getActionBar();

然后,其他操作与官方的一样。

目前为止已经实现了:

  1. 基本的actionbar,title, up
  2. 实现了actionbar的list 导航和 标准(home up) 导航。
  3. 用ActionTitleMenu 类 模拟实现了actionbar 的 actionview。

截图:

浏览 8
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报