首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android触摸事件传递(上)

前言:智能手机早已成为我们今天身边必不可少的手持设备,iOS和Android也是目前主流的二大移动操作系统,当然也有越来越多的开发者加入到移动开发的工作中来。...我也是一名普通的Android码农,目前也在学习iOS开发中,有一些成长道路上的一些经验和教训,很早就想动手记录下来,再三下决心,终鼓起勇气,敲起键盘,有了下文,初次行文,文笔未免羞涩,大神轻点喷~    ...我们都知道,触摸事件对我们移动App来说至关重要,人机交互从我们手指的各种触摸手势开始,手机屏幕检测到我们的触摸事件,手机操作系统会将这些触摸事件通过回调框架提供的定义好的接口,让我们App可以接收到这些触摸事件...在Android中,系统将触摸事件包装成MotionEvent对象,同时MotionEvent类内部定义了ACTION_DOWN, ACTION_UP, ACTION_MOVE,ACTION_CANCEL...都不会再收到点击的触摸事件了。

1.2K30

触摸Android的心脏跳动

速读仅需 5 分钟 在Android开发中,主线程扮演着至关重要的角色。毫不夸张的说,它就相当于Android的心脏。只要它还在跳动的运行,Android应用就不会终止。...它负责处理UI事件、界面更新、以及与用户交互的各种操作。本文将深入分析Android主线程的原理、独特机制以及应用,为开发者提供全面的了解和掌握主线程的知识。...主线程的原理 Android应用的核心原则之一是单线程模型,也就是说,大多数与用户界面相关的操作都必须在主线程中执行。...这一原则的背后是Android操作系统的设计,主要有以下几个原因: UI一致性:在单线程模型下,UI操作不会被多线程竞争导致的不一致性问题,确保了用户界面的稳定性和一致性。...这是因为 Android 的消息循环是基于事件驱动的,只有当有事件(消息)到达时,才会触发主线程执行相应的处理代码。

22410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SurfaceView简单理解,Android混淆,Android openGl开发详解简单图形的绘制,

    SurfaceView的帧率可以操作60FPS 在要求实时性比较高的游戏开发中,显然,view的ondraw是满足不了你的,这时候只能是用SurfaceView。...分析和优化方法的二进制代码;根据proguard-android-optimize.txt中的描述,优化可能会造成一些潜在风险,不能保证在所有版本的Dalvik上都正常运行。 \3. 混淆。...移动端使用到的基本上都是OpenGl ES,当然Android开发下还专门为OpenGl提供了android.opengl包,并且提供了GlSurfaceView,GLU,GlUtils等工具类。...最后的呈现效果如下图所示: 这里写图片描述 运用投影和相机视图 通常情况下,OpenGl中展示的视图和在Android上显示的图形会有偏差。...借用官方图片: 这里写图片描述 当然我们可以通过矩阵转换来解决这种问题,让OpenGl上的视图在任何android设备上显示的比例都是一样的,这里说下什么是投影和相机视图: 投影的定义 使用OpenGl

    7700

    【Android 应用开发】View 与 SurfaceView 区别

    SurfaceView 在子线程刷新 UI : SurfaceView 中可以创建新的子线程 , 并在该子线程中刷新 UI ; 性能 资源 操作 1...., View 可能出现刷新卡顿的情况 ; ③ 操作简单 : View 符合 Android 组件操作模式 , 是标准的 Android 控件 , 使用和操作比较简单 ; 2....被动更新 ( 低频率 ) : View 中适合使用被动更新 ; 由于其在主线程中 , 由触摸等事件可触发更新操作 , 直接调用 View 的 invalidate 方法 , 即可控住 View 组件更新...View : Android 中的标准组件 , 用于显示视图 , 内部提供 Canvas 画布 , 可以调用 Canvas 绘图函数绘制界面 , 可以设置触摸事件 等 ; View 组件绘图操作必须在主线程中进行...SurfaceView : SurfaceView 是 View 的子类 , 绘图的过程中使用了双缓冲机制 , 绘图效率很高 , 其功能在内部可以创建线程 , 并在线程中以极高的频率 ( 5 ~ 100

    63920

    虚拟现实中的情感和触摸(上)

    首先讲述一下这一切开始的背景故事,我时常与在海外数千英里之外的家人通话,在电话中我一直想要伸手抚摸正在与我交流的女儿,事实上我并不能真正接触她。我和我的教授谈了这件事,为什么我不能实现这一设想呢?...研究领域 相关研究领域 许多研究领域都将从我们的工作中获益,例如关于我们的大脑如何工作、我们如何对触摸的事物进行分类、不同文化过程如何看待触摸(人们在世界不同的地区会对触摸有不同的看法),在艺术和设计接触中也会产生不同...,我们都知道在博物馆里不可以触碰任何东西,而仅仅通过远距离观察一件在底座上的藏品,我们并不能很好的感受到它们的艺术价值。...如果你用手臂去接触其他人的手臂,就可以感受到触摸和被触摸的感受,这些是目前的虚拟现实做不到的。...当我开始有这个想法的时候,我认为智能服饰是很好的选择,它可以折叠成一个小盒子,这是我的一个灵感点,一些足够小的东西放在盒子里把它取下来把它插入你的设备然后你就可以模拟触摸,当然这是空想的结果;事实上我们需要先处理数据

    67410

    使用 PreviewView 来展示相机预览

    还好,Jetpack CameraX 库的 PreviewView 可以帮助您解决这一问题。通过在各种 Android 设备上提供开发者友好、一致且稳定的 API,使得展示相机的预览变得不再困难。...想要在 PreviewView 上实现它,在其之上添加一个触摸监听器,并将其绑定到缩放手势监听器 (scale gesture listener) 上。...cameraControl.setZoomRatio(currentZoomRatio * delta) return true } } // 将 PreviewView 的触摸监听器绑定到缩放手势监听器上...val scaleGestureDetector = ScaleGestureDetector(context, listener) // 将 PreviewView 的触摸事件传递给缩放手势监听器上...Android 设备上提供一致的相机处理行为,这要归功于 CameraX 在自动化测试实验室中对 PreviewView 及其其他 API 上进行的投资。

    2.8K20

    自定义View从入门到上天

    SurfaceView的使用和普通的View不一样,需要结合SurfaceHodler一起使用。...,双缓冲就是用空间换时间的典型例子,同一个View在内存中创建了两份同样大小的内存,一份用于绘制,一份用于显示,绘制是绘制在Bitmap上,显示就是将这张bitmap显示在画布上。...getHistorySize 对于有涉及到触摸操作的自定义View(比如手写控件),是在onTouchEvent方法中接收触摸消息的,但限于Android系统和设备本身的情况,底层上报的点信息不一定能够实时通过...Android中的自定义属性 公共技术点之 View 事件传递 Android 触摸及手势操作GestureDetector 通过Spannable对象设置textview的样式 Android 5.0...(Lollipop)中的SurfaceTexture,TextureView, SurfaceView和GLSurfaceView Android视图SurfaceView的实现原理分析 Android

    1.2K20

    Android中单个View的触摸事件分发机制

    接下来就进行分析对于view的触摸事件的执行,分析几两个问题, 为什么onClick时不会产生点击和长按的冲突? 为什么onLongClick时会执行完长按操作,再紧接着直接点击操作?...对于view的触摸事件有三个动作: ACTION_DOWN:按下 ACTION_MOVE:移动 ACTION_UP:弹起 对于一个view,有touch事件,drag事件,click事件,所涉及到的listener...方法如下 以TextView为例,给textview添加listener: setOnTouchListener:覆写父接口OnTouchListener的onTouch方法,当触摸view时会触发该listener...,为该activity中的控件的触摸事件进行分发,分发的意思也就是说,如果该方法返回true,当你对activity中的view进行点击,长按,滑动等操作时Log信息如下: 的是返回的false 在此声明:当屏幕进行触摸时首先是activity感受到该触摸事件,然后对事件进行分发处理,也就是说要不要传给activity中的view进行处理。

    83420

    10.多媒体

    通知 通知(Notification)是 Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。...它是一个长整型的数组,用于设置手机静止和振动的时长,以毫秒为单位。下标为0的值表示手机静止的时长,下标为1的值表示手机振动的时长,下标为2的值又表示手机静止的时长, //以此类推。...= vibrates; //现在的手机基本上都会前置一个LED灯,当有未接电话或未读短信,而此时手机又处于锁屏状态时,LED灯就会不停地闪烁,提醒用户去查看。...,占用1个字节 G:0-255,需要一个长度为8的二进制数字,占用1个字节 B:0-255,需要一个长度为8的二进制数字,占用1个字节 加载大图片 计算机把图片所有像素信息全部解析出来,保存至内存 Android...XY坐标,绘制直线 给ImageView设置触摸侦听,得到用户的触摸事件,并获知用户触摸ImageView的坐标 iv.setOnTouchListener(newOnTouchListener

    1.3K80

    使用 PreviewView 来展示相机预览

    还好,Jetpack CameraX 库 的 PreviewView 可以帮助您解决这一问题。通过在各种 Android 设备上提供开发者友好、一致且稳定的 API,使得展示相机的预览变得不再困难。...想要在 PreviewView 上实现它,在其之上添加一个 触摸监听器,并将其绑定到缩放手势监听器 (scale gesture listener) 上。...cameraControl.setZoomRatio(currentZoomRatio * delta) return true } } // 将 PreviewView 的触摸监听器绑定到缩放手势监听器上...val scaleGestureDetector = ScaleGestureDetector(context, listener) // 将 PreviewView 的触摸事件传递给缩放手势监听器上...Android 设备上提供一致的相机处理行为,这要归功于 CameraX 在 自动化测试实验室 中对 PreviewView 及其其他 API 上进行的投资。

    1.7K00

    Android 带你撸一个好玩的 DoodleView(涂鸦)

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 前言 最近项目中需要用到涂鸦的功能,在 Github 上搜了一圈也没找到适合的库,索性就自己撸一个出来,正好复习一下自定义 View...Github 上的源码 DoodleView。...因为我们这个涂鸦的 View,是频繁进行刷新的,每次触摸屏幕都会进行相应的界面刷新,所以用 SurfaceView 来实现就比较合理了。...这里我直接结合代码来讲一下 DoodleView 的实现思路,因为我是继承自 SurfaceView 来写的,对于 SurfaceView 不是很了解的朋友,可以先看一下这篇文章 Android中的SurfaceView...---- 猜你喜欢 Android 一起来看看知乎开源的图片选择库 Android 能让你少走弯路的干货整理 Android 撸起袖子,自己封装 DialogFragment 手把手教你从零开始做一个好看的

    77430

    行为变更 | Android 12 中不受信任的触摸事件

    触摸控制是 Android 系统中同应用进行交互的主要方式。Android 12 中采取了额外的措施,来确保触摸事件被正确地传递给了应该响应此事件的应用,以此确保触摸交互的直观和安全性。...具体地说,就是在 Android 12 中,如果触摸事件是从一个不同的应用窗口传递的,那么此事件会被屏蔽。...如果您的应用不能使用上述 API,而是让触摸事件直接通过其窗口传递,那么在 Android 12 中它们可能无法按预期传递到下层。...因为对下层其他应用的触摸事件会被屏蔽,所以这样的方法在 Android 12 上就不再起作用了 (注意与前面提到的豁免条件的区别,在这里我们改变的是内部视图,而不是窗口)。...您必须在 窗口级别 上降低不透明度,仅仅改变视图的不透明度是不行的。

    1.4K30

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

    对于触摸(Touch)触发的事件,在Android中,事件主要包括点按(onClick)、长按(onLongClick)、拖拽(onDrag)、滑动(onScroll)等,点按又包括单击和双击,另外还包括单指操作和多指操作...因为所有的事件操作都发生在触摸屏上,而在屏幕上与用户交互的就是各种各样的视图组件(View),在Android中,所有的视图都继承于View,另外通过各种布局组件(ViewGroup)来对View进行布局...三、总结 Android系统中将1个down事件、n个move事件、1个up事件整体作为一次逻辑上的触控操作,Down事件已经确定了处理事件的对象,则后续的move、up事件也确定了处理事件的对象...进行处理; 如果 onInterceptTouchEvent 返回 false,则表示将事件放行,当前 View 上的事件会被传递到子 View 上,再由子 View 的 dispatchTouchEvent...难题:ViewFlipper的flip手势检测需要的MotionEvent会被各种子View的触摸检测给拦截了。

    71820

    2014-11-6Android学习------Android画笔实现画曲线--------贝塞尔曲线(二)

    我学习Android都是结合源代码去学习,这样比较直观,非常清楚的看清效果,觉得很好,今天的学习源码是网上找的源码 百度搜就知道很多下载的地方 网上源码的名字叫:Android 仿真翻页效果.zip我的博客写的比较乱...要创建一个新的SurfaceView,需要创建一个新的扩展了SurfaceView的类,并实现SurfaceHolder.Callback。...} 5.接下来就是怎么样去画贝塞尔曲线,Android中提供的是Path.quadTo()这个函数去画的 private void myDraw() { //定义自己的画图函数...drawQpath(canvas); //在画布上执行贝塞尔曲线的绘制 sfh.unlockCanvasAndPost(canvas); //画完之后取消锁定...} 7.上面的所有准备工作作为了,还有个需要处理,就是监听我手指移动的事件 //响应触摸屏事件,通过手指的位置取得两个重要的点,起始点,和终止点 @Override

    47630

    Android使用SurfaceView作为相机预览识图时,视图被拉伸的问题

    网上已经有很多人提到过,导致这种现象的原因是,传入的相机预览图像长宽比例,与SurfaceView本身大小长宽比例不一致。...那么解决方法也非常简单,只要获取一下设备本身支持的相机比例,然后选择其中一个与SurfaceView实际比例(经常就是设备的长宽)最相近的即可。...下面的代码是创建一个用于相机预览的SurfaceView的过程: //继承SurfaceView并且实现SurfaceHolder.Callback接口 public class CameraPreview...mCamera = camera; mHolder = getHolder(); mHolder.addCallback(this); //下面一行适用于Android3.0...public void surfaceCreated(SurfaceHolder holder) { //制定相机图像的绘制区域为这个SurfaceView,并且启动相机的预览

    4K80

    使用SurfaceView和MediaPlayer实现视频做为背景

    这样子让用户非常快投入应用使用的场景中去,这样的以视频作为开场的应用,我们是不是认为非常高大上呢,哈哈,事实上是使用了SerfaceView去载入一段小视频,然后使用mediaplayer进行播放。...这里我贴出主要代码的实现 import java.io.IOException; import android.app.Activity; import android.content.Intent;...; import android.view.SurfaceView; import android.view.View; import android.view.View.OnClickListener...请到我的github项目主页进行下载 https://github.com/paulzeng/surfaceviewbackground 点击打开链接 期待大家一起follow,增加更酷的效果!...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115389.html原文链接:https://javaforall.cn

    56510
    领券