简介: Touch事件的传递机制与生活贴近,从父布局开始一步一步的向下分发事件。分发事件时调用boolean dispatchTouchEvent(MotionEvent ev);方法。...Touch事件传递时,每次分发之后,会调用拦截方法boolean onInterceptTouchEvent(MotionEvent ev)方法,拦截后由拦截者来执行。 ...Touch事件传递拥有记忆功能,处理了一次事件传递,假定底层布局都没发完成事件,最后是由顶层父布局自己处理的。那么,相同事件再次产生的时候,顶层布局就不会向下分配,而是自己直接处理事件。...总结: 可以看出这个公司的小例子正好对应了Touch事件传递机制。一层一层往下传递,当下面无法完成时,又网上回传。...而手指抬起时再次发生了Touch事件,任然传递至TextView被解决。 ?
in touch mode 字面意思是 一个 View 在 touch mode 下是否可以接收焦点。...什么是 touch mode 呢?...下面总结 官方文档 Touch Mode 的介绍: Touch Mode 由于现在安卓手机基本都是触摸屏,导致我们没有意识到 Touch Mode 其实是一种特殊的状态,不同于 Selection,...→_→ Focusable in Touch Mode 一般情况下在 touch mode 时会退出 focused 状态,但是在有些情况下我们希望在 touch mode 时仍然保持 focused...感谢: http://android-developers.blogspot.fi/2008/12/touch-mode.html http://www.cnblogs.com/xiaoweiz
先看View的Touch事件分发,我自定义一个View,重写OnTouchEvent函数,然后分别设置OnTouchListener和OnClick: ? ? ?...这时候执行的顺序如下: OnTouchListener.DOWN ->OnTouchListener.MOVE-> OnTouchListener.UP 这里验证了我的猜想,可以得到如下结论 View的Touch...> OnTouchListener.MOVE -> OnTouchEvent.MOVE->OnTouchListener.UP ->OnTouchEvent.UP 这里我们就可能得到结论 View的Touch...通过上面两个结论我们验证了我们的优先级猜想 View的Touch事件分发,执行的优先级为OnTouchListener > onTouchEvent > onClick,如果前两个任意一个地方返回true...接下来我们从源码的角度分析,首先我们需要知道,你点击或者或者触摸任何一个View 都会调用 dispatchTouchEvent()函数,我们就从这里开始分析源码: /** * Pass the touch
Android Touch事件分析 本文将分析Touch事件的传递。很多复杂的功能都需要深刻的处理Touch事件,例如侧边栏,例如图标的拖动换位。...一,Touch事件的执行轨迹 Down—>MoveàUP/Cancel 二,Touch事件的分类 Touch事件可分为两类:OnTouchEvent和 onInterceptTouchEvent。...消息传递的两种方式(Z轴方向) 前者是正在执行touch事件的方法,后者则是拦截touch事件的方法。...三,Touch事件案例解析 当然,听到这里可能还不是很清楚。下面将以demo的形式来说明。...显然,拦截touch事件的前提是有可拦截的touch事件,即存在子view,所以只有ViewGroup才有OnInterceptTouchEvent()方法。
Non-Touch Mode 就是指键盘出来了,这种状态是非Touch Mode模式 没有键盘的其他所有的操作应该都属于 Touch Mode,比如:点击,拖动,手势滑动,滚动,等等, 大多数...Android设备都是触摸屏的,但是实际上Android设备也支持键盘操作,允许通过键盘来完成导航,点击,输入等。 ...也就是说,在Touch Mode模式之下,UI元素是不会进入聚焦状态的,即使调用requestFocus也不会。 那个,Android是如何区分这两种情况的呢? ...答案就是Touch Mode。当用户开始通过键盘与设备交互的时候,设备就退出Touch Mode模式;当用户开始通过触摸屏与设备交互的时候,设备就进入Touch Mode模式。...Android规定,某些元素,即使是在Touch Mode模式下,也可以获得焦点。
由于Android中并没有及早的有一份这样的标准,当我们想把网页添加到桌面时,仍然需要使用苹果的Touch Icon。...Android中有缺陷的实现 在Android WebView提供了处理Touch Icon的回调,onReceivedTouchIconUrl(WebView view, String url,boolean...; import android.os.Bundle; import android.util.Log; import android.webkit.JavascriptInterface; import...android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient;...一个简单地json实例如下,这里我们可以看到其中icons中存在多个类似touch icon的图标,src代表图标路径,sizes代表大小,type就是mimetype,density指的是Android
当前ViewGroup是否需要拦截touch事件; 2. 是否需要将touch事件继续分发给子View; 3. 如何将touch事件分发给子View。...是否自己接收处理touch事件。...图中2在遍历ViewGroup下所有的子View,需要注意的是,遍历的方式是从后向前遍历,要是发现某一个子View接收touch事件,则停止遍历,这是因为Android中子View是从上向下放到子View...写在前面的View被后面的View覆盖的) 图中3在判断touch事件的坐标是否在子View的坐标范围内,并且子View没有处于动画状态。...如果mFirstTouchTarget不为null,说明步骤2中已经有子View对touch事件进行了捕获,则直接将当前已经后续的事件(MOVE和UP事件)交给该View进行处理。
本文将详细介绍 Android 下的 Touch 事件分发机制,包括事件分发的过程、涉及的方法以及 ViewGroup 中事件分发的实现。...这两种方式共同构成了 Android 事件传递的完整过程,用于处理 Touch 事件在视图层次结构中的传递和消费。...3.2 时序图 时序图描述了 Touch 事件在视图层次结构中的传递过程。...3.3 简化实现 在 Android 中,Touch 事件的传递涉及到三个关键的方法:dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent。...五、总结 通过本文的介绍,我们了解了 Android 下的 Touch 事件分发机制,包括事件分发的过程、涉及的方法以及 ViewGroup 中事件分发的实现。
好了,结合Jeff 查阅的资料,下面来详细来说说iOS / Android 移动设备中的 touch icons。 关于 “Touch icons” favicons 知道是什么吧?...为你的网站添加个Touch icons 可以用类似下面的代码: touch-icon" href="apple-touch-icon.png"> 这个只是基础的演示代码...",可喜的是,Chrome v31+ for Android 以上的版本支持这个;但遗憾的是,苹果的设备不支持这个。...考虑到最大的兼容性,Chrome for Android 做了一定的牺牲,那就是,如果再你的网页上找不到上面的代码,就会向下兼容,跟随者苹果的设备支持的touch icons(类似一开头的代码)。...-- For non-Retina iPhone, iPod Touch, and Android 2.1+ devices: --> touch-icon-precomposed
下面就是检测的方法: var supportsVibrate = "vibrate" in navigator; 在window.navigator对象里就只有一个关于振动的API:vibrate。...振动API基础应用 这个navigator.vibrate函数可以接受一个数字参数,也可以接受一个数字数组,当使用数组参数时,奇数位的数值是震动秒数,偶数位为等待秒数。...// 振动1秒 navigator.vibrate(1000); // 振动多次 // 参数分别是震动3秒,等待2秒,然后振动1秒 navigator.vibrate([3000, 2000, 1000...]); 如果想停止震动,你只需要向navigator.vibrate方法里传入0,或一个空数组: // 停止振动 navigator.vibrate(0); navigator.vibrate([]);...对navigator.vibrate方法的调用并不会引起手机循环振动;当参数是一个数字时,振动之后发生一次,然后就停止下来。
如果想要在其他控件,如TextView上有触摸反馈可以将background属性设置成以下值 1.android:background="?...attr/selectableItemBackground"--和Button一样的效果(扩散时有边界,边界就是View的宽高) 2.android:background="?...> android="http://schemas.android.com/apk/res/android" android:color="@color/colorPrimaryDark..."> android:drawable="@drawable/ic_launcher" /> 效果如下: ?...还可以给xml中的item属性设置一个值为@android:id/mask的id,达成点击的时候才显示这个drawable ?
之前在 Android Camera2 简介 这篇文章中简单介绍了下 Camera2 中 AF/AE 对焦区域如何进行设置,之前是通过手动计算对应关系实现的,但这种方式需要考虑到前后摄的区别,前摄和后摄坐标映射有区别...Camera2中的大小要根据查询出来的 SENSOR_INFO_ACTIVE_ARRAY_SIZE 来进行确定 使用Matrix进行坐标映射 Camera API 1 关于API 1的坐标映射, 可以参考Android...源码中Camera代码, 路径: packages/apps/Camera2/src/com/android/camera/ui/focus/CameraCoordinateTransformer.java...transform.setConcat(fill, transform); return transform; } 上面是Android源码里面的代码,是先求的Camera Driver坐标映射到...; import android.graphics.Rect; import android.graphics.RectF; import android.hardware.camera2.CameraCharacteristics
解释:如果某个控件或容器消费了touch事件,则与该touch事件相关的后续touch事件者会派发给该控件或容器进行处理。...onInterceptTouchEvent这个事件是从父控件开始往子控件传的,直到有拦截或者到没有这个事件的view,然后就往回从子到父控件,(类似于预处理,当然也可以不处理)并改变事件的传递方向,也就是决定是否允许Touch...事件继续向下(子控件)传递,一但返回True(代表事件在当前的viewGroup中会被处理),则向下传递之路被截断(所有子控件将没有机会参与Touch事件),同时把事件传递给当前的控件的onTouchEvent...View里的onTouchEvent返回默认值是true.这样才能执行多次touch事件
处理方式,Standard Touch Delegate和 Targeted Touch Delegate方式(參见CCTouchDelegateProtocol.h中源码),CCLayer默认是採用第一种方式...在CCLayer子类中要能接收touch事件。首先须要激活touch支持。在init方法中设置isTouchEnabled值为YES。...Standard Touch Delegate(CCLayer默认採纳这样的方式) Standard方法中用户须要重载四个主要的touch处理方法,例如以下: -(void) ccTouchesBegan...会调用该方法响应touch事件。假设是单点touch,则仅仅须要调用 UITouch *touch = [touches anyObject],就能够获取touch对象。假设须要响应多点 touch。...为了获取UITouch对象的坐标(如果该UITouch名称为touch),调用[touch locationInView: [ touch view]]会返回一个UIView相关的坐标viewPoint
touch命令 touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间,若文件不存在,系统会建立一个新的文件。 语法 touch [OPTION]... FILE......touch /tmp/file.txt 创建多个文件。 touch /tmp/file1.txt /tmp/file2.txt /tmp/file3.txt 模板文件名创建文件。...touch -a /tmp/file.txt && stat /tmp/file.txt 修改文件的修改时间并查看文件属性。.../EveryDay 参考 https://linux.die.net/man/1/touch https://www.runoob.com/linux/linux-comm-touch.html https...://www.interserver.net/tips/kb/touch-command-linux-usage-examples/
:name="android.permission.CHANGE_WIFI_STATE"/> android:name="android.permission.VIBRATE...(imageButton33Touch);//右转 imageButton34.setOnTouchListener(imageButton34Touch);//左转...; imageButton33.setImageResource(R.drawable.youzhuandown); vibrator.vibrate...; imageButton34.setImageResource(R.drawable.zuozhuandown); vibrator.vibrate...(imageButton33Touch);//右转 imageButton34.setOnTouchListener(imageButton34Touch);//左转
以下是对 touch 命令的详细讲解,包括语法、常用选项、使用场景和示例。 基本语法 touch [选项] [文件...] 文件:指定要操作的文件,可以是一个或多个。...选项:用于控制 touch 的行为。 主要功能 创建空文件:如果指定的文件不存在,touch 会创建一个新的空文件。...创建空文件 如果指定的文件不存在,touch 会创建一个新的空文件: touch file.txt 此命令创建一个名为 file.txt 的空文件。 2....--help:显示帮助信息 显示 touch 的帮助信息: touch --help 使用场景与示例 1....创建空文件 这是 touch 最常见的用法: touch newfile.txt 如果 newfile.txt 已存在,touch 只会更新其时间戳,而不会更改其内容。 2.
Linux 命令 touch 命令解析 touch 命令是 Linux 系统中用于创建或更新文件的命令。...作用是:改变一个文件的时间戳,将其设为最近的修改时间或者最接近的访问时间,此外,touch命令也可以创建新的空文件。...为方便读者理解,林一写个具体的 demo: touch /path/to/file 这个命令会创建一个新的空文件,如果该文件已经存在,则会更新文件的修改时间为当前时间。...另外,touch命令还可以指定文件的时间戳: touch -c /path/to/file # 指定访问时间为当前时间 touch -r /path/to/otherfile /path/to/file...除了基本的touch命令,还有一些扩展知识可以了解一下: touch命令可以用于创建或更新目录,但是这并不会改变目录的时间戳,只会更新目录下的最新文件时间戳。
大家好,今天我给大家介绍一下通过两个新的html5技术sencha touch 和phonegap来开发android应用。...首先,众所周知,sencha touch是结合了extjs和jquery mobile这两个javascript神器而开发的一个js库,其诞生的目的就是为了使webapp成为nativeapp,甚至使其更像...phonegap相信很多人都用过,我也不例外,但是一直都是用它来为sencha touch打包,这确实有点大材小用,因为phonegap的api相当犀利,例如加速度传感器,照相机,振动器,文件操作等等,...好了,现在我通过一个文件浏览器的例子来说明一下如何利用sencha touch和phonegap来开发本地应用。...; dirReader.readEntries(getFiles, onError); } 首先注册一个时间监听器,为加载phonegap库准备,然后我们请求android
Android屏幕操作 屏幕是用户和Android设备交互的主要媒介,屏幕分为触屏和非触屏。...Android设备目前有四种类型:Android Phone,Android Tablet,Android Wear和Android TV。...event 对触屏设备,当用户用手指或触控笔在设备屏幕上操作时会产生触屏事件(touch event)。...但是需要注意的是,产生了一个MotionEvent对象并不表示这一定是一个触屏操作,MotionEvent不仅可以用来表示touch event,还可以表示hover event,scroll event...这里只讨论MotionEvent中关于touch event的部分。