开源组件actionbarsherlock的使用

摘要 从android 3.0开始,android加入了一个新的api,actoinbar,不得不说3.0之前android的标题栏确实比较丑,并且还没有任何功能,大部分情况下我都是直接将其隐藏的。 之前很多应用的顶部栏很多都是仿苹果的,比如微信。随着android 4.0的发布和慢慢的推广开来,

从android 3.0开始,android加入了一个新的api,actoinbar,不得不说3.0之前android的标题栏确实比较丑,并且还没有任何功能,大部分情况下我都是直接将其隐藏的。

之前很多应用的顶部栏很多都是仿苹果的,比如微信。随着android 4.0的发布和慢慢的推广开来,很多应用也开始使用google推广的ui设计,而actionbar是其中相当重要的一部分。

无奈google没有发布3.0之前版本的actionbar的兼容包。还好网上有提供开源的别人开发的,actionbarshelock,以下简称abs.

abs可以让2.x的系统也能使用actionbar,另外现在abs也提供了很多其他3.0以后才提供的功能,比如fragement。这里就只介绍actionbar的使用。

abs的还有一项值得一提的优点就是,如果你在3.0以上的机子上使用,那么它会调用系统原生的actionbar。另外它的使用方法和系统自身的方法相当相似,如果你actionbar本身已经很熟悉了,那么abs也能很快上手。

--------------------------------------------------

首先给出abs的官方网址,英文的,http://actionbarsherlock.com/。我写这文章时,最新版本是4.1.0. 就拿这个做介绍。首先下载对应的压缩包。

官方有在Youtube上提供一套基础视频教程http://youtu.be/4GJ6yY1lNNY,教我们怎么在项目中使用。至于怎么才能看youtube,这里就不做介绍了。回头我找时间上传到youku,方便大家观看。


其实视频教程里已经说得相当清楚了,建议大家还是看视频教程。这里就简单介绍下步骤,不同版本的eclipse和adt可能操作方式会略有不同。

1.eclipse中file->new->other->android类下的androd project from existing code,之前下载下来解压的包里面有个library文件夹,选择那个文件夹导入。



2.导入之后,我的工作目录下多了个library的项目,如果大家看这名字不爽可以改了,我这边命名为abs4.1.0。右击,查看属性,这里有一些要注意的地方。



在android类里,build target需要选择api 14以上。另外把is library勾上。



我由于用的是最新的adt(20),所以导入后没出现什么错误,有些人可能导入后会有红叉,貌似是因为缺少android-support-v4.jar这个兼容包。

这时官方推荐的做法是右击项目-》android tools->add suppoert library来修复。


这下应该没红叉了,abs算是成功导入了。接下来就是如何在我们的项目中使用它了。

和大多数android library一样,我们需要在我们的项目中add library。方法是右击属性,然后再android类中,点击add library,选择我们刚刚导入的abs4.1.0.

 

注意build tagert api level 必须设为15以上(abs4.1.0的版本是这样,其他版本不一定)。

至于为何要设这么高,之前也提到过,abs在4.0以上版本的机子上,默认会调用原生的actionbar,所以才会有此项限制。


导入后,可能有些人会出现jar包冲突,这是因为abs和自己项目中同时存在android-support-v4这个包,这时只要删掉自己项目中的这个jar包就ok了。

至此,我们就能在项目中使用abs 的 actionbar了。

 

 

说下abs简单的在项目中的使用方法。

其实和android 3.0以上版本的actionbar使用方法相当类似


1.配置文件

先看下manifest文件,注意上面红色高亮的字体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<manifest xmlns:android= "http://schemas.android.com/apk/res/android"
     package= "com.example.absdemo"
     android:versionCode= "1"
     android:versionName= "1.0" >   
          
     <uses-sdk   
         <span style= "color: rgb(204, 0, 0);" >android:minSdkVersion= "8"
         android:targetSdkVersion= "15" </span> />   
          
     <application   
         android:icon= "@drawable/ic_launcher"
         android:label= "@string/app_name"
         android:theme= "@style/AppTheme" >   
         <activity   
             android:name= ".MainActivity"
             android:label= "@string/title_activity_main"
             <span style= "color: rgb(204, 0, 0);" >android:theme= "@style/Theme.Sherlock.Light</span>" >   
             <intent-filter>   
                 <action android:name= "android.intent.action.MAIN" />   
          
                 <category android:name= "android.intent.category.LAUNCHER" />   
             </intent-filter>   
         </activity>   
     </application>   
          
</manifest>

配置完这些,其实你可以尝试着打包运行一下,就能看到一个基本的actionbar了。但上面除了一图标,没有任何按钮之类的,这显然不是我们需要的。所以我们还得做些工作。


2.actionbar上的按钮

如果要让actionbar显示一些menu按钮,那么我们需要重写activity中的onCreateOptionsMenu,对应的还要重写onOptionsItemSelected来响应这些按钮的点击。另外该activity必须继承ShelockActivity.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class MainActivity extends SherlockActivity {   
          
     @Override   
     public void onCreate(Bundle savedInstanceState) {   
         super .onCreate(savedInstanceState);   
         setContentView(R.layout.activity_main);   
                  
     }   
              
     @Override   
     public boolean onOptionsItemSelected(MenuItem item) {   
         switch (item.getItemId()){   
         case R.id.menu_delete:   
             Toast.makeText( this , "delete" , Toast.LENGTH_SHORT).show();   
             break ;   
          
         }   
         return super .onOptionsItemSelected(item);   
     }   
              
     @Override   
     public boolean onCreateOptionsMenu(Menu menu) {   
         getSupportMenuInflater().inflate(R.menu.activity_main, menu);   
         return super .onCreateOptionsMenu(menu);   
     }   
              
}

另外这里我使用了menu文件 res/menu/activity_main.xml

1
2
3
4
5
6
7
<menu xmlns:android= "http://schemas.android.com/apk/res/android" >   
     <item    
         android:id= "@+id/menu_delete"
         android:title= "@string/menu_settings"
         android:showAsAction= "ifRoom"
         android:icon= "@android:drawable/ic_delete" />   
</menu>

3.actionbar左上角返回按钮

实际项目中,我们经常需要ui中一个返回按钮来进行界面之间的跳转。其实很简单,和actionbar的使用一样,只需在Oncreate时或适当时机写上

1
getSupportActionBar().setDisplayHomeAsUpEnabled( true );

那么如何响应呢

也是重写onOptionsItemSelected() ,这个返回键的id是android.R.id.home。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值