`
kmo
  • 浏览: 17123 次
  • 性别: Icon_minigender_2
  • 来自: 珠海
社区版块
存档分类
最新评论

option menu和onTouchEvent

阅读更多

本人使用魅族MX2 今天下午调了一个下午的bug 由于未知原因option menu 嵌套进Tab layout 无法显示menu键

其实在原生安卓上是正常的

而option menu单独使用 不嵌套进Tab layout也是正常的 

代码延续上一篇的

只是在ImgActivity中override了onTouchEvent,onCreateMenu 和onOptionsItemSelected

 

optionMenu部分

private static final String TAG = "com.example.hw2";
	
	private static final int OPTION1 = 1;
	private static final int OPTION2 = 2;
	private static final int OPTION3 = 3;
	private static final int OPTION4 = 4;
	private static final int OPTION5 = 5;
	private static final int OPTION6 = 6;


/* Creates the menu items */
	public boolean onCreateOptionsMenu(Menu menu) {
		menu.add(Menu.NONE, OPTION1, Menu.NONE, "Bookmark").setIcon(android.R.drawable.ic_menu_agenda);
		menu.add(Menu.NONE, OPTION2, Menu.NONE, "Save").setIcon(android.R.drawable.ic_menu_save);
		menu.add(Menu.NONE, OPTION3, Menu.NONE, "Search").setIcon(android.R.drawable.ic_menu_search);
		menu.add(Menu.NONE, OPTION4, Menu.NONE, "Share").setIcon(android.R.drawable.ic_menu_share);
		menu.add(Menu.NONE, OPTION5, Menu.NONE, "Delete").setIcon(android.R.drawable.ic_menu_delete);
		menu.add(Menu.NONE, OPTION6, Menu.NONE, "Preferences").setIcon(android.R.drawable.ic_menu_preferences);
		
		return true;
	}
	
	/* Handles item selections */
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) 
		{
			case OPTION1:
				Toast.makeText(getApplicationContext(), "Bookmark is selected", Toast.LENGTH_SHORT).show();
				Log.i(TAG, "----------- Option 1 selected");
				return true;
			case OPTION2:
				Toast.makeText(getApplicationContext(), "Save is selected", Toast.LENGTH_SHORT).show();
				Log.i(TAG, "----------- Option 2 selected");
				return true;
			case OPTION3:
				Toast.makeText(getApplicationContext(), "Search is selected", Toast.LENGTH_SHORT).show();
				Log.i(TAG, "----------- Option 3 selected");
				return true;
			case OPTION4:
				Toast.makeText(getApplicationContext(), "Share is selected", Toast.LENGTH_SHORT).show();
				Log.i(TAG, "----------- Option 4 selected");
				return true;
			case OPTION5:
				Toast.makeText(getApplicationContext(), "Delete is selected", Toast.LENGTH_SHORT).show();
				Log.i(TAG, "----------- Option 5 selected");
				return true;
			case OPTION6:
				Toast.makeText(getApplicationContext(), "Preferences is selected", Toast.LENGTH_SHORT).show();
				Log.i(TAG, "----------- Option 6 selected");
				return true;
		}
		return false;
	}

 

OnTouchEvent部分

这部分参照了 http://www.ourunix.org/android/post/82.html 多谢多谢!

@Override
	public boolean onTouchEvent(MotionEvent event) {
		// TODO Auto-generated method stub
		int touchEvent = event.getAction();
		
		switch(touchEvent){
			case MotionEvent.ACTION_DOWN:
				openOptionsDialog()
				Log.i(TAG, "MotionEvent.Action_down!!");
				break;
			default:
				break;
		}
	
		return super.onTouchEvent(event);
	}

	private void openOptionsDialog(){
		new AlertDialog.Builder(ImgActivity.this)
						.setTitle("Save File...")
						.setIcon(android.R.drawable.ic_menu_save)
						.setMessage("Do you want to save this file?").setPositiveButton("YES", new DialogInterface.OnClickListener() {							
							@Override
							public void onClick(DialogInterface dialog, int which) {
								// TODO Auto-generated method stub	
							}
						})
						.setNegativeButton("NO", new DialogInterface.OnClickListener() {
							
							@Override
							public void onClick(DialogInterface dialog, int which) {
								// TODO Auto-generated method stub	
							}
						})
					    .setNeutralButton("CANCEL", new DialogInterface.OnClickListener() {
							
							@Override
							public void onClick(DialogInterface dialog, int which) {
								// TODO Auto-generated method stub
								
							}
						})
						.show();
		
	}

 

之前一直不知道Log和TAG是做什么用的,现在终于知道了:在runtime的时候,在logcat中用的,Log.i可以用来debug

分享到:
评论

相关推荐

    onInterceptTouchEvent和onTouchEvent调用关系详解

    `onInterceptTouchEvent`和`onTouchEvent`是两个关键的方法,它们协同工作以处理触摸屏幕的动作。这篇文章将深入探讨这两个方法的调用关系及其在Android事件分发机制中的作用。 首先,我们要理解Android的事件分发...

    android事件2-onInterceptTouchEvent和onTouchEvent调用时序

    在Android开发中,理解和掌握`onInterceptTouchEvent`与`onTouchEvent`的调用时序至关重要,因为它们是实现触摸事件处理的关键。这两个方法都属于Android的触摸事件处理机制,涉及到了ViewGroup与子View之间的事件...

    onInterceptTouchEvent和onTouchEvent学习

    `onInterceptTouchEvent`和`onTouchEvent`是两个核心的方法,它们共同决定了Android应用如何响应用户的触摸操作。这两个方法主要在ViewGroup(如布局)和View(如按钮、文本框等)中被使用。 首先,我们来理解`...

    onInterceptTouchEvent和onTouchEvent使用demo

    `onInterceptTouchEvent`和`onTouchEvent`是两个至关重要的方法,它们共同构成了Android视图层次结构中的触摸事件分发机制。下面我们将深入探讨这两个方法的用法及其在实际开发中的应用场景。 1. `...

    onTouchEvent 、onInterceptTouchEvent的顺序~

    在Android开发中,触摸事件处理是用户界面交互的关键部分,`onTouchEvent` 和 `onInterceptTouchEvent` 是处理这些事件的两个重要方法。本文将深入探讨这两个方法的使用、顺序以及它们在Android事件分发机制中的角色...

    博客园项目(重写onTouchEvent实现滑屏显示菜单)

    综上所述,这个博客园项目通过重写`onTouchEvent`实现了滑动显示菜单的功能,同时结合了缓存和数据库存储技术,提升了用户体验。项目中还可能涉及到布局管理、手势识别、动画效果等多个Android开发的关键知识点。

    老生常谈onTouch和onTouchEvent(必看篇)

    `onTouch`和`onTouchEvent`是两个与触摸事件紧密相关的函数,它们都在处理用户的触摸输入。本文将深入解析这两个函数的工作原理及其在事件传递链中的角色。 1. **onTouch()**: `onTouch`方法是`View`类的`...

    安卓onTouchEvent上下左右滑动事件

    为了实现上下左右滑动,我们需要在`onTouchEvent`中捕获ACTION_DOWN和ACTION_MOVE事件,并记录初始触点位置和后续移动的位置。以下是关键步骤: 1. **初始化状态**:在ACTION_DOWN事件中,获取当前触摸点的坐标(x1...

    onInterceptTouchEvent与OntouchEvent之间

    `onInterceptTouchEvent`和`onTouchEvent`是两个关键的方法,它们共同构成了Android事件分发机制的核心。 `onInterceptTouchEvent`方法在ViewGroup中定义,它的主要作用是拦截事件流,即决定事件是否由父视图处理,...

    2011.08.30——— android setOnTouchListener onTouchEvent

    这篇博客“2011.08.30——— android setOnTouchListener onTouchEvent”主要探讨了如何在Android应用中处理触摸事件,尤其是通过`setOnTouchListener`和`onTouchEvent`方法。下面将详细解析这两个方法的工作原理...

    Android运用onTouchEvent自定义滑动布局

    我们也许会遇到,自定义控件的触屏事件处理,先来了解一下View类中的,onTouch事件和onTouchEvent事件。 1、boolean onTouch(View v, MotionVent event) 触摸事件发送到视图时调用(v:视图,event:触摸事件) 返回...

    仿ViewPager,事件分发应用

    在描述中提到的博客链接(由于无法直接访问,以下内容基于一般知识推测)很可能详细解释了如何重写`onInterceptTouchEvent`和`onTouchEvent`来实现自定义的事件分发逻辑。这可能包括了如何在仿ViewPager中判断滑动...

    Android事件模型之interceptTouchEvnet ,onTouchEvent关系正解

    本文将深入探讨Android事件模型,特别是`onTouchEvent`和`interceptTouchEvent`的关系,帮助开发者更好地理解这两个方法如何协同工作以实现复杂的触摸事件处理。 首先,Android事件模型基于触摸事件的分发机制,它...

    OnTouchEvent.rar

    `OnTouchEvent`是我们处理触摸事件的主要接口,这个压缩包`OnTouchEvent.rar`很可能包含了演示如何在Android应用中实现事件分发的示例代码和流程图。下面,我们将深入探讨Android事件分发机制以及`OnTouchEvent`方法...

    android view OnTouchEvent 中同时处理 onClick,onLongClick,和左右移动事件

    `OnTouchEvent`是`View`接收触摸输入的主要方法,而`onClick`、`onLongClick`和左右移动事件则是在用户与界面交互时的常见操作。下面将详细介绍如何在`OnTouchEvent`中有效地处理这些事件。 首先,`onClick`事件...

    浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解

    在Android开发中,触摸事件的处理是用户交互的基础,而`onTouchEvent`和`onInterceptTouchEvent`则是处理这些事件的关键方法。这篇文章将深入解析这两个方法的区别和它们在触摸事件处理链中的作用。 首先,`...

    Radial Menu Widget源码

    Radial Menu Widget是一种在Android平台上实现的独特用户界面组件,它以圆形布局展示菜单项,提供了一种富有创意和直观的交互方式。这种设计通常用于工具栏或者设置菜单,因为其节省空间并能吸引用户的注意力。在...

Global site tag (gtag.js) - Google Analytics