• Android新的menu实现——ActionMode


        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的生命周期如下图:

     

    private ActionMode.Callback mCallback = new ActionMode.Callback() {
    
    		@Override
    		public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
    			return false;
    		}
    
    		@Override
    		public void onDestroyActionMode(ActionMode mode) {
    			// TODO Auto-generated method stub
    		}
    
    		@Override
    		public boolean onCreateActionMode(ActionMode mode, Menu menu) {
    			MenuInflater inflater = mode.getMenuInflater();
    			inflater.inflate(R.menu.actionmode, menu);
    			
    			return true;
    		}
    
    		@Override
    		public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
    			boolean ret = false;
    			if (item.getItemId() == R.id.actionmode_cancel) {
    				mode.finish();
    				ret = true;
    			}
    			return ret;
    		}
    	};



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

     

    someView.setOnLongClickListener(new View.OnLongClickListener() {
        // Called when the user long-clicks on someView
        public boolean onLongClick(View view) {
            if (mActionMode != null) {
                return false;
            }
       
            // Start the CAB using the ActionMode.Callback defined above
            mActionMode = getActivity().startActionMode(mActionModeCallback);
            view.setSelected(true);
            return true;
        }
    });



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

    参考:

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

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

  • 相关阅读:
    Lifegame第一阶段任务
    软件工程 第一次实验 Git代码版本管理
    个人作业——软件工程实践总结&个人技术博客
    个人技术总结-Android hellocharts折线图
    结对第二次作业——某次疫情统计可视化的实现
    软工实践寒假作业(2/2)
    软工实践寒假作业(1/2)
    第六次作业
    第五次作业
    第四次作业
  • 原文地址:https://www.cnblogs.com/xyzlmn/p/3384760.html
Copyright © 2020-2023  润新知