首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏米扑专栏

    Android MotionEvent 坐标获取

    Android MotionEvent中getX()与getRawX()都是获取屏幕坐标(横),但二者又有区别 getX()           :   是获取相对当前控件(View)的坐标 findViewById(R.id.btn); btn.setOnTouchListener(this); } @Override public boolean onTouch(View view, MotionEvent event) { int eventaction = event.getAction(); switch (eventaction) { case MotionEvent.ACTION_DOWN : break; case MotionEvent.ACTION_MOVE: x = (int) event.getX(); y = (int) event.getY(); "homer", "x = " + x + "; y = " + y + "; rawX = " + rawX + "; rawY = " + rawY); break; case MotionEvent.ACTION_UP

    2.7K30发布于 2019-02-19
  • 来自专栏everhad

    札记:android手势识别,MotionEvent

    MotionEvent 触摸动作触发的输入事件由MotionEvent表示,它实现了Parcelable接口——IPC需求。 目前的设备几乎都支持多点触摸,每个触摸中的手指被当做一个poiner。 相比上一个MotionEvent数据,当前MotionEvent的所有数据都是最新的。打包的数据根据时间形成数组,而最新的数据被作为current数据。 下面是获得当前MotionEvent中所有事件的各个poiner的坐标的标准形式: void printSamples(MotionEvent ev) { final int historySize : return "Down"; case MotionEvent.ACTION_MOVE: return "Move"; case MotionEvent.ACTION_POINTER_DOWN : return "Pointer Down"; case MotionEvent.ACTION_UP: return "Up"; case MotionEvent.ACTION_POINTER_UP

    6.7K70发布于 2018-01-08
  • 来自专栏深入理解Android

    Android自定义系列——14.MotionEvent

    MotionEvent在android的触摸事件中起到了很重要的作用,本文主要介绍MotionEvent,简要介绍触摸事件,主要包括 单点触控、多点触控、鼠标事件 以及 getAction() 和 getActionMasked Android 将所有的输入事件都放在了 MotionEvent 中: 版本号 更新内容 Android 1.0 (API 1 ) 支持单点触控和轨迹球的事件。 switch (event.getAction()){ case MotionEvent.ACTION_DOWN: // 手指按下 break; case MotionEvent.ACTION_MOVE: // 手指移动 break; case MotionEvent.ACTION_UP 3、这些事件不会传递到 onTouchEvent(MotionEvent) 而是传递到 onGenericMotionEvent(MotionEvent) 。

    3.3K10编辑于 2022-06-22
  • 来自专栏韩曙亮的移动开发专栏

    【Android 事件分发】MotionEvent.ACTION_DOWN 按下事件分发流程( Activity | ViewGroup | View )

    class MainActivity extends AppCompatActivity { @Override public boolean dispatchTouchEvent(MotionEvent { return super.dispatchTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent return super.onInterceptTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent return super.dispatchTouchEvent(event); } @Override public boolean onTouchEvent(MotionEvent * * @param ev * @return */ @Override public boolean dispatchTouchEvent(MotionEvent

    2.1K20编辑于 2023-03-29
  • 来自专栏Android知识分享

    Carson带你学Android:手把手教你学会手势识别应用 GestureDetector

    用户按下触摸屏 & 拖动 public boolean onScroll(MotionEvent e1, MotionEvent e2, onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY 用户按下触摸屏 & 拖动 public boolean onScroll(MotionEvent e1, MotionEvent e2, 用户按下触摸屏 & 拖动 public boolean onScroll(MotionEvent e1, MotionEvent e2, onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY

    2.1K11编辑于 2022-03-24
  • 来自专栏Android-Xj

    Android事件分发 分析

    事件分发的对象是谁 系统把事件封装为MotionEvent对象,事件分发的过程就是MotionEvent分发的过程。 >DecorView -> ViewGroup ->View 主要传递对象及顺序 Activity 、 ViewGroup、 View Activity中 dispatchTouchEvent(MotionEvent ev) onTouchEvent(MotionEvent event) ViewGroup中 dispatchTouchEvent(MotionEvent ev) onInterceptTouchEvent (MotionEvent ev) onTouchEvent(MotionEvent event) View中 dispatchTouchEvent(MotionEvent ev) onTouchEvent (MotionEvent event) 验证 (事件传递流程) 代码测试 MainActivity public class MainActivity extends AppCompatActivity

    66230编辑于 2022-02-22
  • 来自专栏向全栈出发

    android View事件分发实测

    import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent ; public class Util { public static String getActionString(MotionEvent ev){ String action = ""; switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: action = "ACTION_DOWN"; break; case MotionEvent.ACTION_MOVE: action = "ACTION_MOVE "; break; case MotionEvent.ACTION_UP: action = "ACTION_UP";

    51610发布于 2020-09-10
  • 来自专栏Android知识分享

    Android 手势识别应用:手把手教你学会 GestureDetector(含实例讲解)

    用户按下触摸屏 & 拖动 public boolean onScroll(MotionEvent e1, MotionEvent e2, onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY 用户按下触摸屏 & 拖动 public boolean onScroll(MotionEvent e1, MotionEvent e2, 用户按下触摸屏 & 拖动 public boolean onScroll(MotionEvent e1, MotionEvent e2, onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY

    12.6K41发布于 2020-06-10
  • 来自专栏米扑专栏

    Android 滑动效果入门篇(一)—— ViewFlipper

    boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; (MotionEvent e) { return false; } } main.xml <? e):down事件,表示按下事件 2、onSingleTapUp(MotionEvent e):一次点击up事件,表示按下后的抬起事件 3、onShowPress(MotionEvent e):down (由系统分配,也可自定义),如果仍然按住屏幕则视为长按事件 5、onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY ):滑动手势事件,例如scroll事件后突然up,fling的速度大小由e每秒x和y改变大小决定 6、onScroll(MotionEvent e1, MotionEvent e2, float distanceX

    2.9K10发布于 2019-02-19
  • 来自专栏全栈程序员必看

    Android触摸事件_简述兴奋在突触的传递过程

    (MotionEvent event) 3、 public boolean onInterceptTouchEvent(MotionEvent event) 在View和ViewGroup 接下来就是这些方法的参数,都接受了一个MotionEvent类型的参数,MotionEvent继承于InputEvent,用于标记各种动作事件。 1、无子控件情况 新建一个工程,在MainActivity里面重写dispatchTouchEvent(MotionEvent ev)以及onTouchEvent(MotionEvent event : Log. i("MainActivity--onTouchEvent", "MotionEvent.ACTION_MOVE" ); break; case MotionEvent.ACTION_UP ", "MotionEvent.ACTION_MOVE" ); break; case MotionEvent.ACTION_UP: Log. i("MainActivity--onTouch", "MotionEvent.ACTION_UP

    1.3K20编辑于 2022-11-04
  • 来自专栏胡飞洋的Android进阶

    View的滑动方式 详细介绍

    上图圆点是手指触摸点,蓝色的是MotionEvent的方法,点击事件走到onTouchEvent,获得点击事件的各种坐标:getX、getY是相对view;getRawX、getRawY是相对屏幕。 e1, MotionEvent e2, float distanceX, float distanceY) { //滚动,1个DOWN,多个MOVE触发 Log.i(TAG , "onScroll: "); return false; } @Override public void onLongPress(MotionEvent e : "); return false; } @Override public boolean onSingleTapConfirmed(MotionEvent mLastX = x; mLastY = y; break; case MotionEvent.ACTION_MOVE

    1.5K00发布于 2020-07-23
  • 来自专栏算法微时光

    Android之GestureDetector使用

    GestureDetector.OnGestureListener 监听类中有六个函数要重写: OnDown(MotionEvent e) 用户按下屏幕就会触发; onShowPress(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) 滑屏,用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发 参数解释: e1:第1个ACTION_DOWN MotionEvent e2:最后一个ACTION_MOVE MotionEvent velocityX:X轴上的移动速度,像素/秒 velocityY:Y轴上的移动速度,像素/秒 onScroll(MotionEvent e1, MotionEvent e2,float distanceX 触发顺序是:OnDown->OnsingleTapUp->OnsingleTapConfirmed onDoubleTap(MotionEvent e) 双击事件 onDoubleTapEvent(MotionEvent

    1.2K10编辑于 2021-12-06
  • 来自专栏用户9239674的专栏

    Android事件分发机制

    见下面一段伪代码: public void handleTouchEvent(MotionEvent event) { if (! 那就再来一段伪代码: public void consumeEvent(MotionEvent event) { if (setOnTouchListener) { onTouch ViewGroup(dispatchTouchEvent) @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (actionMasked == MotionEvent.ACTION_UP || actionMasked == MotionEvent.ACTION_CANCEL || (actionMasked == MotionEvent.ACTION_DOWN && !

    1.1K20编辑于 2021-12-07
  • 来自专栏懒人开发

    dispatchTouchEvent事件分发浅析(一)大体代码

    ; return super.onTouchEvent(ev); } @Override public boolean dispatchTouchEvent(MotionEvent { super(context, attrs, defStyleAttr); } @Override public boolean onTouchEvent(MotionEvent ; return super.onTouchEvent(ev); } @Override public boolean dispatchTouchEvent(MotionEvent 的种类) package com.aohuan.test.dodoevent.tools; import android.util.Log; import android.view.MotionEvent : actionName = "ACTION_MOVE"; break; case MotionEvent.ACTION_UP

    76830发布于 2018-09-12
  • 来自专栏今天学习了吗

    GestureDetector源码解析

    (MotionEvent e);     boolean onSingleTapUp(MotionEvent e);     boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY);     void onLongPress(MotionEvent e);     boolean onFling(MotionEvent (MotionEvent e); } public interface OnContextClickListener {     boolean onContextClick(MotionEvent 注意:onDoubleTap传入的参数MotionEvent是第一次点击时的DOWN事件,且onDoubleTap只会在此处被调用一次;onDoubleTapEvent()传入的参数MotionEvent e1, MotionEvent e2, float distanceX, float distanceY),其中e1是DOWN事件的Motionevent ,e2是MOVE事件的MotionEvent

    76200发布于 2021-10-16
  • 来自专栏陶士涵的菜地

    [android] 图片画画板

    setOnTouchListener()方法,参数:OnTouchListener对象,这个类是一个接口类型,因此直接new它创建匿名内部类实现方法onTouch() 在onTouch(View v,MotionEvent event)方法里面 参数:View对象是被触摸的对象,MotionEvent对象是触摸事件对象 调用MotionEvent对象的getAction()方法,获取触摸事件 switch判断这个事件 事件为 MotionEvent.ACTION_DOWN是手指第一次触摸屏幕 事件为MotionEvent.ACTION_MOVE是手指在屏幕上移动 事件为MotionEvent.ACTION_UP是手指离开屏幕 当手指触摸屏幕时 定义手指开始位置的坐标startX startY 调用MotionEvent对象的getX() 和 getY()方法,可以得到坐标 当手指移动的时候,我们要获取新的坐标newX和newY int startX; int startY; @Override public boolean onTouch(View v, MotionEvent

    1.3K70发布于 2019-09-10
  • 来自专栏风吹杨柳

    2014-11-8Android学习------手势识别事件的处理GestureDetector--------动画Animation学习篇

    ACTION_DOWN触发 public boolean onDown(MotionEvent arg0) { Log.i("MyGesture", "onDown ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发 public boolean onFling(MotionEvent e1, MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // 参数解释: // e1:第1个ACTION_DOWN MotionEvent // e2:最后一个ACTION_MOVE MotionEvent // velocityX

    1.2K40编辑于 2022-03-07
  • 来自专栏程序员修炼之路

    聊聊Android中的手势处理GestureDetector

    2、 MotionEvent: MotionEvent对象包含手势的详细信息,例如触摸的坐标、按下的时间、移动的距离等。 onShowPress(MotionEvent e): 手指按下的时间较长,时间未到触发长按。 onSingleTapUp(MotionEvent e): 单击手势。 onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY): 滑动手势。 onLongPress(MotionEvent e): 长按手势。 onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY): 快速滑动。

    1.6K10编辑于 2024-11-18
  • 来自专栏大话swift

    Android事件分发简单梳理

    在说事件分发机制之前我们先来看看都有哪些基本的事件 事件 触发场景 单词事件流中触发的次数 MotionEvent.ACTION_DOWN 在屏幕上按下 1次 MotionEvent.ACTION_UP 在屏幕上抬起 0或1次 MotionEvent.ACTION_MOVE 在屏幕上移动 0或N次 MotionEvent.ACTION_CANCEL 滑动超出空间边界时 0或1次 当我们的手指在android ev) public boolean onTouchEvent(MotionEvent event) public boolean onInterceptTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { onUserInteraction(); * The default implementation always returns false. */ public boolean onTouchEvent(MotionEvent

    69210发布于 2020-03-31
  • 来自专栏全栈程序员必看

    Android触屏事件流[通俗易懂]

    1 ViewGroup(比如LinearLayout) 2 boolean dispatchTouchEvent(MotionEvent event) 3 boolean onInterceptTouchEvent (MotionEvent event) 4 boolean onTouchEvent(MotionEvent event) 5 6 View(比如Button) 7 boolean dispatchTouchEvent (MotionEvent event) 8 boolean onTouchEvent(MotionEvent event) 总的来说,dispatchTouchEvent决定处理什么,onInterceptTouchEvent event){ 15 if(MotionEvent.ACTION_DOWN == event.getAction()){ 16 Log.v(TAG + "dispatchTouchEvent:", @Override 02 public boolean dispatchTouchEvent(MotionEvent event){ 03 if(MotionEvent.ACTION_DOWN =

    1.8K10编辑于 2022-09-30
领券