Android4.0 -- UI控件之 Menu 菜单的的使用(三)
1. contextual action mode
1) contextual action mode 介绍
contextual action mode 是系统继承ActionMode所得,主要是获取用户的焦点来交互相关的动作。当用户选择一个选项就会启动这种模式,一个上下文的 ActionBar 就会出现在屏幕的上方来显示用户执行当前选项所获得上下文菜单。当这个模式启动的时候,用户可以选择多个选项(如果你需要的话),或者反选选项,还可以对齐进行导航(比如条状到其他的Activity),用户可以选择 Back 按钮来取消相关的操作,或者在这个bar栏的左端选择 Done 按钮。
1). 用户在这个控件中执行长按事件2). 用户在这个视图中选择了 checkbox 或者类似UI的组件
1). 在独立,专门的控件上使用 contextual action mode。2). 在ListView 或者 GridView 上使用contextual action mode (用户可以选择多个选项)
如果想要调用 contextual action mode 当你选择了指定的控件之后,你应该:1). 实现 ActionMode.Callback 接口,在它的回调接口中,你可以指定 这个上下文栏的动作,触发选项事件的反应,或者处理其他事件周期.2). 调用 startActionMode() 当你想要显示这个条栏的话(相当于当用户长按这个视图)2) 代码实现
1) 布局文件 activity_main.xml 只是定义一个按钮,这里就不再粘贴了。
2) 菜单定义文件 目录:res/menu 下 main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item
android:id="@+id/share"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Share"/>
<item
android:id="@+id/edit"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Edit"/>
<item
android:id="@+id/delete"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Delete"/> </menu>3). 程序主要代码
public class MainActivity extends Activity { private Button button1;
private ActionMode actionMode; //使用 ActionMode 完成菜单操作
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initComponent(); //绑定用户的动作,注意这个事件必须是一个长按事件
button1.setOnLongClickListener(new OnLongClickListener() { /*
* 当你调用startActionMode()方法的时候,系统就会返回一个ActionMode的实例,保存在成员变量中,就可以通过改变上下文条栏来触发对应的事件
* 在下面的的例子中,ActionMode的判断是为了确保在它活动期间不会被重复的再创建,通过在创建实例的时候判断其是否为空。
* @see android.view.View.OnLongClickListener#onLongClick(android.view.View)
*/
@Override
public boolean onLongClick(View v) {
if(actionMode != null) {
return false;
}
actionMode = startActionMode(mActionModeCallBack);
v.setSelected(true);
return true;
}
});
}
//这里面是一个匿名内部类
private ActionMode.Callback mActionModeCallBack = new ActionMode.Callback() { @Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
} @Override
public void onDestroyActionMode(ActionMode mode) {
// TODO Auto-generated method stub
//当我们不在使用菜单的时候, actionMode = null 在菜单销毁的时候置空
actionMode = null;
} //表示我们要加载菜单,从XML中加载菜单
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
MenuInflater inflate = getMenuInflater();
inflate.inflate(R.menu.main, menu);
return true; //返回true 表示加载成功。
} //处理用户的相应动作
//表示从点击菜单选项中捕获用户的操作
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.edit:
Toast.makeText(MainActivity.this, "Edit", 3).show();
break;
case R.id.share:
Toast.makeText(MainActivity.this, "share", 3).show();
break;
case R.id.delete:
Toast.makeText(MainActivity.this, "delete", 3).show();
break;
}
return false;
}
}; @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} private void initComponent(){
button1 = (Button)findViewById(R.id.button1);
} }3) 程序执行结果
Android4.0 -- UI控件之 Menu 菜单的的使用(三)的更多相关文章
- Android4.0 -- UI控件之 Menu 菜单的的使用(二)
上一讲我们讲解了android中在代码或者xml文件中定义菜单,这一讲我们继续来讲解一下定义菜单的其他方式:创建上下文的菜单.查看API文档 Menus :Creating Contextual Me ...
- Android4.0 -- UI控件之 Menu 菜单的的使用(四)
2. PopupMenu 菜单的使用 1) PopupMenu 介绍 创建弹出菜单,它一般会在view的上边或者下边弹出菜单[具体看是否有空间],注意弹出菜单是api在11或者更高版本中使用 ...
- Android4.0 -- UI控件之 Menu 菜单的的使用(一)
这一讲开始我们来讲一下Android中菜单的使用方法,菜单是应用中的普通的组件,主要是提供友好和专注的用户体验,你可以在你的Activity中使用 Menu APIs 来提供用户动作和其他选项的操 ...
- 一个Activity掌握Android4.0新控件 (转)
原文地址:http://blog.csdn.net/lavor_zl/article/details/51261380 谷歌在推出Android4.0的同时推出了一些新控件,Android4.0中最常 ...
- Atitit.ui控件---下拉菜单选择控件的实现select html
Atitit.ui控件---下拉菜单选择控件的实现select html 1. 调用& model的实现 1 2. -----select.jsp------ 1 1. 调用& m ...
- Android4.0新控件
谷歌在推出Android4.0的同时推出了一些新控件,Android4.0中最常用的新控件有下面5种. 1. Switch的使用 Switch顾名思义,就是开关的意思,有开和关两种状态. 当Swit ...
- Android 控件 之 Menu 菜单
http://www.cnblogs.com/Mrs-cc/archive/2012/07/21/2603042.html 1.OptionsMenu (选项菜单)用法总结 使用方法: 方法一:添 ...
- Cocos2d-x3.0游戏实例之《别救我》第六篇——从代码中获取UI控件
这篇的内容非常easy,获取UI控件,然后使用它. 还记得我们在UI编辑器中给三个button分别命名了吧? 如今要用上了. 笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原文地址: http ...
- Cocos2d-x3.0 从代码中获取cocostudio编辑的UI控件
依据名字查找控件 须要包括的头文件及名字空间: #include "cocostudio/CocoStudio.h" #include "ui/CocosGUI.h&qu ...
随机推荐
- 10_Mybatis开发Dao方法——mapper代理实现
[工程截图(几个关键的标红框)] [UserMapper.xml] <?xml version="1.0" encoding="UTF-8"?> & ...
- Codevs 1689 建造高塔
1689 建造高塔 时间限制: 1 s 空间限制: 128000 KB 题目等级 : **钻石 Diamond** 题目描述 Description n有n种石块,石块能无限供应.每种石块都是长方体, ...
- Codevs 3233 古道
3233 古道 时间限制: 1 s 空间限制: 8000 KB 题目等级:**白银 Silver** [传送门](http://codevs.cn/problem/3233/) 题目描述 Descri ...
- OpenCV(4)-图像掩码操作(卷积)--平滑处理
卷积定义 矩阵的掩码操作即对图像进行卷积.对图像卷积操作的意义为:邻近像素对(包括该像素自身)对新像素的影响:影响大小取决于卷积核对应位置值得大小. 例如:图像增强可以使用 \[ I(i,j)=5*I ...
- ZEngine游戏框架需求稿
早在2013就开始接触cocos2dx游戏框架,觉得的使用框架对于游戏开发者来说有些不方便.我便想在cocos2dx的框架基础之上实现ZEngine库,方便开发者编辑动画,以及着重于对游戏逻辑的处理. ...
- 使用CPA4破解经典密码算法
下面是一段经过经典密码算法加密的密文(加密算法未知): yvvnerujjvnywhbdvkpchfgvjtzwqsuporqfzpoekkjgziicdwwkeejdsruef whwseyej ...
- layerX && layerY
转载:https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/layerX UIEvent.layerX 非标准 这个属性是非标准的属性,并且 ...
- 微软AJAX解决方案
-------- 微软AJAX解决方案 (*) --------ASP.Net中内置的简化AJAX开发的控件UpdatePanel 放入ScriptManager,将要实现AJAX效果的控件放到Upd ...
- Oracle的硬解析和软解析
提到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程.当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进 ...
- leetcode problem (2-4)
Problem 2 --- Add Two Numbers 简单的模拟题. Problem 3 --- Longest Substring Without Repeating Characters 题 ...
