首页 > 代码库 > Android 关于 actionsherlock 的使用

Android 关于 actionsherlock 的使用

最近一个星期被 actionsherlock 搞得很不爽(光去足疗店就去了三次——减压),本来觉得应该不太会难啊(Android 已经基本入门),毕竟编程(虽然我是搞 .NET 的,但 Java 跟 .NET 有 90% 的相似度,虽然没用 Java 做过项目,但也不至于对 Java 什么都不懂……)也有年头了,可看了些资料和示例后,自我感觉,简单搞一下还行,但达到做项目的程度,还是复杂了点,到现在都没能体会~

看来啊,还是在官网系统地看写资料从头来过吧。近期想自己写个 Android APP,若不用 actionsherlock,貌似起点低了点啊,呵呵~

与官方兼容库的主题粘合在一起的 ActionBarSherlock,目的是让用户可以使用操作栏的设计方式,这种方式是在 Android Ice Cream Sandwich 中积累的经验。在此之前,顶部操作栏的设计还是比较麻烦的,通常是由四个部分组成,如下图 1 所示,从左到右,分别为应用图标、视图控制、操作按钮和更多操作,都需要自己弄,而且每个开发者对操作栏的设计可能不同,ActionBarSherlock 恰恰就是简化和规范操作栏的设计和实现。

action_bar_basics

图 1 Android 操作栏设计

Android Ice Cream Sandwich 是 Android 继 Froyo 后的下一个版本。因为,Android 系统版本混乱的局面一直困扰着 Android 开发者,Ice Cream Sandwich 解决两个问题:碎片(Fragment)设计,可以让应用在小屏幕上使用单个面板布局,在大屏幕上使用多个面板布局;帮助开发者驾驭不同尺寸的屏幕。

查看 Google 关于操作栏的设计原则。

什么是 actionsherlock?事实上,actionsherlock 根据之前对操作栏设计和实践经验,在原生 Android 的基础上,封装的一个库,为了便于识别和使用,它在包名,及其内部大量的类等在命名和位置上都与原生的 Android 相匹配。

要求


由于 actionsherlock 使用了原生的操作栏(action bar)及其 Ice Cream Sandwich 的相关类,所以该库要求你必须使用 Android 4.0 或更高的版本来编译 actionsherlock 和你的项目。另外,也需要采用 JDK 1.6。

因为 actionsherlock 库是官方库的扩展,因此,你必须在你项目中引用 android-support-v4.jar

 

如何包含在你的项目中


如果你使用 ADT 插件版本 0.9.7 或更高的 Eclipse 开发环境,那么你就可以把 ActionBarSherlock 引入到你的项目。

Create a new Android project in Eclipse using the actionbarsherlock/ folder as the existing source. Then, in your project properties, add the created project under the ‘Libraries’ section of the ‘Android’ category.

其他方式包括使用 ant 从命令行编译,以及使用 maven 或 gradle  生成你的 Android 项目,请参看“ActionBarSherlock 官网”。

 

Action Bar API


当创建一个 activity 在所有 Android 版本中使用操作栏,你必须声明你的 activity 继承以“Sherlock”开头的任何一个类(例如,SherlockActivitySherlockFragmentActivity)。与操作栏的交互是通过调用 getSupportActionBar()(而不是 getActionBar())。

由 ActionBar 实例公开的 API 是原生方法(native method) 公开的一个完全的副本。在“Related Links”小节,参阅其文档,以及如何使用它。

注意: 当使用 SherlockFragmentActivity 时,也要使用“Sherlock-”前缀开头的 fragment 类,这样才能确保正确的功能(例如,SherlockFragment、SherlockListFragment)。该 activity 仍然与正常的 fragment 类功能一样,但你将不能使用任何的菜单相关的方法。

 

必要的主题化


因为该操作栏部件非常复杂,它需要一套默认的主题。该库提供三个核心的主题——其中任何一个都必须被应用到每个你需要操作栏存在的 Activity 上。

更多地请参考“主题化”。

 

引用


为了使用操作栏的功能,必须在  Android 3.0 以上的版本,该库包含并使用的大量的类,与原生 Android 的包名相对应。最常见的是:

  • com.actionbarsherlock.app.ActionBar
  • com.actionbarsherlock.view.Menu
  • com.actionbarsherlock.view.MenuItem
  • com.actionbarsherlock.view.MenuInflater

例如,com.actionbarsherlock.app.ActionBar 与 com.android.app.ActionBar 对应。

加入这些包才能确保你适当使用这些类型,以及额外的功能。

注意:大多数对于从 activity @Override 方法的错误都是由于错误 import 的结果。所有在 com.actionbarsherlock.* 包中类,它们的名字和位置都与原生类相匹配。

注意:为了从 XML 文件 inflate 你的菜单,你应该在你的 activitie 中调用 getSupportMenuInflater() 方法。fragment 回调会准备 inflater 的一个实例作为参数。最近我就犯了这个错误,eclipse 报了个 inflateException,看到这句话我才明白。