文档章节

Android新的menu实现——ActionMode

AK_47
 AK_47
发布于 2014/07/09 17:40
字数 348
阅读 15
收藏 0

    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

© 著作权归作者所有

AK_47
粉丝 16
博文 533
码字总数 569998
作品 0
嘉定
程序员
私信 提问
Android新的menu实现——ActionMode

Android的menu有多种实现方式,这里介绍一种新的menu实现方式:ActionMode。ActionMode是Android 3.0以后出现的,我们可以使用AppCompat库使ActionMode兼容至Android 2.1。 Android 3.0以前,...

postdep
2014/06/09
1K
0
Android 用户界面---菜单(Menus 二)

创建上下文菜单 上下文菜单提供了影响指定项目或UI中内容结构的动作。你能够给任何View对象提供一个内容菜单,但是它们最常用于ListView、GridView或集合类型的View对象的项目中,用户能够执...

长平狐
2012/10/16
4.3K
0
用activity实现半透明的、淡入的menu【原创】

用activity实现半透明的、淡入的menu—供初学者研究学习 虽然android带的menu已经很漂亮,但有的时候也需要我们去自定义menu。 开始的时候只是想在android上做一个半透明的menu,但是刚刚接触...

长平狐
2012/08/14
533
0
用activity实现半透明的、淡入的menu【原创】

用activity实现半透明的、淡入的menu—供初学者研究学习 虽然android带的menu已经很漂亮,但有的时候也需要我们去自定义menu。 开始的时候只是想在android上做一个半透明的menu,但是刚刚接触...

长平狐
2012/08/09
2.3K
0
Android Loader 官方教程翻译

Loaders 目录 1. Loader API 简介 2. 在应用中使用Loader 1. 启动一个Loader 2. 重启一个Loader 3. 使用Loader管理器LoaderManager 的回调方法 3. 实例 1. 更多实例 主类 1. LoaderManager 2...

KavenSu
2014/01/17
283
0

没有更多内容

加载失败,请刷新页面

加载更多

DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
今天
3
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
6
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
5
0
Python机器学习之数据探索可视化库yellowbrick

背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维。陆续使用过plotly、seaborn,...

yeayee
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部