Android的menu有多种实现方式,以前写过一篇Android中五种常用的menu(菜单),这里介绍一种新的menu实现方式:ActionMode。ActionMode是Android 3.0以后出现的,我们可以使用AppCompat库使ActionMode兼容至Android 2.1。

   Android 3.0以前,我们处理列表的长按事件经常使用Context Menu,Android3.0以后,我们有了新的选择:ActionMode。下图左边效果为Context Menu右边效果为ActionMode。




   Android开发者应该都熟悉Context Menu了,Context Menu是悬浮在操作项之上的视图。ActionMode是临时占据了ActionBar的位置。下面给出ActionMode的实现方法。

   使用ActionMode需要两步骤:

   1、实现ActionMode.Callback接口,并处理ActionMode的生命周期,ActionMode的生命周期如下图:


[java] view plain copy print ?
  1. private ActionMode.Callback mCallback = new ActionMode.Callback() {  

  2. @Override

  3. publicboolean onPrepareActionMode(ActionMode mode, Menu menu) {  

  4. returnfalse;  

  5.        }  

  6. @Override

  7. publicvoid onDestroyActionMode(ActionMode mode) {  

  8. // TODO Auto-generated method stub

  9.        }  

  10. @Override

  11. publicboolean onCreateActionMode(ActionMode mode, Menu menu) {  

  12.            MenuInflater inflater = mode.getMenuInflater();  

  13.            inflater.inflate(R.menu.actionmode, menu);  

  14. returntrue;  

  15.        }  

  16. @Override

  17. publicboolean onActionItemClicked(ActionMode mode, MenuItem item) {  

  18. boolean ret = false;  

  19. if (item.getItemId() == R.id.actionmode_cancel) {  

  20.                mode.finish();  

  21.                ret = true;  

  22.            }  

  23. return ret;  

  24.        }  

  25.    };  




      2、事件触发时,调用startActionMode()方法。


[java] view plain copy print ?
  1. someView.setOnLongClickListener(new View.OnLongClickListener() {  

  2. // Called when the user long-clicks on someView

  3. publicboolean onLongClick(View view) {  

  4. if (mActionMode != null) {  

  5. returnfalse;  

  6.        }  

  7. // Start the CAB using the ActionMode.Callback defined above

  8.        mActionMode = getActivity().startActionMode(mActionModeCallback);  

  9.        view.setSelected(true);  

  10. returntrue;  

  11.    }  

  12. });  







/** * @author 张兴业 *  http://blog.csdn.net/xyz_lmn *  iOS入门群:83702688
*  android开发进阶群:241395671 *  我的新浪微博:@张兴业TBOW */



参考:

http://developer.android.com/reference/android/view/ActionMode.Callback.html

http://developer.android.com/guide/topics/ui/menus.html


更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. python list.sort()根据多个关键字排序的方法实现
  3. Android——横竖屏切换以及数据保存
  4. android 浮层简单实现、activity设置Theme
  5. activity生命周期及横竖屏切换
  6. android:configChanges属性
  7. Android的MediaPlayer架构介绍
  8. Intent的Action实现应用程序之间的切换
  9. Android下实现一个Activity的全屏显示

随机推荐

  1. java版android Handler机制模型
  2. 隐藏android WebView 高亮选择框
  3. aapt: Android Asset Packaging Tool
  4. Android 中 RecyclerView 的基本使用
  5. Android动态添加布局
  6. Android 获取屏幕的分辨率
  7. 监听Android键盘上的按钮
  8. Android之应用首次使用的欢迎界面实例
  9. Android 技巧 - notification center 发
  10. Android中CheckBox复选框操作