CN107220134A - Html5和安卓切换时冲突的解决方法 - Google Patents

Html5和安卓切换时冲突的解决方法 Download PDF

Info

Publication number
CN107220134A
CN107220134A CN201710496357.7A CN201710496357A CN107220134A CN 107220134 A CN107220134 A CN 107220134A CN 201710496357 A CN201710496357 A CN 201710496357A CN 107220134 A CN107220134 A CN 107220134A
Authority
CN
China
Prior art keywords
android
webview
coordinate
switching
html5
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201710496357.7A
Other languages
English (en)
Inventor
纪琦华
蒲珂
曾泽基
李哲山
赵永超
胡彬
方宏
蔡忠善
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Science And Technology Co Ltd
Original Assignee
China Science And Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Science And Technology Co Ltd filed Critical China Science And Technology Co Ltd
Priority to CN201710496357.7A priority Critical patent/CN107220134A/zh
Publication of CN107220134A publication Critical patent/CN107220134A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明涉及一种HTML5和安卓切换时冲突的解决方法,包括以下步骤:调用Android的WebView控件的addJavaScriptInterface,建立Javascript对象与Android原生对象的绑定关系;通过H5的JS获取屏幕滑动广告位的控件的坐标和宽度,并传递Java对象;重写WebView控件的onInterceptTouchEvent方法,对WebView的Touch事件进行拦截并判断分发处理。实通过Android提供的addJavaScriptInterface方法实现JS对Java方法的调用以及Touch事件的传递及拦截机制。

Description

HTML5和安卓切换时冲突的解决方法
技术领域
本发明涉及H5和安卓切换技术领域,具体涉及一种H5和安卓切换时冲突的解决方法。
背景技术
在H5与Android进行Hybird应用开发时产生的事件冲突问题,主要原因是Android的WebView控件与切换布局控件(如ViewPager)的Touch(触摸)事件之间的产生冲突,即两种不同的控件不能同时兼容,而这种冲突问题会给用户体验带来很大的不便。
发明内容
本发明的目的在于提出一种H5和安卓切换时冲突的解决方法,该方法提供了一种解决上述冲突的方式,通过Android提供的addJavaScriptInterface方法实现JS对Java方法的调用以及Touch事件的传递及拦截机制来解决。
为实现上述目的,本发明所采用的技术方案是一种H5和安卓切换时冲突的解决方法,包括以下步骤:
S1、调用Android的WebView控件的addJavaScriptInterface,建立Javascript对象与Android原生对象的绑定关系;
S2、通过H5的JS获取屏幕滑动广告位的控件的坐标和宽度,并传递Java对象;
S3、重写WebView控件的onInterceptTouchEvent方法,对WebView的Touch事件进行拦截并判断分发处理。
进一步的,所述S1中具体为,在Android的WebView控件添加addJavascriptInterface方法,在addJavascriptInterface中添加调用注入Java对象的方法,对象注入即通过WebView建立Javascript对象与Android原生对象的绑定关系。
本发明解决方法S2中的具体描述为:获取屏幕滑动广告位的控件的坐标和宽高后,通过JS直接调用Java对象的注入方法,将控件的坐标和宽高传递Java对象。
在进一步的方案中,所述获取屏幕滑动广告位的控件的宽度的具体方法为:
S23、在函数findDimensions()中,使用window.innerHeight和window.innerWidth得到广告位控件的高度和宽度;
S24、通过深入Document内部对body进行检测,获取广告位控件大小。
再进一步的改进中,所述S23之前还包括:
S21、通过H5的JS建立一个表单,包含两个文本框,用于屏幕滑动广告位控件当前的宽度和高度,且其数值会随控件大小的改变而变化;
S22、在的JavaScript代码中,定义了两个变量winWidth和winHeight,用于保存控件的高度值和宽度值;
所述S23中得到控件的高度和宽度后,将高度和宽度保存至两个变量winWidth和winHeight中;所述S24中获取屏幕滑动广告位控件大小后,将其保存至两个变量winWidth和winHeight中。
又进一步的改进方案的补充,所述S24之后还包括:
S25、在函数findDimensions()的最后,通过按名称访问表单元素,结果输出至两个文本框;
S26、在JavaScript代码的最后,调用findDimensions()函数。
本发明对于两个控件的分发机制的改进为:所述S3中,通过在onInterceptTouchEvent方法中判断手势的坐标是否在WebView的滑动广告位控件范围之内,来对WebView的Touch事件进行拦截并判断分发处理。
在一个具体的改进方案中,所述对WebView的Touch事件进行拦截并判断分发处理的具体方法为:
在onInterceptTouchEvent方法判断得手势的坐标在WebView的滑动广告位控件范围之内,则调用ViewPager的requestDisallowInterceptTouchEvent(true)方法,且onInterceptTouchEvent返回值设置为true,阻止ViewPager调用onInterceptTouchEvent拦截,WebView会阻止ViewPager获取Touch事件,并分发WebView的Touch事件;
在onInterceptTouchEvent方法判断得手势的坐标在WebView的滑动广告位控件范围之外,则调用ViewPager的requestDisallowInterceptTouchEvent(false)方法且onInterceptTouchEvent返回值设置为false,阻止WebView的Touch事件而不阻止ViewPager的Touch事件。
其中所述在onInterceptTouchEvent方法判断得手势的坐标的具体方法为:手势坐标通过Touch事件MotionEvent的getAction()方法类型,对用户不同操作的判断结合getRawX()、getRawY()、getX()和get()方法获取坐标。
本发明H5和安卓切换时冲突的解决方法通过Android提供的addJavaScriptInterface方法实现JS对Java方法的调用以及Touch事件的传递及拦截机制来解决。本发明提供了一种在HTML5和安卓切换,滑动广告位有冲突时,有效且正确的实现相应分发,从而提高用户的体验。
附图说明
图1为本发明H5和安卓切换时冲突的解决方法的实施方式的示意图;
图2为本发明H5和安卓切换时冲突的解决方法分发机制的实施方式的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面参考附图对本发明的实施例进行描述。一种H5和安卓切换时冲突的解决方法,所述方法包括下述步骤:
S1、调用Android的WebView控件的addJavaScriptInterface,建立Javascript对象与Android原生对象的绑定关系;
S2、通过H5的JS获取屏幕滑动广告位的控件的坐标和宽度,并传递Java对象;
S3、重写WebView控件的onInterceptTouchEvent方法,对WebView的Touch事件进行拦截并判断分发处理。
本发明通过Android提供的addJavaScriptInterface方法实现JS对Java方法的调用以及Touch事件的传递及拦截机制,来解决Android的WebView控件与切换布局控件(如ViewPager)的Touch(触摸)事件之间的产生冲突。
在一个具体实施例中,本发明H5和安卓切换时冲突的解决方法的实施方式参见图1,其包括下述步骤。
S1、在Android的WebView控件添加addJavascriptInterface方法,在addJavascriptInterface中添加调用注入Java对象的方法,对象注入即通过WebView建立Javascript对象与Android原生对象的绑定关系;
Android中的addJavascriptInterface方法能帮助调用JavaScript函数中的任意活动方式,使用代码完成addJavascriptInterface方法。在WebView注入Java对象的步骤为:
需要说明的是,上述步骤主要是针对Android4.2以后的版本。
S2、通过H5的JS获取屏幕滑动广告位的控件的坐标和宽高,并通过JS直接调用Java对象的注入方法,将控件的坐标和宽高传递Java对象;
通过H5的JS获取屏幕滑动广告位的控件的宽高的具体方法包括:
通过H5的JS建立一个表单,包含两个文本框,用于屏幕滑动广告位控件当前的宽度和高度,且其数值会随控件大小的改变而变化;
在的JavaScript代码中,定义了两个变量winWidth和winHeight,用于保存控件的高度值和宽度值;
在函数findDimensions()中,使用window.innerHeight和window.innerWidth得到广告位控件的高度和宽度,并保存至两个变量winWidth和winHeight中;
通过深入Document内部对body进行检测,获取广告位控件大小,将其保存至两个变量winWidth和winHeight中。
在函数findDimensions()的最后,通过按名称访问表单元素,结果输出至两个文本框;
在JavaScript代码的最后,调用findDimensions()函数。
通过H5的JS获取屏幕滑动广告位的控件的坐标的具体方法则包括:
调用view.getLocationInWindow(location)方法获取在当前广告位窗口内的绝对坐标;
调用view.getLocationOnScreen(location)方法获取在整个屏幕内的绝对坐标;
通过location[0]对应x坐标,location[1]对应y坐标,并在onWindowFocusChanged(boolean hasFocus)回调中获取。
S3、重写WebView控件的onInterceptTouchEvent方法,对WebView的Touch事件进行拦截并判断分发处理。
所述在onInterceptTouchEvent方法判断得手势的坐标的具体方法为:手势坐标通过Touch事件MotionEvent的getAction()方法类型,对用户不同操作的判断结合getRawX()、getRawY()、getX()和get()方法获取坐标。
获取坐标后,判断得手势坐标如果在范围之内,调用ViewPager的requestDisallowInterceptTouchEvent(true)方法且onInterceptTouchEvent返回值设置为true,阻止ViewPager调用onInterceptTouchEvent拦截,WebView会阻止ViewPager获取Touch事件,并分发WebView的Touch事件,实现广告位的滑动而不进行Android页面切换。
如果判断得手势坐标如果在范围之外,则调用ViewPager的requestDisallowInterceptTouchEvent(false)方法且onInterceptTouchEvent返回值设置为false,阻止WebView的Touch事件而不阻止ViewPager的Touch事件,实现Android页面切换
以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该技术方案的保护范围之内。

Claims (10)

1.一种HTML5和安卓切换时冲突的解决方法,其特征在于,包括以下步骤:
S1、调用Android的WebView控件的addJavaScriptInterface,建立Javascript对象与Android原生对象的绑定关系;
S2、通过H5的JS获取屏幕滑动广告位的控件的坐标和宽度,并传递Java对象;
S3、重写WebView控件的onInterceptTouchEvent方法,对WebView的Touch事件进行拦截并判断分发处理。
2.如权利要求1所述的HTML5和安卓切换时冲突的解决方法,其特征在于,所述S1中调用Android的WebView控件的addJavaScriptInterface,建立Javascript对象与Android原生对象的绑定关系的具体为:
在Android的WebView控件添加addJavascriptInterface方法,在addJavascriptInterface中添加调用注入Java对象的方法,对象注入即通过WebView建立Javascript对象与Android原生对象的绑定关系。
3.如权利要求1所述的HTML5和安卓切换时冲突的解决方法,其特征在于,所述S2中获取屏幕滑动广告位的控件的坐标和宽高后,通过JS直接调用Java对象的注入方法,将控件的坐标和宽高传递Java对象。
4.如权利要求3所述的HTML5和安卓切换时冲突的解决方法,其特征在于,所述获取屏幕滑动广告位的控件的宽度的具体方法为:
S23、在函数findDimensions()中,使用window.innerHeight和window.innerWidth得到广告位控件的高度和宽度;
S24、通过深入Document内部对body进行检测,获取广告位控件大小。
5.如权利要求4所述的HTML5和安卓切换时冲突的解决方法,其特征在于,所述S23之前还包括:
S21、通过H5的JS建立一个表单,包含两个文本框,用于屏幕滑动广告位控件当前的宽度和高度,且其数值会随控件大小的改变而变化;
S22、在的JavaScript代码中,定义了两个变量winWidth和winHeight,用于保存控件的高度值和宽度值;
所述S23中得到控件的高度和宽度后,将高度和宽度保存至两个变量winWidth和winHeight中;所述S24中获取屏幕滑动广告位控件大小后,将其保存至两个变量winWidth和winHeight中。
6.如权利要求4所述的HTML5和安卓切换时冲突的解决方法,其特征在于,所述S24之后还包括:
S25、在函数findDimensions()的最后,通过按名称访问表单元素,结果输出至两个文本框;
S26、在JavaScript代码的最后,调用findDimensions()函数。
7.如权利要求4所述的HTML5和安卓切换时冲突的解决方法,其特征在于,所述获取屏幕滑动广告位的空间的坐标的具体方法为:
S27、调用view.getLocationInWindow(location)方法获取在当前广告位窗口内的绝对坐标;
S28.调用view.getLocationOnScreen(location)方法获取在整个屏幕内的绝对坐标;
S29、location对象描述x、y坐标,并在onWindowFocusChanged(boolean hasFocus)回调中获取。
8.如权利要求1所述的HTML5和安卓切换时冲突的解决方法,其特征在于,所述S3中,通过在onInterceptTouchEvent方法中判断手势的坐标是否在WebView的滑动广告位控件范围之内,来对WebView的Touch事件进行拦截并判断分发处理。
9.如权利要求4所述的HTML5和安卓切换时冲突的解决方法,其特征在于,所述对WebView的Touch事件进行拦截并判断分发处理的具体方法为:
在onInterceptTouchEvent方法判断得手势的坐标在WebView的滑动广告位控件范围之内,则调用ViewPager的requestDisallowInterceptTouchEvent(true)方法,且onInterceptTouchEvent返回值设置为true,阻止ViewPager调用onInterceptTouchEvent拦截,WebView会阻止ViewPager获取Touch事件,并分发WebView的Touch事件;
在onInterceptTouchEvent方法判断得手势的坐标在WebView的滑动广告位控件范围之外,则调用ViewPager的requestDisallowInterceptTouchEvent(false)方法且onInterceptTouchEvent返回值设置为false,阻止WebView的Touch事件而不阻止ViewPager的Touch事件。
10.如权利要求9所述的HTML5和安卓切换时冲突的解决方法,其特征在于,所述在onInterceptTouchEvent方法判断得手势的坐标的具体方法为:手势坐标通过Touch事件MotionEvent的getAction()方法类型,对用户不同操作的判断结合getRawX()、getRawY()、getX()和get()方法获取坐标。
CN201710496357.7A 2017-06-26 2017-06-26 Html5和安卓切换时冲突的解决方法 Pending CN107220134A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710496357.7A CN107220134A (zh) 2017-06-26 2017-06-26 Html5和安卓切换时冲突的解决方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710496357.7A CN107220134A (zh) 2017-06-26 2017-06-26 Html5和安卓切换时冲突的解决方法

Publications (1)

Publication Number Publication Date
CN107220134A true CN107220134A (zh) 2017-09-29

Family

ID=59950414

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710496357.7A Pending CN107220134A (zh) 2017-06-26 2017-06-26 Html5和安卓切换时冲突的解决方法

Country Status (1)

Country Link
CN (1) CN107220134A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107908344B (zh) * 2017-11-08 2019-09-10 平安科技(深圳)有限公司 防止界面抖动的方法、装置、设备及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105095160A (zh) * 2015-07-31 2015-11-25 河南大学 一种文档转换阅读方法与系统
US20170075707A1 (en) * 2014-05-05 2017-03-16 Huawei Technologies Co., Ltd. Simulation Desktop Establishment Method and Related Apparatus

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170075707A1 (en) * 2014-05-05 2017-03-16 Huawei Technologies Co., Ltd. Simulation Desktop Establishment Method and Related Apparatus
CN105095160A (zh) * 2015-07-31 2015-11-25 河南大学 一种文档转换阅读方法与系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
LYUHARVEY: ""Viewpager和webview滑动冲突的解决方案"", 《CSDN》 *
无: "《嘉应学院学报(自然科学)》", 31 August 2016 *
老衲法号能吃: ""Viewpager和webview滑动冲突的解决方案"", 《简书》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107908344B (zh) * 2017-11-08 2019-09-10 平安科技(深圳)有限公司 防止界面抖动的方法、装置、设备及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN105812944B (zh) 界面焦点移动控制方法及装置
US20170371844A1 (en) Method, device and terminal for implementing regional screen capture
CN103279345B (zh) 一种对页面元素进行锁定的方法及装置
CN104391636B (zh) 一种截屏方法及装置
CN103543922B (zh) 一种焦点移动方法、系统及智能设备
CN103745733B (zh) 一种视频播放控制方法及视频播放器
CN103577030B (zh) 浏览器窗口界面展现方法及系统
CN104636120A (zh) 一种浏览器的多窗口显示方法及装置
CN101834938A (zh) 一种实现移动终端横竖屏切换的装置及方法
CN102662566A (zh) 屏幕内容放大显示方法及终端
GB2386081A (en) Method and apparatus for coordinating an interactive computer game with a broad-cast television program
CN106095240A (zh) 一种文本框的显示方法及装置
CN106406728A (zh) 移动终端桌面手势的操作方法
CN103455473A (zh) 一种基于html的web表单定义及应用方法
CN103389870B (zh) 一种触摸屏的解锁方法及装置
CN103064592B (zh) 一种可拓展的菜单显示方法
CN107220134A (zh) Html5和安卓切换时冲突的解决方法
CN102043586A (zh) 电子表格中的背景色显示方法和装置
CN103024133A (zh) 触屏待机墙纸显示设置方法及其装置
CN110347325A (zh) 会议一体机防触摸数据透传方法、系统及会议一体机设备
CN103777870A (zh) 带触控屏幕的电子设备的屏幕解锁装置
CN109189301A (zh) 一种屏幕截图的方法及装置
CN103793136A (zh) 移动终端的操作方法和移动终端
CN205647620U (zh) 手机保护壳及手机
CN105807916A (zh) 一种使机器人具备玩ar游戏的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170929

RJ01 Rejection of invention patent application after publication