1. ActionBar主要的四种用法
2. 用它来取代Menu功能
主要的流程:
a. 配置菜单选项Item。在res/menu/xxx.xml中进行配置
orderInCategory:排序,数值越小优先级越高
showAsAction:控制Item展示方式,总共有5种方式
icon:给Item设置图标
title:给Item设置文字标题
b. 在对应Activity里覆盖创建菜单的方法,调用时机:创建菜单的时候
onCreateOptionsMenu(Menu menu);
要完成的基本功能,就是添加菜单选项到menu里边
两种方式:一种静态通过xml来填充,另外一种是通过menu的add方法进行添加
c. 在对应的Activity里去覆盖onOptionsItemSelected(MenuItem item);
通过该方法去监听菜单选项的点击选中的事件,在对应分支需要完成指定的功能
3. 启用应用程序图标,使它具有返回上一界面或者返回到HOME页面的导航功能
主要流程:
a. 获取ActionBar的对象
b. 进行相关的设置,比如启用应用程序图标,显示返回图标
c. 在对应的Activity里去覆盖onOptionsItemSelected(MenuItem item);
监听id:android.R.id.home
进行相关的操作:
返回上一页面:如果上页面存在,直接finish当前Activity,不存在通过startActivity进行跳转
返回HOME页面:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
4. 通过ActionBar的Tab来做选项卡导航
主要流程:
a. 定义出页面相关的类,比如2个Fragment
b. 获得ActionBar对象ac
c. 设置模式
ac.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
d. 通过ActionBar的对象获取Tab对象
ActionBar.Tab tab1 = ac.newTab().setText("TAB_1");
ActionBar.Tab tab2 = ac.newTab().setText("TAB_2");
e. 获取Fragment对象
f. 创建一个Tab的监听器类
定义类实现ActionBar.TabListener接口,复写里边的抽象方法
onTabSelected // 选中某个Tab的时调用:通常把页面添加进去
onTabUnselected // 之前选中的Tab被取消时调用:通常把之前的页面移除掉
onTabReselected // 重复选中时调用:通常做已经选中的提示
g. 创建监听器的对象
MyTabListener l = new MyTabListener(f);
MyTabListener ll = new MyTabListener(ff);
h. 给Tab绑定监听器
tab1.setTabListener(l);
tab2.setTabListener(ll);
i. 把Tab添加ActionBar对象
ac.addTab(tab1);
ac.addTab(tab2);
5. 通过ActionBar来展示列表
主要流程:
a. 准备数据,比如配置一个数组
b. 准备适配器对象
c. 设置ActionBar的模式:ac.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
d. 设置列表选项的监听器ac.setListNavigationCallbacks(SpinnerAdapter adapter,OnNavigationListener l);
OnNavigationListener监听器的回调方法中
onNavigationItemSelected方法中实现点击后要执行的操作
6. ActionBar中的ShareActionProvider组件的使用
主要使用流程:
a. 配置ShareActionProvider组件Item,设置属性android:actionProviderClass="android.widget.ShareActionProvider"
b. 覆盖onCreateOptionsMenu(Menu menu);
在方法中通过findItem方法获取Item
MenuItem shareItem = menu.findItem(R.id.action_share);
ShareActionProvider p = shareItem.getActionProvider();
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT,"要分享的内容");
intent.setType("text/plain");
p.setShareIntent(intent);