A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tjsyj   /  2014-4-21 00:45  /  25410 人查看  /  293 人回复  /   3 人收藏 转载请遵从CC协议 禁止商业使用本文

下载,学习一下
回复 使用道具 举报
不错,已经是经常来拿楼主资源了,赞一个
回复 使用道具 举报
谢谢啊  哥们
回复 使用道具 举报
来学习一下,非常感谢您的分享!!
回复 使用道具 举报
看看~~~~
回复 使用道具 举报
支持 啊啊 啊
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
非常有用。。。谢谢
回复 使用道具 举报
不错哦.........
回复 使用道具 举报
学习一下,感谢分享
回复 使用道具 举报
顶一下,学习中
回复 使用道具 举报
来看看   
回复 使用道具 举报
uy赋予、
回复 使用道具 举报
来下载第3部分了
回复 使用道具 举报
回复 使用道具 举报
iitt 中级黑马 2015-5-30 00:02:31
156#
谢谢,刚好用上!
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
使用ActionBar搭建Android UI框架

什么是ActionBar?
ActionBar最早起源于Android 3.0系统, 最初是基于平板电脑设计的顶栏操作模块, 后来Android 4.0系统将此操作模块推广的普通的手机屏幕, 旨在为所有Android用户提供统一的交互体验。
ActionBar主要分如下几个部分:
1. 标题区域
此区域位于顶栏左侧, 用来展示程序图标, 标题, 及返回按键。
2. 操作区域
此区域位于顶栏右侧, 用来展示操作选项及菜单列表。

具体可参考下图:
                                                               
                                                                            图1-1 Actionbar简介

什么是ActionBarSherlock?

由于ActionBar 起源于Android 3.0系统, 所以Android 2.x的系统无法正常运行ActionBar的所有功能。 我们可以使用第三方框架ActionBarSherlock来解决这个问题。使用这种框架的好处就是, Android任何版本都可以统一ActionBar的标准样式, 无需开发者做过多兼容。这是官方网址:http://actionbarsherlock.com。

案例分析
接下来, 我们通过一个简单的案例,来了解一下ActionBarSherlock的使用方式。

一. 下载ActionBarSherlock官方SDK
登录官方网址:http://actionbarsherlock.com 下载SDK并解压, 如图所示:

  
   图1-2 ActionBarSherlock SDK

其中,actionbarsherlock是我们要使用的第三方库文件,actionbarsherlock-samples是例子程序。

二. 创建Demo程序
使用eclipse创建Android项目MyActionBarDemo,并且引入上一步下载的第三方库文件actionbarsherlock, 如下图所示:

  
图1-3 MyActionBarDemo

右键单击项目MyActionBarDemo,选择Properties,弹窗左侧列表选择Android,点击Add按钮,选择actionbarsherlock后,点击确定。这样,我们自己的项目MyActionBarDemo就和ActionBarSherlock关联了起来,可以直接调用ActionBarSherlock中的所有资源文件和API了。

  
图1-4 引入ActionBarSherlock库文件(1)

  
图1-5 引入ActionBarSherlock库文件(2)

注:由于actionbarsherlock的libs包下已经有android-support-v4.jar,为了避免jar包冲突,我们需要将MyActionBarDemo中libs目录下的android-support-v4.jar删除掉。

三. 快速开始
1. 在AndroidManifest.xml中,修改应用程序的主题,改为Sherlock下的某种主题,比如:@style/Theme.Sherlock.Light,表示亮色风格的主题。
<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Sherlock.Light" >
        <activity
            android:name="com.example.actionbardemo.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
</application>
复制代码
2. 让MainActivity继承SherlockActivity。
public class MainActivity extends SherlockActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
        }
}
复制代码
3. 在res目录下,新建menu文件夹,在menu下新建xml文件,名为main.xml,文件内容如下所示:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/action_1"
        android:showAsAction="always"
       android:icon="@drawable/ic_launcher"
        android:title="action_1"/>
</menu>
复制代码
此xml文件根标签是menu,子标签item表示一个操作选项。item有几个属性:id表示item的id标识;showAsAction表示item的展现方式,showAsAction=always表示item一直展示在actionbar的条目上;icon表示item的图标;title表示item的标题。

4. 在MainActivity中重写onCreateOptionsMenu这个方法。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
}
复制代码
此方法可以将描述文件main.xml填充到ActionBar的条目中。
运行程序,即可发现在ActionBar的操作区域,多了一个操作选项,如图所示:

  
图1-6 显示操作选项
5. 为了让操作选项响应点击事件,可以在MainActivity中重写onOptionsItemSelected方法。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_1:
             Log.d("Test", "action 1 is clicked!");
             break;
        default:
        break;
        }
        return super.onOptionsItemSelected(item);
}
复制代码
在这个方法中,根据item的id来区分哪一个item被点击,从而执行相应的操作。

四. 扩展功能

1. 为了在ActionBar中显示子菜单功能,可以在main.xml中追加一段代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/action_1"
        android:icon="@drawable/ic_launcher"
        android:showAsAction="always"
        android:title="action_1"/>
    <item
        android:id="@+id/action_more"
        android:icon="@drawable/ic_launcher"
        android:showAsAction="always"
        android:title="action_more">
        <menu>
            <item
                android:id="@+id/action_2"
                android:showAsAction="always"
                android:title="action_2"/>
            <item
                android:id="@+id/action_3"
                android:showAsAction="always"
                android:title="action_3"/>
        </menu>
    </item>
</menu>
复制代码
运行项目,点击新增的item,可得到如下效果:

  
图1-7 ActionBar的子菜单

2. ActionBar还可以动态修改标题,logo图标,设置返回按钮等。
private void updateActionBar() {
        ActionBar actionbar = getSupportActionBar();//获取actionbar对象
        actionbar.setTitle("自定义标题");//修改actionbar标题
        actionbar.setLogo(R.drawable.logo);//修改actionbar的logo
        actionbar.setDisplayHomeAsUpEnabled(true);//显示返回按键
}
复制代码

  
图1-8 自定义actionbar
注: 返回按键的点击事件也是在onOptionsItemSelected中进行捕获,只不过采用系统默认id:android.R.id.home。

总结

随着Android系统的飞速发展,ActionBar会应用到越来越多的项目当中,比如微信近期的几个版本都采用了ActionBar的UI框架。为了保证2.x版本的兼容,我们可以直接使用ActionBarSherlock这个流行的第三方SDK,其API的调用方式几乎和Android原生ActionBar的调用方式完全一致,极大降低了开发成本,提高了开发效率。
回复 使用道具 举报
看看,自己总结有点费力
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马