`
1140566087
  • 浏览: 559160 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
博客专栏
2c4ae07c-10c2-3bb0-a106-d91fe0a10f37
c/c++ 入门笔记
浏览量:18530
3161ba8d-c410-3ef9-871c-3e48524c5263
Android 学习笔记
浏览量:314117
Group-logo
J2ME 基础学习课程集
浏览量:18737
A98a97d4-eb03-3faf-af96-c7c28f709feb
Spring 学习过程记录...
浏览量:17581
社区版块
存档分类
最新评论

Android 之 Context Menu 上下文菜单

阅读更多
/*  上下文菜单测试

概念介绍:
Android中的上下文菜单就是Context Menu ,效果就向PC机上鼠标右键,当为一个
视图注册了上下文菜单之后,长按这个视图对象就会弹出一个浮动菜单,就是上下文
菜单,任何视图都可以注册上下文菜单,可以最常见的还是用于列表ListView 的item项


实现过程:
* 知识点:创建上下文菜单(Context Menu) 需要实现两个方法:
*  1、覆写Activity的onContextItemSelected(MenuItem item),调用Menu的add方法添加菜单项;

* 2、覆写Activity的onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuinfo);
    相应上下文菜单的单击事件;
    3、调用registerForContextMenu()方法,为视图注册上下文菜单;
   




java实现代码:
package com.example.context_menu;

import java.util.ArrayList;

import android.app.Activity;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

/*	盲点:@符号引用的是什么???
 * 
 */
public class MainActivity extends Activity {


	/* 变量保存上下文菜单项中的ID号 */
	private final int item = Menu.FIRST;
	private final int item1 = item;
	private final int item2 = item+1;
	private final int item3 = item2+1;
	private final int item4 = item3+1;
	private int tempID = 0;	//用于保存用户选择的人物ID号;
	
	private ListView listview ;
	
	/* ListView 里面的数据对象 */
	private ArrayList<String> list = new ArrayList<String>();
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		/* 获取ListView 的对象 */
		listview = (ListView) findViewById(R.id.listview);
		
		/* M  获取数据  */
		list.add("Monkey.D.Lully");
		list.add("Roronoa Zoro");
		list.add("Nami");
		list.add("Usopp");
		list.add("Sanji");
		list.add("Tony Tony Chopper");
		list.add("Nico Robin");
	
		/* C 实现M与C 的关系 , 进行数据绑定 */
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
		
		/* V 实现C与V 的纽带关系,进行数据显示  */
		listview.setAdapter(adapter);
	
		/* 设置长按监听事件 */
		listview.setOnItemLongClickListener(long_listener);
			
	}

	/* 编写:列表ListView的长按事件 */
	OnItemLongClickListener long_listener = new OnItemLongClickListener() {

		public boolean onItemLongClick(AdapterView<?> arg0, View arg1,	int id, long positive) {
			
			/* 注册上下文菜单 *//* 为了保证长按事件和上下文菜单同时的实现,需将上下文注册写在长按事件中 */
			registerForContextMenu(listview);
			tempID = id;
//			Toast.makeText(MainActivity.this, "当前选择的人物为:"+list.get(id), 3000).show();
			return false;
		}
	
	};
	
	
	/* 重写onCreateContextMenu方法 , 用于创建上下文菜单 */
	public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
		// TODO Auto-generated method stub
		
		/* 设置上下文菜单的标头 */
		menu.setHeaderTitle(getResources().getString(R.string.context_menu_title));
		menu.setHeaderIcon(R.drawable.ic_launcher);
		
		/* 添加上下文菜单项 */
		menu.add(Menu.NONE, item1,0, getResources().getString(R.string.contenxt_menu_1));
		menu.add(Menu.NONE, item2,0, getResources().getString(R.string.contenxt_menu_2));
		menu.add(Menu.NONE, item3,0, getResources().getString(R.string.contenxt_menu_3));
		menu.add(Menu.NONE, item4,0, getResources().getString(R.string.contenxt_menu_4));
		
		super.onCreateContextMenu(menu, v, menuInfo);
	}

	/* 相应上下文菜单的点击事件  *//* 通过提示对话框来显示人物的相关信息 */
	public boolean onContextItemSelected(MenuItem item) {
		/* 获取选项菜单总的数据信息 */
		System.out.println("测试item的值:"+item);
		Builder builder = new Builder(this);
		
		String temp = "";
		
		/* 通过不同的选项或得到了不同人物不同属性的值,保存在变量temp中 */
		temp = this.getInfoForPerson(item.getItemId());
		
		/* 创建对话框,用于显示用户得到的数据信息 */
		builder.setTitle("人物:"+list.get(tempID));
		builder.setMessage(item+"为:"+temp);
		
		/* 设置一个按钮  */
		builder.setPositiveButton("Close", new DialogInterface.OnClickListener() {
			
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "欢迎下次再次查看", 1000).show();
			}
		});
		builder.create().show();
			
		return super.onContextItemSelected(item);
	}

	/* 方法:获取当前选择的人物,并根据菜单选项的不同返回对应的信息; *//* 接收不同ID,返回不同人物的不同的属性  */
	public String getInfoForPerson(int context_id){
		String temp  = "";
		switch(tempID){
		case 0:	//Monkey.D.Lully
			temp = this.getAttributeFor0(context_id);
			break;
		case 1:	//Roronoa Zoro
			temp =this.getAttributeFor1(context_id);
			break;
		case 2:	//Nami
			temp =this.getAttributeFor2(context_id);
			break;
		case 3:	//Usopp
			temp =this.getAttributeFor3(context_id);
			break;
		case 4:	//Sanji
			temp =this.getAttributeFor4(context_id);
			break;
		case 5:	//Tony Tony Chopper
			temp =this.getAttributeFor5(context_id);
			break;
		case 6:	//Nico Robin
			temp =this.getAttributeFor6(context_id);
			break;
		}

		return temp;
	}
	
	/* 获取每个人物的属性,通过选项ID ,来判断用户需要获得哪种属性  */
	//Monkey.D.Lully
	public String getAttributeFor0(int context_id){
		String temp = "";
		switch(context_id){
		case item1:	//技能
			temp = "橡胶攻击绝杀";
			break;
		case item2:	//战斗力
			temp = "无限";
			break;
		case item3:	//语录
			temp = "海贼王我当定了";
			break;
		case item4:	//职位
			temp = "草帽海贼团船长";
			break;
		}
		return temp;
	}
	
	//Roronoa Zoro
	public String getAttributeFor1(int context_id){
		String temp = "";
		switch(context_id){
		case item1:	//技能
			temp = "三刀流";
			break;
		case item2:	//战斗力
			temp = "无限";
			break;
		case item3:	//语录
			temp = "切,鬼斩";
			break;
		case item4:	//职位
			temp = "剑士";
			break;
		}
		return temp;
	}
	//Nami
	public String getAttributeFor2(int context_id){
		String temp = "";
		switch(context_id){
		case item1:	//技能
			temp = "镭射枪";
			break;
		case item2:	//战斗力
			temp = "有限";
			break;
		case item3:	//语录
			temp = "冰果";
			break;
		case item4:	//职位
			temp = "航海士";
			break;
		}
		return temp;
	}
	//Usopp
	public String getAttributeFor3(int context_id){
		String temp = "";
		switch(context_id){
		case item1:	//技能
			temp = "草之心";
			break;
		case item2:	//战斗力
			temp = "遇强则强";
			break;
		case item3:	//语录
			temp = "必杀";
			break;
		case item4:	//职位
			temp = "炮手";
			break;
		}
		return temp;
	}
	//Sanji
	public String getAttributeFor4(int context_id){
		String temp = "";
		switch(context_id){
		case item1:	//技能
			temp = "月步";
			break;
		case item2:	//战斗力
			temp = "牛逼";
			break;
		case item3:	//语录
			temp = "臭剑士";
			break;
		case item4:	//职位
			temp = "厨师";
			break;
		}
		return temp;
	}
	//Tony Tony Chopper
	public String getAttributeFor5(int context_id){
		String temp = "";
		switch(context_id){
		case item1:	//技能
			temp = "激光大炮";
			break;
		case item2:	//战斗力
			temp = "无限";
			break;
		case item3:	//语录
			temp = "super";
			break;
		case item4:	//职位
			temp = "船工";
			break;
		}
		return temp;
	}
	//Nico Robin
	public String getAttributeFor6(int context_id){
		String temp = "";
		switch(context_id){
		case item1:	//技能
			temp = "万花手";
			break;
		case item2:	//战斗力
			temp = "无限";
			break;
		case item3:	//语录
			temp = "呵呵";
			break;
		case item4:	//职位
			temp = "考古学家";
			break;
		}
		return temp;
	}

}

  • 大小: 56.3 KB
  • 大小: 109.4 KB
  • 大小: 111.6 KB
  • 大小: 78.2 KB
0
4
分享到:
评论

相关推荐

    Android 为EditText文本框添加长按显示上下文菜单.rar

    Android ContextMenu实例,为EditText文本框添加上下文菜单,菜单激活并显示的方式是,用户在EditText输入框上面长按2秒,即可弹出上下文菜单,如运行截图所示的效果,为实现此功能,创建了onCreateContextMenu ...

    上下文菜单与上下文操作模式

    在Android应用开发中,上下文菜单(Context Menu)和上下文操作模式(Contextual Action Mode)是两种常见的用户交互设计,它们提供了在特定情境下对数据进行操作的界面。这两种设计模式在处理列表、网格或其他可选元素...

    Android 之 上下文菜单、选项菜单、子菜单

    在Android应用开发中,上下文菜单(Context Menu)、选项菜单(OptionsMenu)和子菜单(Submenu)是三种重要的交互方式,用于提供用户与应用界面的多种操作选项。它们各自有不同的应用场景和设计规范,对于提升用户体验至...

    android 选项菜单和上下文菜单

    在Android应用开发中,选项菜单(OptionsMenu)和上下文菜单(ContextMenu)是两种常见的交互方式,用于提供用户在特定场景下的操作选择。本项目通过Android Studio实现,将这两种菜单集成在一个应用中,使得用户...

    创建上下文菜单

    在Android开发中,上下文菜单(Context Menu)是一种常见的交互元素,它允许用户在长按某个视图或项时出现一个包含相关操作的弹出菜单。上下文菜单通常用于提供与特定视图或数据相关的动作选项,而不是全局的操作。在...

    菜单 选项菜单 子菜单 上下文菜单

    本案例深入探讨了菜单的三种主要类型:普通菜单(Option Menu)、子菜单(Submenu)以及上下文菜单(Context Menu)。下面将详细阐述这三种菜单的使用方法、特点及其实现代码。 1. 普通菜单(Option Menu) 普通菜单通常...

    菜单,包括选项菜单,子菜单,上下文菜单

    接下来是上下文菜单(Context Menu),它是在用户长时间按压某个视图元素时出现的临时菜单,提供了与该特定元素相关的操作。上下文菜单的注册是在Activity的`registerForContextMenu(View view)`方法中完成,而展示...

    Context-Menu.Android源码

    【Context-Menu.Android源码】是一个专门为Android平台设计的开源项目,主要目的是提供一个自定义上下文菜单(Context Menu)的实现。在Android系统中,上下文菜单通常用于响应长按事件,显示与选定项相关的操作选项...

    上下文菜单

    上下文菜单,也被称为右键菜单,是计算机用户界面中的一种常见交互元素,它提供了与当前屏幕内容相关的操作选项。当用户在特定区域(如文件、图标或文本)上单击鼠标右键时,上下文菜单会弹出,显示与该选定对象相关...

    Kotlin上下文菜单_kotlin_

    本教程将深入探讨如何使用Kotlin实现上下文菜单(Context Menu),这对于任何想要提升Android应用交互体验的初学者来说是十分重要的知识点。 首先,我们需要理解上下文菜单的概念。在Android中,上下文菜单(Context ...

    《Menu详解(三):使用上下文菜单》对应源码

    本篇文章将深入解析如何使用上下文菜单(Context Menu),这是Menu的一种特殊形式,通常在长按操作后出现。上下文菜单提供了针对特定视图或数据项的操作,为用户提供了一种直观的方式来执行与当前环境相关的动作。 ...

    如何写上下文菜单

    在Android、iOS、Windows等操作系统以及许多Web应用中,上下文菜单常常扮演着快速访问功能的角色。当用户对特定视图执行长按操作时,上下文菜单会弹出,显示与该视图相关的动作或选项。这种设计极大地提高了用户体验...

    上下文菜单+listview

    在Android开发中,"上下文菜单(Context Menu)"和"ListView"是两个非常重要的组件,尤其在构建用户交互界面时。本文将深入探讨如何在Eclipse环境下利用这两个组件创建一个功能完善的移动应用。 首先,让我们了解**上...

    Android之上下文菜单ContextMenu

    在上面的代码中,`R.menu.context_menu`是指向XML布局文件的引用,该文件定义了上下文菜单的各个条目。 ### 2. 定义菜单资源 在`res/menu`目录下创建一个XML文件,例如`context_menu.xml`,并定义菜单项: ```xml...

    WebView上下文菜单demo

    本示例“WebView上下文菜单demo”专注于实现WebView的上下文菜单(ContextMenu),通过自定义菜单功能,如复制文本等,提升用户在浏览网页时的交互体验。 `ContextMenu`是Android系统提供的一种用户界面元素,当用户...

    ListView:单击和长按弹出上下文菜单(ContextMenu)

    这里的`@menu/context_menu`引用了我们在`res/menu`目录下创建的上下文菜单资源文件。 接下来,我们需要在Activity中重写以下几个方法来处理上下文菜单的相关逻辑: 1. `onCreateContextMenu(ContextMenu menu, ...

    定制编辑框的上下文菜单

    在编程和软件开发中,上下文菜单(Context Menu)是一种常用的人机交互元素,它根据用户的操作环境提供相关的操作选项。在编辑框中,上下文菜单通常包含与文本操作相关的命令,如复制、粘贴、剪切等。本文将深入探讨...

    Yalantis/Context-Menu.Android

    总的来说,`Yalantis/Context-Menu.Android`为Android开发者提供了一个强大且易用的工具,用于创建具有视觉吸引力的上下文菜单。通过利用这个库,你可以提升应用的用户体验,使用户在享受动画效果的同时,更便捷地...

    Android自定义menu的实现

    Android中的Menu主要分为三类:Option Menu(主菜单)、Context Menu(上下文菜单)和PopupMenu(弹出式菜单)。Option Menu通常在ActionBar或Toolbar中显示,而Context Menu则在长按某个视图时出现,PopupMenu可以...

    2011.09.23——— android sample之Notepad(context menu)

    标题中的“2011.09.23——— android sample之Notepad(context menu)”表明这是一个关于Android应用开发的示例项目,具体是针对Notepad应用的上下文菜单(Context Menu)功能的实践。在Android开发中,上下文菜单是...

Global site tag (gtag.js) - Google Analytics