Touch.js 是移动设备上的手势识别与事件库, 由百度云Clouda团队维护,也是在百度内部广泛使用的开发工具。 Touch.js手势库专为移动设备设计。.../手指在屏幕上移动时触发 touchend//手指从屏幕上移开时触发 4、事件配置 touch.config(config) 功能描述: 对手势事件库进行全局配置。...操作的手势数量 position 相关位置信息, 不同的操作产生不同的位置信息 distance swipe类两点之间的位移 distanceX, x 手势事件x方向的位移值, 向左移动时为负数 distanceY...解除事件绑定 touch.off( element, types, callback ) 功能描述 解除某元素上的事件绑定,根据参数区分事件绑定和事件代理。...触发事件 touch.trigger(element, type); 功能描述 触发某个元素上的某事件。
在 Windows 上怎样做 Python 开发?是像大神那样使用纯文本编辑器,还是用更加完善的 IDE?到底是用自带的命令行工具,还是需要装新的 Terminal?...然而与 Linux 或 macOS 不同,在 Windows 上做开发总会遇到很多挑战,不论是文件编码、环境控制还是项目编译,开发过程中总会有一些神奇的收获。...那么在 Windows 上如何做 Python 开发呢?...Code 发现并安装 Python 扩展 编写简单的 Python 应用程序 了解如何在 VS Code 中运行和调试现有 Python 程序 将 VS Code 连接到 Git 和 GitHub,与全世界分享你的代码...你可以在 Visual Studio Code 网站上找到所有安装内容: 此外,除名称相近外,Visual Studio Code(简称 VS Code)与基于 Windows 的更大规模的 Visual
记一下使用nodejs更新windows server上的代码 项目依赖 主文件代码 工具使用 注意事项 有个项目是部署在阿里云Windows Server服务器上的,每次更新都需要远程或者ssh上去更新...,比较繁琐就搞了一个nodejs工具去更新代码了 # 项目依赖 项目基于koa开发,需要安装koa-router、node-cmd package.json文件 { "name": "code_upd...dependencies": { "koa": "^2.11.0", "koa-router": "^7.4.0", "node-cmd": "^3.0.0" } } # 主文件代码...nodeCmd = require('node-cmd'); router.get('/', async (ctx, next) => { await next(); ctx.body = '更新代码...# 注意事项 可能需要在阿里云后台的安全组放行项目使用的端口,不然无法请求到服务地址
之前做学校的毕业设计,想从Github上下载一个Vue项目作为模板,由于之前没有从gitHbu上克隆项目的经验,结果花了大半天在从github上面把项目克隆下载。...,那么你直接点左下角的Open in Desktop,就可以在你本地的客户端直接打开,用得不多; Download Zip,可以直接下载项目的压缩包到你的电脑上,用得不多; 代码克隆,工作中基本都是通过...git clone的方式拉取项目代码,下面详细介绍。...: 一般使用npm install来构建下载依赖,执行 npm install 命令时,默认使用的是国外的下载源 ,可以通过如下代码配置为使用淘宝的镜像: npm config set registry...更多的细节可以参考:怎么样从GitHab、GitLab、码云等下载代码?
你可能看完会有疑惑,View的事件是ViewGroup派发的,那ViewGroup的事件呢?他包含在Activity上,是不是Activity也有类似的事件派发方法呢?...PS:阅读本篇前建议先查看前一篇《Android触摸屏事件派发机制详解与源码分析二(ViewGroup篇)》与《Android触摸屏事件派发机制详解与源码分析一(View篇)》,这一篇承接上一篇。...2 实例验证 2-1 代码 如下实例与前面实例相同,一个Button在LinearLayout里,只不过我们这次重写了Activity的一些方法而已。...这次看着代码好少的样子,不过别高兴,浓缩才是精华,这里代码虽少,涉及的问题点还是很多的,那么咱们就来一点一点分析吧。 12到14行看见了吧?...这时候你可以回过头看这三篇文章的例子,你会完全明白那些打印的含义与原理。 当然,了解这些源码机制不仅对你写普通代码时有帮助,最重要的是对你想自定义装逼控件时有不可磨灭的基础性指导作用与技巧提示作用。
因此就需要对Android消息传递机制有一个基本的理解与认识,这样才有可能解决开发过程中的需求与问题。...对于触摸(Touch)触发的事件,在Android中,事件主要包括点按(onClick)、长按(onLongClick)、拖拽(onDrag)、滑动(onScroll)等,点按又包括单击和双击,另外还包括单指操作和多指操作...因为所有的事件操作都发生在触摸屏上,而在屏幕上与用户交互的就是各种各样的视图组件(View),在Android中,所有的视图都继承于View,另外通过各种布局组件(ViewGroup)来对View进行布局...二、实验测试 测试的时候,分为以下几种情况,不同的情况下事件的传递机制是不一样的,但是事件传递原理都一样,所以不要混淆。.../** * Used by custom windows, such as Dialog, to pass the touch screen event * further
View 即要想充分理解Android分发机制,本质上是要理解: Activity对点击事件的分发机制 ViewGroup对点击事件的分发机制 View对点击事件的分发机制 下面,我将通过源码,...即回调控件注册Touch事件时的onTouch(); * 2....事件监听 且 在onTouch()返回false 注册Touch事件监听 且 在onTouch()返回true 分析1:注册Touch事件监听 且 在onTouch()返回false 代码示例 // 1...分析2:注册Touch事件监听 且 在onTouch()返回true 代码示例 // 1....即非enable),那么给它注册onTouch事件将永远得不到执行,具体原因看如下代码 // &&为短路与,即如果前面条件为false,将不再往下执行 // 故:onTouch()能够得到执行需2
即回调控件注册Touch事件时的onTouch(); * 2\....分析2:注册Touch事件监听 且 在onTouch()返回true 代码示例 // 1\....() 注:若1个控件不可点击(即非enable),那么给它注册onTouch事件将永远得不到执行,具体原因看如下代码 // &&为短路与,即如果前面条件为false,将不再往下执行 // 故:onTouch...) // 对于该类控件,若需监听它的touch事件,就必须通过在该控件中重写onTouchEvent()来实现 相关视频: Android高级UI性能优化——View的Measure原理应用与xml解析过程原理讲解..._哔哩哔哩_bilibili Android进阶系统学习——Gradle入门与项目实战_哔哩哔哩_bilibili Android网络架构搭建与原理解析(一)——通过一个网络请求一步一步见证网络模块的成长
这个我还真不知道,这里涉及到操作硬件(手机屏幕)方面的知识,也就是Linux内核方面的知识,我也没有了解过这方面的东西,所以我们可能就往上层来分析分析,我们知道Android中负责与用户交互,与用户操作紧密相关的四大组件之一是...= null) { //获取子View的位置范围 child.getHitRect(frame); //如Touch到屏幕上的点在该子...true,否则就执行View的onTouchEvent() 并返回View的onTouchEvent()的值 现在你了解了View的onTouchEvent()方法和onTouch()的关系了吧,为什么...我觉得OnTouchListener接口是对处理Touch事件的屏蔽和扩展作用吧,屏蔽作用我就不举例介绍了,看上面的源码就知道了,我就说下扩展吧,比如我们要打印View的Touch的点的坐标,我们可以自定义一个...ACTION_MOVE和ACTION_UP) Button是clickable的,可以消费Touch事件,但是我们可以通过setClickable()和setLongClickable()来设置View
当然,阅读完这一篇之后可以阅读继续进阶的下一篇《Android触摸屏事件派发机制详解与源码分析三(Activity篇)》。...关于View与ViewGroup的区别在前一篇的Android 5.1.1(API 22) View触摸屏事件传递源码分析部分的写在前面的话里面有详细介绍。...2 基础实例现象 2-1 例子 这个例子布局等还和上一篇的例子相似,只是重写了Button和LinearLayout而已,所以效果图不在提供,具体参见上一篇。...(action=1)事件时与上面顺序不同的时竟然没触发onInterceptTouchEvent方法。...好了,到此你是不是即明白了上面实例演示的代码结果,也明白了上一篇最后升级实例验证模块留下的点击Button触发了LinearLayout的一些疑惑呢?答案自然是必须的!
标签 for a_tag in soup.find_all('a', {'href': href_regex}): # 获取a标签的href属性值并组装完整的URL...hasher.update(full_url.encode('utf-8')) field_key = hasher.hexdigest() # 如果Redis的键...'zhihu'对应的hash数据类型中没有URL的摘要就访问页面并缓存 if not client.hexists('zhihu', field_key): html_page...= requests.get(full_url, headers=headers).text # 对页面进行序列化和压缩操作 zipped_page =...zlib.compress(pickle.dumps(html_page)) # 使用hash数据类型保存URL摘要及其对应的页面代码 client.hset
它可以轻松的扩展到多平台、多引擎上;如基础的 Android和IOS手机应用、App;Windows上的应用等。...Airtest 是一个跨平台的、基于图像识别的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS——引于官方文档 Airtest 可实现“即看见可操作”,但是对文本内容的获取缺无能为力...rgb:切换彩色与灰度识别,在识别图像时,Airtest会先将图像转为灰度图再进行识别。因此假如有两个按钮,形状内容相同,只有颜色不同的情况下,Airtest将认为它们都是相同内容。...其中参数,还差 record_pos 与 resolution;以下为Template类,查看文档得知: resolution:录制时的屏幕分辨率 record_pos:录制时屏幕上的坐标 class...参数有: 一个目标,这个目标可以是 Template 的实例或者是一个坐标; 执行多少次点击 按照平台的不同所需的不同参数 最终返回位点击的坐标 适用平台为 Android, 、Windows 、iOS
在屏幕上抬起 0或1次 MotionEvent.ACTION_MOVE 在屏幕上移动 0或N次 MotionEvent.ACTION_CANCEL 滑动超出空间边界时 0或1次 当我们的手指在android...我们先看一下我们看到的App的Activity上都包含哪些UI: ?...ViewGroup继承于View因此ViewGroup的onTouchEvent本质是从VIew继承而来的 核心代码剥离 Activity /** * Called to process touch...的子类因此实际此时走的是View的事件分发的处理逻辑了,进而我们来接着说View的时间分发机制 View的事件分发 // View中该方法的核心部分伪代码public boolean dispatchTouchEvent...从中我们可以看出在事件分发中 onTouch是有很高的优先级的 实际上,在View的onTouchEvent方法中,如果设置了onClickListener监听对象,则会调用其onClick方法。
我学习Android都是结合源代码去学习,这样比较直观,非常清楚的看清效果,觉得很好,今天的学习源码是网上找的源码 百度搜就知道很多下载的地方 网上源码的名字叫:android抽屉效果.zip 我的博客写的比较乱...按下然后拖动;3)ACTION_UP,松开 右这三个变量来表达上面的四种或者更多的动作,但是无论哪种组合,按下和松开只有一次,拖动可以是多次 手势处理还需要关系的问题就是速度和方向,速度的问题我们先可以看一个图解释下...: 从图上我们很明白的知道,速度是有X方向和Y方向的速度共同决定的,这是从细粒度来看的, 一般我们处理的坐标信息需要用到速度作为判断条件,例如: 根据用户在X轴或者Y轴上的移动速度作为条件。...: 比如下面的代码中我们就在用户移动超过100个像素,且X轴上每秒的移动速度大于200像素时才进行处理。...,有时候我们不需要那么多的函数,因为很多事件是不需要处理的,在Android中也提供了一种SimpleGestureListener,这里你可以自己去选择自己想要实现的方法,不需要那么多无关的代码 public
一、View的dispatchTouchEvent和onTouchEvent 探讨Android事件传递机制前,明确android的两大基础控件类型:View和ViewGroup。...(3)MotionEvent.ACTION_UP 与down对应,表示抬起 另外,明确事件传递机制的最终目的都是为了触发执行View的点击监听和触摸监听: ******.setOnClickListener...下面通过代码来说明,自定义一个TestButton继承自Button,重写它的dispath***和onTouchEvent方法,为了简单只关注down和up事件。...> 在Activity里给这个自定义LinearLayout也注册上onClick监听、onTouch监听。...因为事件给了孩子们,它没监听也关系不到父亲了,父亲的onClick和onTouch都没执行。
的dispatchTouchEvent方法源码太长了,这里就不贴上来了,在分析到关键部分的时候只贴关键代码吧。...事件来结束,然后清空该控件的touch信息与状态恢复到ACTION_DOWN事件发生之前的状态再接着传递ACTION_DOWN事件: /** * Cancels and clears all...如果是,就会触发这个View的OnTouchListener的onTouch,然后根据onTouch的返回值决定是否触发View的onTouchEvent,也就是说OnTouchListener会比onTouchEvent...方法开始往下逐层传递,这边可通过对比Button和TextView对于ACTION_UP的不同处理作比较: Button与TextView对于ACTION_UP的区别,Buton是可点击的isClickable...和ACTION_UP的传递结果打印: 12-06 00:10:27.258 13203-13203/?
也有好多朋友问过我各种问题,比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListView引入了一个滑动菜单的功能,ListView就不能滚动了?...) { return true; } return onTouchEvent(event); } 这个方法非常的简洁,只有短短几行代码!...第三个条件就比较关键了,mOnTouchListener.onTouch(this, event),其实也就是去回调控件注册touch事件时的onTouch方法。...因为ImageView和按钮不同,它是默认不可点击的,因此在onTouchEvent的第14行判断时无法进入到if的内部,直接跳到第91行返回了false,也就导致后面其它的action都无法执行了。...1. onTouch和onTouchEvent有什么区别,又该如何使用?
随着Android项目代码量的增加,当应用方法数量超过了65536的时候,编包的时候就会报出著名“64k”方法数问题。...虽然然最简单粗暴的方法是分dex,还有其他像混淆等,但本人还是研究了几种代码上减少方法的方式,希望能帮到“有缘人”。...一、工具介绍 Android Studio dex2jar 二、代码场景与方法数分析 下面要介绍下几种常见的代码使用场景,分析方法数增加情况。...工具看下方法数: [MainActivity和Task方法数] [MainActivity$Task.smali文件] MainActivity方法数没错,而Task实际上得出来的方法数却是3个。...而实际上,是: [MainActivity和Task方法数] [MainActivity.smali文件] 在外部类中,增加了一个access$000的方法,这方法是为了支持Task访问MainActivity
领取专属 10元无门槛券
手把手带您无忧上云