android 触摸事件 为什么我点一下的时候依次是onDown-->onShowPress-->onLongpress

问题描述

packagecom.wenxiaolang.p141021_01_fling;importandroid.os.Bundle;importandroid.support.v7.app.ActionBarActivity;importandroid.view.GestureDetector;importandroid.view.GestureDetector.OnGestureListener;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.MotionEvent;importandroid.view.View;importandroid.view.View.OnTouchListener;importandroid.widget.TextView;importandroid.widget.Toast;publicclassMainActivityextendsActionBarActivityimplementsOnTouchListener,OnGestureListener{privateTextViewtv;privateGestureDetectorgestureDetector;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv=(TextView)findViewById(R.id.textView);tv.setOnTouchListener(this);gestureDetector=newGestureDetector(this,this);}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.getMenuInflater().inflate(R.menu.main,menu);returntrue;}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){//Handleactionbaritemclickshere.Theactionbarwill//automaticallyhandleclicksontheHome/Upbutton,solong//asyouspecifyaparentactivityinAndroidManifest.xml.intid=item.getItemId();if(id==R.id.action_settings){returntrue;}returnsuper.onOptionsItemSelected(item);}@OverridepublicbooleanonDown(MotionEvente){Toast.makeText(this,"onDown!",Toast.LENGTH_SHORT).show();returnfalse;}@OverridepublicvoidonShowPress(MotionEvente){Toast.makeText(this,"onShowPress!",Toast.LENGTH_SHORT).show();}@OverridepublicbooleanonSingleTapUp(MotionEvente){Toast.makeText(this,"onSingleTapUp!",Toast.LENGTH_SHORT).show();returnfalse;}@OverridepublicbooleanonScroll(MotionEvente1,MotionEvente2,floatdistanceX,floatdistanceY){Toast.makeText(this,"onScroll!",Toast.LENGTH_SHORT).show();returnfalse;}@OverridepublicvoidonLongPress(MotionEvente){Toast.makeText(this,"onLongPress!",Toast.LENGTH_SHORT).show();}@OverridepublicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,floatvelocityY){Toast.makeText(this,"onFling!",Toast.LENGTH_SHORT).show();returnfalse;}@OverridepublicbooleanonTouch(Viewv,MotionEventevent){returngestureDetector.onTouchEvent(event);}}xml文件:<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.wenxiaolang.p141021_01_fling.MainActivity"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:textSize="30sp"android:text="@string/hello_world"/></RelativeLayout>为什么我点一下的时候依次是onDown-->onShowPress-->onLongpress

解决方案

时间: 2024-10-03 10:20:21

android 触摸事件 为什么我点一下的时候依次是onDown--&amp;gt;onShowPress--&amp;gt;onLongpress的相关文章

Android触摸事件传递分析与实践

设计UI时,亲爱的交互设计师们总会有一些天马行空的想法,大多数情况下原生的控件已不能支持这些"看似简单"的交互逻辑,需要继承ListView.ViewPager.ScrollView甚至直接继承View来自定义一些特性来支撑.在处理触摸事件时,无可避免的需要重写onInterceptTouchEvent与onTouchEvent这两个方法.本文将从源码的角度,从这两个棘手的函数为切入点,对触摸事件在View中的传递逻辑进行梳理. 1.概述 本文中只简单的考虑单指触摸事件.一次触摸事件通

触屏事件-在android触摸事件的ACTION_POINTER_UP动作中,如何知道是哪根手指抬起的?

问题描述 在android触摸事件的ACTION_POINTER_UP动作中,如何知道是哪根手指抬起的? android API level 7,在触摸事件的ACTION_POINTER_UP动作中,如何知道是哪根手指(只是两点触摸)抬起的?我需要获取留在屏幕上的手指的触摸点坐标.求各位高手解答,谢谢! 解决方案 获取第一个离开屏幕的是哪个手指 可以使用MotionEvent的getActionIndex()

Android触摸事件的应用详解

前言 上一篇讲了Android触摸事件的传递机制,具体可以看这里初识Android触摸事件传递机制.既然知道Android中触摸事件的传递分发,那么它能解决什么样的问题,在我们实际开发中如何应用,这点很重要,知道原理是为了解决问题而准备的.这篇文章的核心讲的如何解决View的滑动冲突,这个问题在日常开发中很常见,比如内部嵌套Fragment视图是左右滑动,外部用一个ScrollView来包含,可以上下滑动,如果不进行滑动冲突处理的话,就会造成外部滑动方向和内部滑动方向不一致. 目录 常见的滑动冲

Android触摸事件传递图解

本博文讲解流程 TouchEvent相关事件简介 流程图分解讲解 总结与归纳 一.TouchEvent相关事件简介 android TouchEvent相关事件有  1 dispatchTouchEvent 这个方法用来分发TouchEvent  2 onInterceptTouchEvent 这个方法用来拦截TouchEvent  3 onTouchEvent 方法用来处理TouchEvent 比较特殊一点的是onInterceptTouchEvent 事件,在activity中和view中是

Android 触摸事件监听(Activity层,ViewGroup层,View层)详细介绍

Android不同层次的触摸事件监听 APP开发中,经常会遇到有关手势处理的操作,比如向右滑动返回上一个页面.关于触摸事件的处理,我们可以大概处理在不同的层次上. Activity层:可以看做触摸事件获取的最顶层 ViewGroup层:ViewGroup层可以自主控制是否让子View获取触摸事件 View层:可以决定自己是否真正的消费触摸事件,如果不消费抛给上层ViewGroup Activity级别的手势监听:(右滑动返回上层界面) Activity层手势监听的使用场景:一般用于当前页面中没有

Android触摸事件传递机制初识

前言 今天总结的一个知识点是Andorid中View事件传递机制,也是核心知识点,相信很多开发者在面对这个问题时候会觉得困惑,另外,View的另外一个难题滑动冲突,比如在ScrollView中嵌套ListView,都是上下滑动,这该如何解决呢,它解决的依据就是View事件的传递机制,所以开发者需要对View的事件传递机制有较深入的理解. 目录 Activity.View.ViewGroup三者关系 触摸事件类型 事件传递三个阶段 View事件传递机制 ViewGroup事件传递机制 小结 Act

Android 触摸事件大全

很多时候,利用触摸屏的Fling.Scroll等Gesture(手势)操作来操作会使得应用程序的用户体验大大提升,比如用Scroll手势在浏览器中滚屏,用Fling在阅读器中翻页等.在Android系统中,手势的识别是通过 GestureDetector.OnGestureListener接口来实现的,不过William翻遍了Android的官方文档也没有找到一个相关的例子,API Demo中的TouchPaint也仅仅是提到了onTouch事件的处理,没有涉及到手势.Android Devel

Android触摸事件(笔记篇)

类似标题的文章在网上不要讲的太多,我也曾经以为自己掌握了,直到最近用的时候发现问题,才知道自己之前并非真的理解了,遂写下这篇笔记. 事件分发传递的逻辑取决于ACTION_DOWN 同时要注意的是ACTION_MOVE和ACTION_UP的流程并不完全跟ACTION_DOWN一样 下面这幅图是ACTION_DOWN手势的处理逻辑图 以前我对手势处理的概念也仅仅停留在这里,而且我还错误的把ACTION_MOVE和ACTION_UP的逻辑也理所应当的想成这样(就我身边的情况来看,并不仅仅是我这么认为)

android 如何实现点击事件和触摸事件分开执行

问题描述 android 如何实现点击事件和触摸事件分开执行 我得手机分为两部分:整个屏幕的上部分是SurfaceView视频,下部分为按钮部分.现在需求是这样: 按钮部分屏蔽触摸事件,只能响应电击事件:视频部分不做限制.现在的问题是这样:按钮部分现在也响应触摸事件,怎么屏蔽掉触摸事件呢(我想让下半部分整体屏蔽掉触摸事件). 请教大神怎么做呀? public boolean onTouchEvent(MotionEvent event) { if (mIsLocked) { // locked,