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;
}
});
参考:
http://developer.android.com/reference/android/view/ActionMode.Callback.html
http://developer.android.com/guide/topics/ui/menus.html
Android新的menu实现——ActionMode的更多相关文章
- (转)Android新的menu实现——ActionMode
Android的menu有多种实现方式,以前写过一篇Android中五种常用的menu(菜单),这里介绍一种新的menu实现方式:ActionMode.ActionMode是Android 3.0以后 ...
- 低版本系统兼容的ActionBar(一)设置颜色+添加Menu+添加ActionMode
之前我一直用ActionBarSherlock这个开源项目来做ActionBar,因为它可以让低版本的设备也能用上ActionBar.但是在最新的SDK中Google提供了一个AppCompa ...
- Android进阶之光-第1章-Android新特性-读书笔记
第 1 章 Android 新特性 1.1 Android 5.0 新特性 1.1.1 Android 5.0 主要新特性 1. 全新的 Material Design 新风格 Material De ...
- Android Studio —— 创建Menu菜单项
大多数android程序的右上角都会设置一个菜单按钮比如微信的界面右上角的加号. 这个需要在layout同级目录下新建文件夹命名为menu,再右击新建的menu新建xml文件:
- fir.im Weekly - 从零开始创建 Android 新项目
今年的 Google I/O 大会上,人工智能和虚拟现实的产品发布让我们对未来多了几分惊喜.对于开发者部分,Google 发布了 Android N 系统,感受最深的是全新的 Android Stud ...
- Android新旧版本Notification
Android新旧版本Notification 在notification.setLatestEventInfo() 过时了 以前: NotificationManager mn = (Notific ...
- Android ActionBar以及menu的代码设置样式
menu部分xml代码 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android= ...
- 向Dialog中添加一个新的Menu
1.创建一个新的Menu,在资源管理视图中,右键Menu-->传入Menu 2.设计新Menu,ID为IDR_MENU1 3.在该Dialog的源文件中,找到CTest001Dlg::OnIni ...
- Android菜单详解(一)——理解android中的Menu
前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...
随机推荐
- hibernate 映射实例 学生 课程 成绩
学生和课程是多对多,一个学生的一个课程只能对应一个成绩. 所以学生和课程多对多,其中间表多了一个成绩字段. 可以这样设计: 学生和课程通过中间表--成绩,多对多映射. 手动建中间表语句: cr ...
- JConsole的使用手册 JDK1.5(转)
一篇Sun项目主页上介绍JConsole使用的文章,前段时间性能测试的时候大概翻译了一下以便学习,今天整理一下发上来,有些地方也不知道怎么翻,就保留了原文,可能还好理解点,呵呵,水平有限,翻的不好,大 ...
- 如何监控MYSQL消耗服务器资源
http://258xiaolei-sina-com.iteye.com/blog/764665 启动Mysql时加参数--log-slow-queries来记录执行时间超过long_query_ti ...
- VB.NET与 sql数据库
数据蕴含丰富的信息,数据就是资源. 不同的语言,因为各自的语法特点.对sql数据库的连接操作有些小差别.但有一点,那就是.对sql数据库的操作语句sql语句大体是一样的. 这段时间正进行VB.NET的 ...
- 域对象的引用,ActionContext 和ServletActionContext类的使用
ActionContext 获取 域引用的map ServletActionContext获取具体域对象 //域范围 ActionContext ac = ActionContext.getConte ...
- 2012全球SEO行业调查报告
这份报告是SEOmoz对每两年一度举办的SEO行业调查进行的分析数据,上次调查是在2010年.该调查,主要围绕SEO从业人员的特征.工作内容时间分配比例.SEO相关消费和预算.对未来市场的看法.seo ...
- C#Project不生成.vhost.exe和.pdb文件的方法
编译C#工程时,在C#的Project的属性界面的Build选项卡中当Configuration : Relese 时,依然会生成扩展名为.vhost.exe和.pdb文件. 其中.pdb是debug ...
- Hadoop 集群搭建 mark
Hadoop 集群搭建 原创 2016-09-24 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 目标 在3台服务器上搭建 Hadoop2.7.3 ...
- laravel数据库操作sql语句用Eloquent ORM来构造
现在有查询语句: SELECT users.sNmame, users.iCreateTime, users_ext.iAge, users_ext.sSex FROM users LEFT JOIN ...
- Swift新手教程12-可选链
可选链 原创Blog,转载请注明出处 我的博客地址 http://blog.csdn.net/hello_hwc 可选链提供一个一种可选的方式訪问对象的属性.方法.下标脚本,可选链的返回值一定是可选类 ...