-
android的多次点击事件
2016-07-26 17:52:55多次点击事件 源代码setting 1.在android系统中,设置里面->关于手机->安卓版本(即android version),三击后会出现android该个版本的版本号,以及一些动图,算是一个彩蛋吧! 2.导入setting源代码,ctrl+h...本次实现是借鉴android系统源代码setting 多次点击事件 源代码setting
1.在android系统中,设置里面->关于手机->安卓版本(即android version),三击后会出现android该个版本的版本号,以及一些动图,算是一个彩蛋吧!
2.导入setting源代码,ctrl+h搜索文件(关键字Android Version),搜索到了之后打开xml文件
3.是一个strings.xml文件,再次找到关键字firmware_version,再搜索。找到src下的源代码文件
4.又找到一个关键字KEY_FIRMWARE_VERSION,翻一翻找到关于多次点击事件的方法onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference)方法
5.去掉不需要的代码,复制有用的相关代码,就可以很容易的实现多次点击事件了。这里的3可以改为任意值>=2的值一下是我写的一个Demo:
定义两个成员变量以便日后更改
private static final int CLICKCOUNT = 4;//设置连续点击的次数 private static final long TIME = 3000;//设置在多少时间内连续点击
点击事件的处理Button multiple = (Button) findViewById(R.id.multipleClick); multiple.setOnClickListener(new View.OnClickListener() { long[] mHints = new long[CLICKCOUNT];//可以定义一个常量来设置 @Override public void onClick(View v) { //将mHints数组内的所有元素左移一个位置 System.arraycopy(mHints, 1, mHints, 0, mHints.length - 1); //获得当前系统已经启动的时间 mHints[mHints.length - 1] = SystemClock.uptimeMillis();//从开机开始算 if(mHints[0] != 0 && SystemClock.uptimeMillis() - mHints[0] <= TIME){ Toast.makeText(MainActivity.this,"点击了三下",Toast.LENGTH_SHORT).show(); } } });
-
Android中多次点击开发者模式的实现
2017-08-21 14:24:35在很多Android操作系统中,将开发者模式隐藏了起来,必须连续点击版本号多次才可出现开发者模式。那么如何检测点击多次呢?代码如下://数组存储点击次数 long[] mHits = new long[2]; @Override public void ...在很多Android操作系统中,将开发者模式隐藏了起来,必须连续点击版本号多次才可出现开发者模式。那么如何检测点击多次呢?代码如下:
//数组存储点击次数 long[] mHits = new long[2]; @Override public void onClick(View v) { //实现双击方法 //src 拷贝的源数组 //srcPos 从源数组的那个位置开始拷贝. //dst 目标数组 //dstPos 从目标数组的那个位子开始写数据 //length 拷贝的元素的个数 System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1); //实现左移,然后最后一个位置更新距离开始的时间,如果最后一个时间和最开始时间小于500,即双击 mHits[mHits.length - 1] = SystemClock.uptimeMillis(); if (mHits[0] >= (SystemClock.uptimeMillis() - 500)) { } }
-
Android Webview的使用中,onPageFinished方法和onReceivedError方法,onPageFinished在4.4版本会被多次...
2015-09-09 12:08:09Webview的使用中,...例如:你自己写了一个错误页面去替代谷歌原有的那个错误页面,当在你自己写的错误页面上多次点击刷新时,会出现谷歌原有的错误页面,如: 这是因为你在onPageFinished写的handler发送Webview的使用中,onPageFinished方法和onReceivedError方法,onPageFinished在4.4版本会被多次执行的问题,这是因为在Android4.4版本上有问题。例如:你自己写了一个错误页面去替代谷歌原有的那个错误页面,当在你自己写的错误页面上多次点击刷新时,会出现谷歌原有的错误页面,如:
这是因为你在onPageFinished写的handler发送信息,或移除信息,有可能是onPageFinished方法先执行时,handler执行了发送信息操作(像发送了执行移除页面的操作,这时候会把你原先的页面移除(自己写的错误页面),谷歌自由的错误页面这时候就显示出来的),然后执行onReceivedError方法,最后onPageFinished方法会在执行一次。最笨的方法是在onPageFinished方法里执行handler的地方,判断你拿到的页面的状态,看是否是除谷歌原有的错误页面外的页面,若是谷歌原有的错误页面,重新给他置为我们自己写的错误页面。
-
ios的webview下input点击多次才会出现软键盘
2019-05-06 14:24:45在webview中有input框,在Android下是有效的,在pc中也是好的,但是在ios中需要点击多次或者长按才会弹出软键盘。 探索原因,可能与fastclick有关,以及与ios的版本有关 1.fastClick是什么? 先来看fastClick解决了...在webview中有input框,在
Android
下是有效的,在pc
中也是好的,但是在ios
中需要点击多次或者长按才会弹出软键盘。探索原因,可能与fastclick有关,以及与ios的版本有关
1.fastClick是什么?
先来看fastClick解决了什么问题:
- click 300ms延迟:浏览器click会比touch延迟300ms触发
- click穿透现象:当两个div同处一个position,上层div绑定touch,下层div绑定click,当上层div触发touch消失后,可能会触发下层div的click事件
fastClick的原理:
fastclick利用捕获顶层dom元素(如:body,html等)的click事件,拦截所有的click请求进行判断:是否有touch触发、是否需要阻碍click事件(stopImmediatePropagation)等。
2.解决方法:
1.更改
fastClick
的源码
增加targetElement.focus();
FastClick.prototype.focus = function(targetElement) { var length; //兼容处理:在iOS7中,有一些元素(如date、datetime、month等)在setSelectionRange会出现TypeError //这是因为这些元素并没有selectionStart和selectionEnd的整型数字属性,所以一旦引用就会报错,因此排除这些属性才使用setSelectionRange方法 if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month' && targetElement.type !== 'email') { length = targetElement.value.length; targetElement.setSelectionRange(length, length); /*修复bug ios 11.3不弹出键盘,这里加上聚焦代码,让其强制聚焦弹出键盘*/ targetElement.focus(); } else { targetElement.focus(); } };
- 因为这是ios11之后有的问题,并且IOS11 已经修复了300秒延迟。所以我们可以在引用
Fastclick
的时候做一个判断
const str= navigator.userAgent.toLowerCase() const ver=str.match(/cpu iphone os (.*?) like mac os/) if(!ver || parseInt(ver[1])< 11){//非IOS系统或者系统版本小于11 // 引入fastclick 做相关处理 }
3. 分析原因
3.1 Passive event listeners
ios 11.3更新 Safari 11.1,支持新web API :允许对事件支持 {passive: false}被动模式,减少滚动屏幕的性能损耗和奔溃。
使用方法:
document.addEventListener('touchmove', function(e) { e.preventDefault(); }, { passive: false });
按照以往我们对添加事件监听的方法三个参数的认知,如下:
//type是事件类型,callback是执行函数, capture是否进行捕获/冒泡,默认为false document.addEventListener(type , callback, capture);
Passive event listeners
是2016年Google I/O 上同 PWA 概念一起被提出,但是同PWA不同,Passive event listeners 的作用很简单,如果用简单一句话来解释就是:提升页面滑动的流畅度。3.2 问题源头
为什么增加支持这个属性会导致添加
fastclick
后input输入框很难弹出键盘?在ios更新日志了,写到了
“Updated root document touch event listeners to use passive mode improving scrolling performance and reducing crashes.”
翻译过来就是:针对
document
的touch
事件监听添加passive
配置,即是:{passive: true}
,会永远不调用event.preventDefault()
,以此来提高滚动性能。源头推测:
fastclick
是采用拦截click
和监听touch
事件去实现的,里面包括对tagetElement
的focus
方法重写,因此在11.3之前可能event.preventDefault
生效了,同时用setSelectionRange
是可以聚焦input
的。
(这也就是我们更改fastclick源码,手动加上event.preventDefault
的原因) -
android多击事件_Android中的多击事件
2020-12-21 02:20:43在android系统中。google提供了一个click...在android中,三次点击android的版本图标会出现一个相应版本的logo。来看看google工程师是怎么写的。@Overridepublic boolean onPreferenceTreeClick(PreferenceScreen p... -
Toast——多次点击只显示一次解决方案
2012-09-18 14:04:21Android中的Toast是非常好用的一个信息提示控件,但是系统自带的Toast多次点击之后,会出现多次,如显示时间是2S,点击5次之后就会显示5X2=10S。 针对以上问题,Android为我们提供了一个静态方法cancel(),但是此... -
正在运行的android程序,按home键之后退回到桌面,在次点击程序图标避免再次重新启动
2020-08-29 10:14:00但是当我们打release包时就出现上述问题啦,开始发现这个问题,我以为是app被系统kill了,但是经过我多次调试与分析,发现当打开app后,再按home键回到桌面时,这时不点击app图标,而是启动任务列表,从任务列表中... -
Android中的多击事件
2015-06-20 00:02:02在android系统中。google提供了一个click事件。只负责相应单次点击。...在android中,三次点击android的版本图标会出现一个相应版本的logo。 来看看google工程师是怎么写的。 @Override public boolea... -
(Android)三星手机加载webView出现白屏页面
2015-12-10 02:36:46如图,测试手机型号是:三星SCH-I829,android版本:4.1.2,程序中只有一个Activity,内包含4个Fragment,加载Fragment的时候切换url,当点击切换Fragment多次后,出现白屏页面。错误信息:Uncaught TypeError: ... -
Android studio 真机模拟步骤
2021-02-19 15:21:13MIUI版本,多次点击MIUI版本,系统会提示,已处于开发者模式。 第二步:返回设置,找到更多设置会出现开发者选项,点击USB调试,USB安装,这里USB安装会出现一些问题,如果没有安装SIM卡,是没办法打开的。 二、... -
运行程序出现:Android device supports but apk only supports armeabi,x86,x86_64
2019-05-10 16:05:03目前手机的开发者模式在手机版本号多点击几次(大于5次),再返回设置界面,在其他选项中可以找到开发者模式和usb调试,都将其打开。模式开启具体可能记不大清楚了,可以自行百度。 解决办法:找... -
Android 隐藏功能
2014-09-17 21:05:48多次点击版本号,会出现提示信息,点击一定次数之后开发者选项会被添加到设置菜单中。定制手机定位精度设置 -> 定位服务 -> 定位模式,然后根据情况可以选项耗电量低的使用WLAN和移动网站进行低精度的估测,也... -
1.3创建你的第一个Android项目——Android第一行代码(第二版)笔记
2020-02-19 11:50:40点击后出现如下界面,可创建多个模拟器,如图,我已经创建好了一个,如果你没有,就点击下边的自行创建 可以下载推荐的,也可以选择其他的版本,第一次需要下载。 点击完成,创建模拟器完成, 现在可以启动或者... -
android studio 使用夜神模拟器
2016-10-08 09:40:42之前一直都在使用Genymotion的虚拟机,但会出现很多问题,而且配置比较麻烦,当你使用夜神模拟器的时候,你就会爱上它的。首先,要在官网上下载夜神模拟器。...3. 5次点击版本号,进入开发者模式。 4 -
来电信息Android应用
2016-10-13 09:35:48隐藏功能 (点击七次版本后出现) 1. 自定义数据源。可以自定义百度、聚合数据(360)的 API 密钥,可以自定义 API (用于适配客户信息系统)。可以设置忽略号码段来忽略查询,可以强制使用本地离线数据。 插件功能(安装... -
数据采集可采用Android系统原生的定位服务,也可以使用第三方的定位服务比如高德定位,百度定位等,根据多年来的开发经验,还是高德好用些,曾经做导航的时候,就发现百度导航会出现主路辅路不分的情况,前阵子还...
-
android studio的使用:虚拟手机与真机的设置
2016-01-21 20:23:15android studio是第一次使用,很多使用细则不太了解,今天先写虚拟手机与真机的设置,以后再陆续补充 虚拟手机设置 Tools ->android->AVD ...设置->关于手机->软件信息->点击版本号5次就会出现“开发者模式”, -
android手机停用或卸载自带app方法
2020-08-03 15:37:30方法:多次点击关于手机--->系统版本号 如: 再到系统中可以看到开发人员先项,进入该先项,如: 最后连接电脑,会出现: 确定之后,就可以操作手机了。 操作如下命令: adbshell pm list ... -
HUAWEI nova2s 真机运行Android APP
2019-07-12 13:51:22②找到关于手机界面中的【版本号】那一项连续点击七次,如弹出开发者选项己打开字样,表示你的开发者选项己经打开成功 ③返回【系统】会看到多出一个【开发人员选项】,点击【开发人员选项】进入 ④在开发人员选项... -
用Android studio动态调试smali代码,无法下断点,原来是smalidea插件安装失败导致。
2018-06-27 10:33:15但是点了很多次,就是没有反应,在其他地方点击,也没有反应。 无奈之下,把人家的教程再看了几遍,从头到尾操作,还是一样。怀疑是smalidea版本问题,从smalidea-0.05到smalidea-0.04到smal... -
Android基础——适配安卓6.0新权限系统
2017-02-26 19:01:59安卓6.0新权限系统分类申请单一或多个权限解决用户多次拒绝权限或点击不再提示 安卓6.0新权限系统分类 在安卓6.0版本以后,新的权限系统出现了,为了更好的保护用户的安全,新的权限系统需要开发者在代码中... -
android crash没有日志_有赞移动Crash平台建设
2020-11-21 06:59:50点击关注“有赞coder”获取更多技术干货哦~作者:王剑标部门:电商移动背景 & 痛点 & 价值稳定性始终会是一家成功公司的重要指标,在移动端亦是如此。跟大部分创业公司一样,有赞在创业初期选择以核心... -
Android应用源码完整功能版机锋安卓市场
2014-05-02 20:50:57并非只有UI布局的项目 机锋市场作为国内数一数二的正规安卓市场其客户端项目有非常大的借鉴和学习意义的 项目运行以后会提示更新 选择否 点击任意软件即可下载 下载的时候会在下载图片上出现一个圆形进度条 ... -
Android应用源码新闻天气商城聊天功能4合一综合项目
2018-11-07 11:34:37订单功能:点击立即购买即会弹出地址填写然后数据操作,点击圆形菜单栏中的订单并会查询数据库返回订单和订单信息等,界面完成了翻页效果(是git上面的框架),订单信息进行了手机和邮箱的校验。 评论功能:在订单中... -
工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究
2017-02-28 21:22:19关键词:HTML5,检测与认证,Android,多窗口浏览器模式,跨域处理,页面自适应 Abstract At present business processes are old and explicit in industrial market of certification and detection filed, as ... -
ReactNative,第一次运行的时候报错InstallException
2017-07-24 14:18:48今天在研究Facebook的ReactNative的时候遇到了一个小问题,但是网上能找到的信息并不多,贴... 我最开始以为是sdk的问题,于是把所有android版本都下载了,可是事实并不是这样的,后来终于发现了问题,就是我用虚拟 -
N0.14——Appium环境配置问题
2018-05-30 14:49:58本人在mac环境下应用Appium完成android自动测试。1、安装JAVA以及Android Stidio配置环境变量如图:/Users/Macx/Library/Android/sdk/android-sdk-macosx是本人安装SDK的路径...多次点击直至出现开发者模式,打开... -
【Unity】Fly Bird(游戏实战)(1)
2017-09-19 21:34:13(在安卓5.0-7.0版本的系统中多次点击Android Version 就会出现这个游戏,快去试试吧~~ 7.0及以后就没有了~~就做不了示范了 ~~刚开始Unity,也是写的第一个游戏就是做一个Fly Bird.先把用到的音频,图片放在这 ... -
react-native连接华为真机
2019-09-23 18:04:26版本号(多次点击出现开发者模式)提示你已在开发者模式,设置的右上角有个搜索菜单,搜所 开发 ,找到【开发人员选项】2.在【开发人员选项】中设置usb调试选择【开启】选择usb配置设置为【MIDI】效果:编辑器点击ru... -
uni-app [真机运行失败,失败原因:手机上没有信任本计算机的授权,请在手机上信任该授权]
2021-01-13 19:04:03打开手机的"开发者选项”,方法:设置=》关于手机=》多次点击版本号 开启USB调试 连接数据线,下拉点击useb连接方式,选择MIEE 如果运行依然出错,点开电脑的环境变量配置,将电脑环境变量中的ANDRIOD_SDK_HOME删除 ...
-
numpy-1.16.5-cp36-cp36m-win_amd64.whl
-
轻型社会计算方法来制定应急管理政策
-
MyApplication190.zip
-
红黑树删除
-
MySQL Router 实现高可用、负载均衡、读写分离
-
2020天猫国货食品趋势洞察报告.pdf
-
三栏布局的七种方案及优缺点对比总结
-
ps--利用蒙版调整照片的层次结构
-
只有你想不到!产品推广的108种方法!
-
Leecode每日一题-转置矩阵
-
RS、D、JK触发器实验报告.docx
-
i5 11600k和i5 10600k的区别 i5 10600k比i5 11600k差多少
-
基于转动拉曼光谱的多普勒激光雷达灵敏度测量新方法
-
C++MFC开发远程控制软件教程(VS2013)
-
4_6_2归并排序递归140
-
一天学完MySQL数据库
-
图形衬底参数对LED发光效率的影响
-
非线性Tavis-Cummings模型的Berry相位
-
【硬核】一线Python程序员实战经验分享(1)
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin