CN105474160A - 高性能触摸拖放 - Google Patents
高性能触摸拖放 Download PDFInfo
- Publication number
- CN105474160A CN105474160A CN201380077441.5A CN201380077441A CN105474160A CN 105474160 A CN105474160 A CN 105474160A CN 201380077441 A CN201380077441 A CN 201380077441A CN 105474160 A CN105474160 A CN 105474160A
- Authority
- CN
- China
- Prior art keywords
- thread
- dragging
- drag
- input
- manipulation
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/0486—Drag-and-drop
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04842—Selection of displayed objects or displayed text elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04845—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/0485—Scrolling or panning
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
描述了高性能触摸拖放。在实施例中,多线程体系结构被实施为至少包括操纵线程和独立命中测试线程。操纵线程配置为接收与输入相关联的一个或多个消息并且发送与消息相关联的数据到独立命中测试线程。独立命中测试线程配置为执行独立命中测试以确定输入是否命中有资格用于特定动作的元素,并且标识与输入相关联的交互模型。独立命中测试线程还将交互模型的指示发送到操纵线程,以使能操纵线程来检测特定动作是否被触发。
Description
背景技术
持续使具有用户可接合的显示器(诸如,触摸显示器)的设备的设计师面临的挑战之一涉及通过可以利用该设备采用的手势为用户提供增强的功能。这不仅对于具有较大或多个屏幕的设备是如此,而且在具有较小占用面积的设备(诸如,平板电脑,手持设备,较小的多屏幕设备等)的背景中也是如此。
用基于手势的输入的一个挑战是提供使能鼠标输入的功能的web的web平台以使能触摸输入的类似功能的挑战。例如,现今在触摸界面中,轻击一项目以启动该项目是常见的。这使得难以提供二次功能,诸如选择项目的能力。此外,某些挑战与所谓的可平移(pannable)表面(即可以能够被平移并且使其内容移动的表面)共存。例如,可平移表面通常反应于手指拖动并且在用户的手指的方向上移动内容。如果表面包含用户可能想要重新安排的对象,则难以区分用户何时想要平移表面或重新排列内容。
发明内容
本发明内容被提供来介绍以简化形式的一系列概念,以下在具体实施方式中进一步描述该概念。本发明内容即不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
描述了用于高性能触摸拖放的技术。在至少一些实施例中,多线程体系结构被实施为至少包括操纵线程和独立命中测试线程。操纵线程接收与输入相关联的消息,并且发送与消息相关联的数据到独立命中测试线程。独立命中测试线程执行独立命中测试以确定输入是否命中了有资格用于特定动作的元素。独立命中测试线程还标识与输入相关联的交互模型,并且发送交互模型的指示到操纵线程,以使能操纵线程来检测特定动作是否被触发。
在一个或多个实施例中,接收基于与触摸输入相关联的指针消息的一个或多个操纵通知。指针消息配置为发起对页面的元素的拖放操作。将与指针消息相关联的更新与表示页面上的元素的拖动画面相关。一个或多个拖动通知被发送给拖放管理器,以使能拖放管理器来发起鼠标兼容的功能而不必理解触摸输入。
在至少一些实施例中,接收加载页面的请求,并标识页面上的一个或多个可拖动元素。可拖动元素在网页上被呈现到层中,该层与页面上的内容所呈现到的另一个层分离。接收发起在可拖动元素上的拖放操作的输入。响应于被发起的拖放操作,基于可拖动元素呈现拖动画面。
附图说明
参照附图来描述具体实施方式。在附图中,参考数字的(多个)最左边数字标识其中该参考数字首次出现的附图。描述和附图中的不同实例中的相同参考数字的使用可以指示类似或相同的项目。
图1是依据一个或多个实施例的示例实施方式中的环境的图示。
图2是更详细地示出图1的示例实施方式中的系统的图示。
图3是描述依据一个或多个实施例的方法中的步骤的流程图。
图4图示依据一个或多个实施例的示例客户端体系结构。
图5是描述依据一个或多个实施例的方法中的步骤的流程图。
图6是依据一个或多个实施例的示例实施方式的图示。
图7是描述依据一个或多个实施例的方法中的步骤的流程图。
图8图示依据一个或多个实施例的用于接收和处理鼠标和触摸输入的示例体系结构。
图9是描述依据一个或多个实施例的输入变换过程或方法中的步骤的流程图。
图10图示依据一个或多个实施例的示出可操作以采用自动滚动用于触摸输入的示例实施方式的系统。
图11是描述依据一个或多个实施例的方法中的步骤的流程图。
图12图示可以被用来实施本文中所描述的各种实施例的示例计算设备。
具体实施方式
概述
描述用于触摸显示器的高性能拖放操作。在至少一些实施例中,可以对在一个方向上平移或滚动的内容使用交叉滑动手势,以使能附加的动作,诸如内容选择,拖放操作,等等。在至少一些其它实施例中,可以对元素使用按下并保持的手势,以使能内容选择,拖放操作,等等。
典型的web浏览器可以使能拖放功能作为用鼠标来移动、重新排列、或复制元素的手段。大致地,该功能是经由标准化的超文本标记语言5(HTML5)拖放应用编程接口(API)来使能的。然而,这些web浏览器大致地缺乏类似拖放功能用于触摸输入。此外,一些Web浏览器不澄清拖动操作与滚动操作。
各种实施例通过使用交叉滑动手势或按下并保持手势来使能在拖动动作和滚动(例如,平移)动作之间澄清。在至少一些实施例中,独立于并行运行的应用程序或web页面代码来使能粘到您的手指的执行。这在至少一些实施例中经由多线程体系结构来实现,该多线程体系结构配置为在一个线程上操纵拖动画面同时在另一线程上提供输入事件。
在至少一些实施例中,可以大致地通过在触摸操纵期间预分层拖动画面并且也针对拖动画面实施z次序和元素的视觉复制来在手势的开始时同时地创建拖动画面。这些增强功能可以提供从呈现元素到呈现拖动画面的平滑转变。
在一个或多个实施例中,独立自动滚动可以被使能用于在拖动元素的同时滚动区域。自动滚动可以响应于用户拖动在滚动区域的边缘附近的元素而被发起。如果用户拖动元素到距离阈值内的区域中,则可滚动区域可以开始在该边缘方向上自动滚动。在至少一些实施例中,多点触摸交互使用户能够用第一手指拖动元素,并且在拖动期间使用第二手指滚动被拖动的元素背后的页面。
此外,至少一些实施例使能要被拖动的项目而不必进入模式。模式可以被看作是由用户发起的动作,其不必与直接操纵项目有关。例如,可以通过点击特定用户界面按钮,以然后被暴露于能够关于项目或对象执行的功能来进入模式。在所描述的实施例中,模式可以通过在至少一些实例中消除访问拖动功能的用户界面元素而被避免。
在又其它实施例中,使用被设计用于鼠标输入的拖放API的应用程序可以在不具有触摸特定代码的应用程序的情况下自动利用触摸输入工作。本文中所描述的各种实施例可以映射触摸输入事件到通常用于鼠标输入的拖动事件。此外,本文中所描述的实施例可以映射多点触摸输入,这用鼠标大致地是不可能的。
在下面的讨论中,首先描述示例环境,该环境可操作以采用本文中所描述的手势技术。然后描述可以被采用在示例环境中以及在其他环境中的手势和流程的示例图示。相应地,该示例环境不限于执行示例手势并且手势不限于在示例环境中的实施方式。
示例环境
图1是可操作以采用如本文所描述的高性能触摸拖放操作的示例实施方式中的环境100的图示。图示的环境100包括可以以各种方式配置的计算设备102的示例。例如,计算设备102可以配置为传统计算机(例如,台式个人计算机、膝上型计算机、等等)、移动站、娱乐器具、通信地耦接到电视的机顶盒、无线电话、上网本、游戏控制台、手持式设备、等等,如关于图2进一步描述的那样。因此,计算设备102的范围可以从具有大量存储器和处理器资源(例如,个人计算机、游戏控制台)的全资源设备到具有有限的存储器和/或处理资源的低资源设备(例如,传统机顶盒、手持式游戏控制台)。计算设备102还包括软件,其使计算设备102能够执行如以下所描述的一个或多个操作。
计算设备102包括手势模块104和web平台106。手势模块104可操作以提供如本文档中描述的手势功能。手势模块104可以结合任何适合类型的硬件、软件、固件或其组合来实施。在至少一些实施例中,手势模块104以软件来实施,该软件驻留在某种类型的计算机可读存储介质上,以下提供该计算机可读存储介质的示例。
手势模块104表示识别手势(包括可以通过一个或多个手指来执行的拖放手势)并且使对应于该手势的操作被执行的功能。手势可以由模块104以各种不同的方式来识别。例如,手势模块104可以配置为识别触摸输入,诸如如接近计算设备102的显示设备110的用户的手108的手指使用触摸屏功能。特别地,手势模块104可以识别对可滚动内容使用的非滚动手势以使能非滚动动作,诸如内容选择、拖放操作、等等。
例如,在所图示的示例中,平移或滚动方向被示出为在如箭头所指示的垂直方向上。在一个或多个实施例中,可以执行交叉滑动手势,诸如在题为“Cross-slideGesturetoSelectandRearrange”的美国专利申请序号13/196272中描述的那样。例如,可以在与平移或滚动方向不同例如正交的方向上拖动项目或对象来执行交叉滑动手势。不同方向的拖动可以被映射到附加的动作或功能。关于方向是垂直还是水平的,垂直方向在至少在一些实例中可以被视为是大致地平行于显示设备的一侧的方向,并且水平方向可以被视为是通常与垂直方向正交的方向。因此,虽然计算设备的取向可以改变,但是特定交叉滑动手势的垂直性或水平性可保持如相对于并且沿着显示设备定义的标准。
例如,用户的手108的手指被图示为选择112由显示设备110显示的图象114。可以由手势模块104识别图像114的选择112和用户的手106的手指在一个方向上的随后移动,该方向与平移或滚动方向不同,例如大致地相对于平移或滚动方向正交。然后,手势模块104可以通过该移动的性质和特征标识该识别的移动,作为指示“拖放”操作改变图像114的位置到显示器中的一个点,在该点处用户的手108的手指从显示设备110抬离。因此,描述图像的选择的触摸输入的识别、选择点到另一位置的移动以及然后抬起用户的手106的手指可用于标识是要发起拖放操作的手势(例如,拖放手势)。
虽然在以上示例中讨论交叉滑动手势,但是要领会和理解,各种不同类型的手势可以由手势模块104识别,该手势模块104包括(通过示例而非限制)从单一类型的输入识别的手势(例如,触摸手势,诸如先前描述的拖放手势)以及涉及多种类型输入的手势。例如,可以利用模块104来识别单一手指手势和边框手势、多个手指/同一手的手势和边框手势和/或多个手指/不同手的手势和边框手势。
例如,计算设备102可以配置为检测和区分触摸输入(例如,由用户的手108的一个或多个手指提供)和手写笔输入(例如,由手写笔116提供)。可以以各种方式诸如通过检测由用户的手108的手指接触的显示设备110的量与由手写笔116接触的显示设备110的量来执行区分。
因此,手势模块104可以通过手写笔和触摸输入之间的分工的识别和利用以及不同类型的触摸输入来支持各种不同的手势技术。
web平台106是结合web的内容(例如,公共内容)工作的平台。Web平台106可以包括和利用许多不同类型的技术诸如(通过示例而非限制)URL、HTTP、REST、HTML、CSS、JavaScript、DOM、等等。Web平台106也能够用各种数据格式(诸如,XML、JSON等等)来工作。Web平台106可以包括各种web浏览器、web应用程序(即“webapp”)等。web平台106在被执行时允许计算设备从Web服务器取得web内容,诸如网页形式的电子文档(或其他形式的电子文档,诸如文档文件、XML文件、PDF文件、XLS文件等)并将它们显示在显示设备110上。应该指出的是,计算设备102可以是能够显示Web页面/文档并且连接到互联网的任何计算设备。
图2图示示出手势模块104的示例系统,该手势模块104被实施在其中多个设备通过中央计算设备互连的环境中。中央计算设备可以对多个设备是本地的,或者可以与多个设备远程地定位。在一个实施例中,中央计算设备是“云”服务器群,其包括通过网络或互联网或其他手段连接到多个设备的一个或多个服务器计算机。
在一个实施例中,该互连体系结构使能跨多个设备递送的功能,以向多个设备的用户提供共同和无缝的体验。多个设备中的每一个可能有不同的物理要求和能力,并且中央计算设备使用平台,该平台用于使能针对设备定制并且也对所有设备共同的体验到设备的递送。在一个实施例中,创建目标设备的“类”,并且针对通用类的设备定制体验。设备的类可以通过设备的物理特征或使用或其它共同特性来定义。例如,如先前所描述的那样,计算设备102可能以各种不同的方式诸如针对手机202、计算机204、和电视206用途来配置。这些配置中的每一个都有大致地对应的屏幕大小,并且因此,计算设备102可以配置为该示例系统200中的这些设备类中的一个。例如,计算设备102可以假定设备的移动202类,其包括移动电话、音乐播放器、游戏设备、等等。计算设备102也可以假定设备的计算机204类,其包括个人计算机、笔记本计算机、上网本、平板电脑、等等。电视206配置包括例如涉及在休闲的环境中的显示器的设备(例如电视机、机顶盒、游戏机、等等)的配置。因此,本文中所描述的技术可以通过计算设备102的这些各种配置来支持,并且不限于以下部分中所描述的特定示例。
云208被图示为包括用于web服务212的平台210。平台210抽象化硬件(例如,服务器)的基本功能和云208的软件资源,并且因此可以充当“云操作系统”。例如,平台210可以抽象化连接计算设备102与其他计算设备的资源。平台210还可以用于抽象化资源的缩放以提供对经由平台210实施的web服务212遇到的需求的对应规模水平。也设想各种其他示例,诸如服务器群中的服务器的负载平衡,保护免于恶意方(例如,垃圾邮件、病毒和其他恶意软件)等等。
因此,云208被包括作为涉及经由互联网或其他网络变得由计算设备102可用的软件和硬件资源的策略的部分。例如,在计算设备102上以及经由支持web服务212的平台210可以部分地实施手势模块104。
例如,由手势模块支持的手势技术可以使用移动配置202中的触摸屏功能,计算机204的配置的轨迹板功能来检测,通过作为不涉及与特定输入设备接触的自然用户界面(NUI)的支持的一部分的摄像机等等来检测。进一步,用于检测和识别输入来标识特定手势的操作的性能可以诸如通过计算设备102和/或云208的平台210支持的web服务212而分布在整个系统200。
大致地,本文中描述的任何功能可以使用软件、固件,硬件(例如,固定逻辑电路)、手动处理、或这些实施方式的组合来实施。如本文中所使用的术语“模块”、“功能”和“逻辑”大致地表示软件、固件、硬件或其组合。在软件实施方式的情况下,模块、功能或逻辑表示当在处理器(例如,一个或多个CPU)上执行或由该处理器执行时执行指定任务的程序代码。程序代码可以被存储在一个或多个计算机可读存储器设备中。以下描述的手势技术的特征是平台无关的,从而意味着该技术可被实施在具有各种处理器的各种商用计算平台上。
例如,计算设备还可以包括使计算设备的虚拟机或硬件执行操作的实体(例如,软件),例如,处理器、功能块、等等。例如,计算设备可以包括可以配置为维持该使所述计算设备并且更具体是计算设备的操作系统和相关联的硬件执行操作的指令的计算机可读介质。因此,指令运行以配置操作系统和相关的硬件来执行操作,并以这种方式导致操作系统和相关的硬件的变换以执行功能。该指令可由计算机可读介质通过各种不同的配置提供到计算设备。
一个这样的配置的计算机可读介质是信号承载介质,并且因此配置为诸如经由网络传输指令(例如,作为载波)到计算设备。计算机可读介质也可以配置为计算机可读存储介质,并且因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪速存储器、硬盘存储器和其他存储器设备,其可能使用磁性、光学和其他技术来存储指令和其他数据。
在接下来的讨论中,各部分描述包括重新安排手势的示例交叉滑动和按下并保持手势。题为“Method/GestureforDisambiguatingTouchPanandTouchDrag”的部分描述了拖放手势,该拖放手势可以在不去除依据一个或多个示例的平移或滚动的能力的情况下来执行。接下来,题为“Multi-ThreadedArchitecture”的部分描述了一种体系结构,其依据一个或多个实施例允许在一个线程上操纵画面同时在另一线程上提供输入事件。在此之后,题为“Pre-layering”的部分描述了依据一个或多个实施例在发起拖动操作时,可如何几乎立即拖动可拖动元素的视觉表示。接下来,题为“Method/GestureforIndependentAutomaticScrolling”的部分描述了依据一个或多个实施例如何在拖动靠近可滚动区域的边缘的元素时触发滚动。在此之后,题为“SmoothTransitionsofZ-Order”的部分描述依据一个或多个实施例如何响应于手势被触发来为用户产生拖动画面以在周围拖动。接下来,题为“MappingofTouchInputtoMouse-IntendedDragDropAPIs”的部分描述了其中使用为鼠标输入而设计的拖放API的应用程序可以依据一个或多个实施例自动工作用于触摸输入的实施例。最后,题为“ExampleDevice”的部分描述了可以用于实施一个或多个实施例的示例设备的方面。
澄清触摸平移和触摸拖动的方法/手势
经由web浏览器提供的传统拖放功能大致地基于基本拖放事件并且通常被设计用于结合鼠标消息的鼠标输入。拖放功能在使用指针消息而不是鼠标消息的触摸输入环境中可能不正确地运行。
为了在平移、选择和重新排列(拖放)之间澄清,各种触摸输入可以被利用。在一个实施例中,可以通过触摸输入,诸如交叉滑动手势或按下并保持手势发起拖动操作。按下并保持手势可以通过用户按在使能拖动的元素上并且保持手势稳定持续超过拖动阈值的持续时间来执行。可以利用任何适合的拖动阈值。响应于超过拖动阈值,拖放操作被触发,新的拖动画面被产生,并且用户可以自由地拖动拖动画面到页面上的新位置。
在至少一些实施例中,拖动操作可能由交叉滑动手势发起,如以上描述的那样。例如,web页面或应用程序可以限制平移到单一轴和允许在与平移轴不同(例如正交)的轴上拖动。交叉滑动手势可以通过用户在不同于平移轴的轴上对可拖动元素滑动手指来执行。交叉滑动手势可以发起至少两个不同的功能之一,这取决于是否该手指滑动超过距离阈值。可以利用任何适合的距离阈值。通过示例而非限制,可以使用约2.7mm的阈值距离来发起拖放操作。另一方面,如果手指滑动不超过距离阈值,则可以执行另一功能,诸如可拖动元素的选择。
然而,一些web浏览器和应用程序大致地提供垂直方向上的溢出以及水平方向或者基本上正交于平移方向的方向上的向前/向后导航平移。这提出了关于在元素上滑动手指时是否应发生拖动操作还是平移操作的冲突。作为示例,考虑提供用于平移文件列表的垂直滑动和用于触发浏览器的向前/向后导航的水平滑动的web站点。该web站点可以提出针对典型交叉滑动手势的挑战,因为在垂直或水平方向上的滑动手势将分别发起平移操作或向前/向后导航,而不是选择并拖动元素的操作。为了克服这种挑战,web站点可以利用如上文所述的按下并保持手势而不是交叉滑动手势,用于选择元素。
在一个实施例中,可以向用户提供一个视觉指示,以指示已成功发起拖放操作并且用户现在可以自由地拖动该元素。例如,元素可以“弹出”在页面中,并随着用户的手指在页面附近移动而跟从用户的手指,以给出该元素正“粘”到用户的手指的外观。可替代地或另外,该元素可能淡出并且然后在用户的手指下逐渐消失。以这种方式,通知用户拖动操作而不是平移或选择操作被执行。
在至少一些实施例中,一旦已发起拖放操作并且用户能够用第一手指拖动元素,然后用户就可以使用一个或多个附加手指或其他触摸输入设备来发起二次操作。例如,在使用第一手指对可拖动元素超过拖动阈值后,第二手指可以命中测试可滚动元素以发起平移,而第一手指继续拖动。因此,一旦拖动阈值已经被实现,第二接触能够与其他视口进行交互,好像拖动不发生那样,并且因此避免中断拖动操作。作为示例,考虑用户希望将元素从页面上的一个位置(诸如,在文档的顶部附近)拖动到当前未被显示的页面上的另一位置(诸如,在文档的底部附近)。在该特定示例中,用户可以使用按下并保持手势或交叉滑动手势来发起拖放操作以将元素“粘”到用户的手指,并且然后使用第二手指来平移页面到其中用户可以放下该元素的另一位置。
现在考虑图3,图3是描述依据一个或多个实施例的方法中的步骤的流程图。该方法可以结合任何合适的硬件、软件、固件、或其组合来实施。在至少一些实施例中,可以通过适当地配置的系统诸如包括独立命中测试线程的系统来实施该方法。
步骤300接收与使能拖动的元素有关的触摸输入。在至少一些实施例中,触摸输入包含交叉滑动手势或按下并保持手势,如以上描述的那样。步骤302确定关于可拖动元素接收的输入的手势类型。如果手势类型被确定为对可拖动元素的交叉滑动手势,则步骤304确定交叉滑动手势是否沿拖动轴。可以利用任何适合的拖动阈值。在至少一个实施例中,拖动轴是沿与平移或滚动方向正交的方向。如果交叉滑动手势不是沿着拖动轴,则步骤306发起平移操作。另一方面,如果交叉滑动手势包括沿拖动轴的手势,则步骤308确定是否已超过距离阈值。可以利用任何合适距离阈值,诸如用户的手指沿着拖动轴对可拖动元素滑动的距离。在一个或多个实施例中,可以使用约2.7mm的阈值距离来发起拖放操作。
如果不超过距离阈值,则步骤310选择元素。另一方面,如果手指滑动已经超过了距离阈值,则步骤312发起拖放操作。在至少一个实施例中,该元素“粘”到用户的手指并且用户可以将元素拖动到新的位置。
返回到步骤302,如果触摸输入的手势类型被确定为按下并保持手势,则步骤314确定是否已超过拖动阈值。可以利用任何适合的拖动阈值。在一个实施例中,拖动阈值可以包括将按下并保持手势保持稳定在该元素上的预定时间段。如果不超过拖动阈值,则步骤310选择元素。例如,用户可能在超过拖动阈值之前停止与元素接触。另一方面,如果超出拖动阈值,使得用户将按下并保持手势维持稳定持续超过拖动阈值的持续时间,则步骤312发起拖放操作,如以上描述的那样。
一旦发起拖放操作,步骤316接收与使能滚动的元素相关的附加触摸输入。在一个或多个实施例中,与执行对使能拖动的元素的拖放操作并行地接收附加触摸输入。例如,当用户正在用第一手指拖动元素时,用户可以对使能滚动的元素使用第二手指以平移被拖动的元素下方的页面。响应于接收关于使能滚动的元素的附加触摸输入,步骤318发起平移操作。可以利用任何适合的平移操作。在实施例中,发起平移操作以与使能拖动的元素被拖动的并发地平移页面。
已经考虑以上描述的澄清技术后,现在考虑依据一个或多个实施例的多线程体系结构的讨论。
多线程体系结构
使用传统技术,诸如单线程体系结构,通过web站点和应用程序的密集处理可能影响在元素被拖动时维持元素在用户的手指下的能力。在一个或多个实施例中,多线程体系结构被采用来提供应用程序代码与可拖动元素的操纵之间的独立性。在操作中,一个独立命中测试组件提供了命中测试线程,其与主线程例如用户界面线程分离。独立命中测试线程被用于对减轻主线程上的命中测试的影响的web内容的命中测试。使用单独线程用于命中测试可以允许很快确定目标。在其中通过单独线程(诸如,可以用于触摸操纵诸如平移和拖放操作的操纵线程)处理适当响应的情况下,操纵可以在不阻塞主线程的情况下发生。这导致在各种场景下即使在低端硬件上一贯快速的响应时间。在至少一些实施例中,操纵线程和独立命中测试线程可以是同一线程,同时与UI线程分离并独立于UI线程。
现在考虑图4,图4图示依据一个或多个实施例的大致地以400的示例客户端体系结构。在该示例中,三个不同的线程以402、404和406被图示。用户界面线程402构成了主线程,该主线程配置为容纳webapp或web站点的代码的执行,包括暴露拖放功能的事件和其他API。独立命中测试(IHT)线程404构成利用数据结构的线程,该数据结构表示页面上的可操纵元素,包括可拖动元素。操纵线程406构成下述线程:该线程配置为接受针对操作系统的触摸输入,并且基于IHT线程提供的操纵配置来操纵页面元素被呈现到的“视口”。
在一个或多个实施例中,独立命中测试可以操作如下。独立命中测试线程404知晓所显示的页面上的独立和从属的区域。“独立区域”是不必利用主线程用于命中测试的web内容的区域。独立区域通常包括通常由用户平移或缩放的那些区域。“从属区域”是利用主线程(即,用户界面线程)用于命中测试的web内容的区域。从属区域可以与输入或“命中”相关联,该输入或“命中”在控件诸如<inputtype=“range”>上发生,在该控件中与页面的交互并不触发操纵。其他从属区域可以包括(通过示例而非限制)与选择句柄、装饰器、滚动条和用于视频和音频内容的控件相关联的那些区域。这样的从属区域还可以包括无窗口的ActiveX控件,在该控件中第三方代码的意图是未知的。
当用户通过例如点击特定元素而引起鼠标输入408时,鼠标输入408在UI线程402处被接收和处理。然而,当用户引起触摸输入410时,触摸输入410重定向到操纵线程406,其是与UI线程402分离的线程,如以上描述的那样。在至少一些实施例中,操纵线程406充当或管理被注册以接收与各种类型的触摸输入相关联的消息的委托线程。操纵线程406接收触摸输入消息和在用户界面线程402前面更新。IHT线程404与操纵线程406一起注册以接收来自操纵线程406的输入消息。当触摸输入410被接收到时,操纵线程406接收关联的消息,并将同步通知发送到IHT线程404。IHT线程404接收消息并使用在此包含的数据以走过关联的显示树来执行命中测试。可以走过整个显示树或审视的遍历可以发生。如果触摸输入关于独立区域发生,则IHT线程404调用操纵线程406,以通知操纵线程406其可以发起平移。在至少一些实施例中,如果触摸输入关于从属区域发生,则操纵线程406重新分配输入消息到用户界面线程402以用于通过充分命中测试的方式处理。重新分配输入消息到用户界面线程402承载有其效率,因为消息被保存在相同的队列或位置中,直到重新分配发生,从而阻止消息在队列中移动。不经受基于独立命中测试的处理的从属区域包括(通过示例而非限制)对应于包括以下元素的元素的那些区域:滑块控件,视频/音频回放和音量滑块,ActiveX控件,滚动条,文本选择夹持器(和其他装饰器),和设置为溢出的页面的元素。
在至少一些实施例中,在执行独立命中测试后或在操纵的发起期间,将引起独立命中测试的输入消息转发到用户界面线程402用于正常处理。正常处理与基本交互(诸如(通过示例而非限制)可以将各种样式应用于是输入主题的元素的处理)相关联。在这些实例中,将输入消息转发到用户界面线程402不阻断由操纵线程406执行的操纵。
在操作中,诸如浏览器或web应用程序宿主的web平台106可以暴露被配置用于拖放功能的一个或多个API。这些API可以被暴露到UI线程402中的web站点或应用程序。通过这些API,webapp可以定义是拖动源和放下目标的元素,以及在拖放操作中传递的任何数据。当元素被指定为可拖动时,由IHT线程404处理该元素。在暴露两种交互模型来用触摸输入(例如,按下并保持和交叉滑动手势)发起拖放操作的实施例中,交互模型也通过IHT线程404处理。
现在考虑图5,图5是描述依据一个或多个实施例的方法中的步骤的流程图。该方法可以结合任何合适的硬件,软件,固件,或其组合来实施。在至少一些实施例中,可以通过适合地配置的系统诸如包括独立命中测试线程的系统来实施该方法。在图示的示例中,所描述的方法的各个方面出现在各自的列中,该列由执行特定操作的线程(例如“UI线程、“IHT线程”、和“操纵线程”)指定。
步骤500在操纵线程处接收与输入相关联的输入消息。在至少一些实施例中,输入包括触摸输入。然而,其他类型的输入可以被接收而不背离要求保护的主题的精神和范围。在至少一些实施例中,输入消息由操纵线程接收并被放置到队列中。步骤502将与输入消息相关联的数据发送到独立命中测试(IHT)线程。在一个实施例中,数据包括新的触摸输入的一个或多个位置。响应于IHT线程接收到输入消息,步骤504执行独立命中测试以确定输入是否已经命中可拖动元素。在该示例中,IHT线程通过查询元素的状态确定元素的拖动资格,该状态可以从与页面相关联的HTML中读取。元素的状态提供元素是否被使能用于特定操作的指示。通过示例而非限制,状态可以指示拖动、平移、或缩放能力中的一个或多个被使能用于特定元素或视口。
响应于确定输入已经命中可拖动元素,步骤506在IHT线程处标识被配置用于可拖动元素的交互模型。交互模型定义了哪种类型交互正在被输入发起。不同类型的交互模型可以包括(通过示例而非限制)按下并保持交互、交叉滑动交互、等等。步骤508发送交互模型的指示到操纵线程。响应于接收到交互模型的指示,操纵线程在步骤510处检测到拖动操作被触发。在一个或多个实施例中,操纵线程可以使用系统手势识别组件来基于指示的交互模式检测拖动操作是否被触发。这些手势识别组件可以配置为检测特定手势诸如按下并保持手势或交叉滑动手势,其可操作以基于拖动阈值来触发拖动操作,如以上和以下描述的那样。如果拖动操作被触发,步骤512发送针对可拖动元素的更新到UI线程。在实施例中,在拖动操作期间也将更新发送到UI线程。通过示例而非限制,更新可以包括对可拖动元素的一个或多个位置的更新。基于更新,步骤514呈现用于显示的可拖动元素的视觉表示。
根据以上描述的体系结构,独立操纵连同从属拖动处理一起被提供。例如,当拖动预览独立于UI线程402正被移动在用户的手指下周围时,拖动操作的处理依赖于UI线程402,因为IHT线程404可以发送拖动消息到UI线程402用于处理。
已经考虑以上描述的多线程技术和与其使用的技术后,现在考虑依据一个或多个实施例的预分层的讨论。
预分层
用于拖动元素的传统技术可能产生元素的可拖动表示,其视觉上从该元素改变以提供元素被拖动的视觉提示。然而,在一些实例中,从元素到元素的视觉上改变的可拖动表示的转变能够产生震动或抖动的影响,从而导致不平滑的转变。为了克服这个挑战,可以提供与被选择用于拖动的元素相同的视觉表示的拖动画面。例如考虑图6,图6是依据一个或多个实施例的示例实施方式的图示。图6的上部分600图示用于产生所选元素的可拖动表示的传统技术。例如,元素602已由用户选择用于拖动,并且可拖动表示604被产生以向用户指示元素602正被拖动。然而,可拖动表示604是元素602的视觉上改变的版本。可拖动表示604可以以各种方式在视觉上改变。在该示例中,可拖动表示604从元素602在大小、不透明度、以及内容方面被改变。
图6的下部606图示了拖动画面608,该拖动画面608用匹配被选择用于拖动的可拖动元素610的原始视觉特性的视觉特性来呈现。这样的视觉特性可以包含(通过示例而非限制)大小、形状、颜色、不透明度、亮度、内容、等等。
在至少一些实施例中,候选用于拖动的元素在用户交互之前(诸如当加载页面时,当页面被加载后创建新的元素时,当页面被加载后非可拖动元素被改变为变成可拖动时,等等)被呈现在分离的视觉层中。候选用于拖动的元素可以包括页面上的元素,该元素被标识为可拖动元素,诸如能够经由拖放操作被拖动的元素。这些可拖动元素可以包括声明属性,其将元素标识为“可拖动”用于按下并保持手势、交叉滑动手势、或发起拖放操作的其他触摸输入。以这种方式提供声明属性允许运行时环境提供多线程拖放体验,其利用现有的操纵技术,以确保针对用户的快速和流畅体验。
通过预分层可拖动元素,Web平台106可以按需求而没有用户发起拖动操作应有的延迟来呈现元素到单独可拖动视口中,从而创建从页面中的元素到被用户移动的拖动画面的无缝转变。此外,预分层可拖动元素可能减少通常通过在发起拖动操作的时间创建拖动画面引起的滞后时间。在一个实施例中,拖动画面可以包括在发起拖放操作时的元素的静态表示。此外或可替代地,拖动画面可以包括动态表示,动态表示在元素被拖动时继续被呈现。动态表示可以通过例如在元素被拖动时接收到元素的拖动画面的动态视觉更新来维持。
现在考虑图7,图7是描述依据一个或多个实施例的方法中的步骤的流程图。该方法可以结合任何合适的硬件、软件、固件、或其组合来实施。在至少一些实施例中,方法可以由形式为被体现在某一类型的计算机可读存储介质上的计算机可读指令的软件执行,该方法可以在一个或多个处理器的影响下被执行。可以执行要被描述的功能的软件组件的非限制示例仅在图6以上被描述,包含以上描述的手势模块104。
步骤700接收加载页面的请求。可以以任何适合方式执行该步骤。例如,该请求可以包含导航到web页面或应用程序的导航请求。步骤702标识页面上的可拖动元素。可以利用任何适合的标识技术。在至少一些实施例中,元素可以包含声明属性,其标识元素是使能拖动的。声明属性还可以指示元素对于特定手势(诸如按下并保持手势或交叉滑动手势)可拖动,如以上描述的那样。
步骤704将页面上的可拖动元素呈现到与页面上的内容分离的层。可以以任何适合方式执行该步骤。在一个或多个实施例中,可拖动元素被预分层为视觉层,该视觉层与其中呈现页面上的其他内容的另一层分离。步骤706接收发起拖放操作的输入。可以利用任何适当配置的输入。在至少一些实施例中,输入可以包含触摸输入,诸如按下并保持手势或交叉滑动手势,如以上描述的那样。响应于拖放操作被发起,步骤708基于可拖动元素呈现拖动画面。可以以任何适合方式执行该步骤。在一个或多个实施例中,拖动画面在视觉上匹配可拖动元素。因为可拖动元素被预分层为单独层,所以拖动画面可以按需求来生成和呈现而没有延迟,从而创建从元素到拖动画面的无缝转变。
已经考虑用于预分层可拖动元素的技术后,现在考虑依据一个或多个实施例映射触摸输入到旨在鼠标的拖放API的讨论。
触摸输入到旨在鼠标拖放API的映射
图8图示用于接收和处理鼠标和触摸输入的示例体系结构。例如,接收到输入802,并且如果输入引起产生鼠标消息,则鼠标消息被发送到处理组件804以确定鼠标消息是否被配置为发起拖放操作。可以利用任何适当配置的处理组件。在至少一些实施例中,处理组件可以包含对象链接和嵌入(OLE)组件。可以利用其他组件,而不偏离要求保护的主题的精神和范围。基于确定鼠标消息是拖动输入,处理组件804发送一个或多个拖动通知到拖放管理器806。拖放管理器806然后基于拖动通知确定该元素是可拖动元素,并发起对可拖动元素的拖放操作。
然而,如果接收到的输入802是引起产生指针消息的触摸输入,则指针消息被发送到直接操纵组件810以确定指针消息是否配置为发起拖放操作。基于确定指针消息是拖动输入,直接操纵组件810将操纵通知发送到触摸拖/放助手812。在至少一些实施例中,触摸拖/放助手812配置为使来自直接操纵组件810的更新与表示元素的拖动画面相关。触摸拖/放助手812进一步配置为将拖动通知发送到拖放管理器806。这些拖动通知是通常由处理组件804提供用于基于鼠标的拖放操作的拖动通知的仿真,从而促进针对触摸用户的向后兼容性以在针对鼠标设计的web站点/app中使用拖放功能。
在一个或多个实施例中,触摸拖/放助手812将触摸输入映射到鼠标兼容的功能用于拖放管理器806,使得拖放管理器806不必理解触摸输入。相反,拖放管理器806简单地发起与拖动通知相关联的功能,而无论拖动通知是由触摸拖/放助手812从触摸输入生成还是由处理组件804从鼠标输入生成。
现在考虑图9,图9是描述依据一个或多个实施例的输入变换过程或方法中的步骤的流程图。该方法可以结合任何合适的硬件、软件、固件、或其组合来实施。在至少一些实施例中,方法可以由形式为被体现在某一类型的计算机可读存储介质上的计算机可读指令的软件执行,该方法可以在一个或多个处理器的影响下被执行。可以执行要被描述的功能的软件组件的非限制示例仅在以上在图8被描述,包含以上描述的手势模块104。
步骤900接收输入。可以以任何适合方式执行该步骤。例如,可以关于出现在显示设备上的元素接收输入。任何适合类型的元素可以是输入的主体。步骤902确定输入是否包括鼠标输入或其他类型的输入,例如触摸输入。可以利用任何适合类型的确定场景。如果输入被确定为鼠标输入,则步骤904处理鼠标输入,以提供一个或多个拖动通知,其包括与元素相关联的数据。这样的数据可以包括(通过示例而非限制)拖动状态和数据传递信息。步骤906根据拖动通知确定拖动资格。
如果元素是有资格用于拖动,则步骤908发起并执行拖动操作。如果另一方面,元素没有资格用于拖动,则可以发起和执行各种其他操作之一,诸如例如,元素的选择或链接的激活。在其他实施例中,如果该元素没有资格用于拖动,则任何事情都不会发生。
{0083]如果输入不是鼠标输入,并且步骤902确定输入是某一其他类型的输入(诸如触摸输入),则步骤910生成与触摸输入相关联的操纵通知。可以以任何适合方式执行该步骤。例如,可以生成操纵通知,其包括与元素的操纵(诸如元素到新位置的移动)相关联的数据。步骤912使用操纵通知来处理触摸输入以提供一个或更多拖动通知。这些拖动通知包括与元素关联的数据,该元素是触摸输入的主体。这样的数据可以包括(通过示例而非限制)拖动状态和数据传递信息。然后使用基于触摸输入的拖动通知(类似于针对鼠标输入的拖动通知)来在步骤906中确定元素的拖动资格。步骤908然后基于该元素有资格用于拖动而发起拖动操作。
已经考虑以上描述的映射技术后,现在考虑依据一个或多个实施例的独立自动滚动的讨论。
用于独立自动滚动的方法/手势
图10图示示出可操作来采用自动滚动用于触摸输入的示例实施方式的系统1000。当用触摸输入拖动元素时,用户可能旨在将元素放在不是当前可见的目标上。例如,目标位置可能被隐藏在可滚动区域中的幕后。在至少一些实施例中,用户可以通过靠近可滚动区域的边缘拖动元素来触发可滚动区域的自动滚动。例如,用户可以拖动诸如图10的阴影区1002的区域内的元素来触发自动滚动。可以以任何适合方式执行自动滚动。例如,可以独立于应用程序的运行代码来触发并且执行滚动。在至少一些其它实施例中,消息可以被发送到应用程序,以命令应用程序来发起滚动。然而,应用程序可能需要对这样的消息作出响应,并自身执行滚动,这在应用程序已处理其他操作的情况下可能引入滞后。
继续进行其中放下目标位于可滚动容器内并且不是当前可见的以上示例,以上关于图4描述的IHT线程404可以配置为认知除了可拖动视口以外的可滚动视口。在该特定示例中,操纵线程406可以提供针对拖动画面的更新给IHT线程404。IHT线程404然后可以命令操纵线程406滚动拖动画面下方的视口。为了使用户能够揭示隐藏的放下目标,可以在页面上的一个或多个可滚动视口的周围建立距离阈值1004。可以利用任何适合的距离阈值。例如,距离阈值1004可以包含针对典型手指的大小提供足够空间的足够距离。在至少一些实施例中,距离阈值1004可以包括大约100个像素。
当拖动画面进入距离阈值1004内的可滚动视口的区域(诸如自动滚动区域)时,可滚动视口开始在该边缘方向上滚动。进一步,为了在跨应用程序进行拖动时避免意外触发滚动区域,可以建立最小时间阈值,在该时间阈值内可拖动元素在自动滚动区域中逗留。可以利用任何适合的时间阈值。在至少一些实施例中,时间阈值可以包括200-500毫秒的范围内的值。
此外,可以响应于用户拖动元素远离边缘并且到自动滚动区域之外而取消可滚动区域的自动滚动。例如,在执行自动滚动期间,目标放下可以被滚动到视图中。为了避免通过目标下降的滚动,用户可以将元素拖动远离可滚动区域的边缘,诸如向屏幕的中心。通过拖动元素到针对可滚动区域的距离阈值外来终止自动滚动,并且然后用户可以在目标放下处放下该元素。
已经考虑用于独立自动滚动的以上描述的技术后,现在考虑依据一个或多个实施例的z次序转变的讨论。
Z-次序的平滑转变
当拖动手势被触发时,表示元素的拖动画面被产生供用户重新排列。拖动画面可以基本上类似原始元素的外观。进一步,拖动画面可以被呈现在顶层或z-索引处,以防止拖动画面被页面上的其他元素削减。在传统的技术中,从元素到拖动画面的转变由于在呈现中的瞬时缺陷通常对用户显而易见,因为原始元素迅速回到其原始位置并且新的画面出现在用户的手指下。然而,使用高性能触摸拖放,从元素到拖动画面的转变是平滑的。
为了确保可拖动的元素在拖动期间不被阻挡,在拖放操作被发起以维持顶层上的可拖动元素的时间实施z索引。在至少一些实施例中,可以应用转变动画,该转变动画在其原始z索引中使元素淡出,并且在新的z索引处使拖动画面淡入以减少视觉“弹出”,否则如果元素最初被阻挡,视觉“弹出”将发生。可替代地或此外,转变动画可以持续比两个垂直消隐间隔更长,以便隐藏该缺陷。
现在考虑图11,图11是描述依据一个或多个实施例的方法中的步骤的流程图。该方法可以结合任何合适的硬件、软件、固件、或其组合来实施。在至少一些实施例中,方法可以由形式为被体现在某一类型的计算机可读存储介质上的计算机可读指令的软件执行,该方法可以在一个或多个处理器的影响下被执行。可以执行要被描述的功能的软件组件的非限制示例仅在以上在图1被描述,包含以上描述的手势模块104。
步骤1100发起对可拖动元素的拖放操作。可以以任何适合方式执行该步骤。例如,可以通过与可拖动元素进行交互的触摸输入,诸如以上描述的按下并保持或交叉滑动手势来发起拖放操作。步骤1102实施z索引以维持可拖动元素在顶层上。可以利用任何适合类型的实施场景。可拖动元素的z索引的实施可以防止在可拖动元素被拖动时拖动画面被页面上的其他元素削减。步骤1104将转变动画应用到从可拖动元素的表示到拖动画面的转变。可以利用任何适合的转变,诸如以上描述的那些转变。
已经描述用于高性能触摸拖放的方法和系统后,现在考虑可以用于实施以上描述的一个或多个实施例的示例设备。
示例设备
图12图示能够被实施为如参照图1和2描述的任何类型的计算设备以实施本文中描述的技术的实施例的示例设备1200的各种组件。设备1200包括通信设备1202,其使能设备数据1204(例如,接收到的数据、正在接收的数据、计划用于广播的数据、数据的数据分组等)的有线和/或无线通信。设备数据1204或其他设备内容可以包括设备的配置设置,存储在设备上的媒体内容和/或与设备的用户相关联的信息。存储在设备1200上的媒体内容可以包括任何类型的音频、视频和/或图像数据。设备1200包括经由其可以接收任何类型的数据、媒体内容、和/或输入的一个或多个数据输入1206,诸如用户可选择的输入、消息、音乐、电视媒体内容、录制的视频内容、以及从任何内容和/或数据源接收的任何其他类型的音频、视频、和/或图像数据。
设备1200还包括通信接口1208,其可以被实施为串行和/或并行接口、无线接口、任何类型的网络接口、调制解调器、以及任何其它类型的通信接口中的任何一个或多个。通信接口1208提供设备1200与通信网络之间的连接和/或通信链路,通过该通信网络其他电子设备、计算和通信设备与设备1200进行传达数据。
设备1200包括一个或多个处理器1210(例如,微处理器、控制器等中的任意),其处理各种计算机可执行指令来控制设备1200的操作并且实施本文中描述的技术的实施例。可替代地或此外,可以以硬件、固件或固定逻辑电路的任何一种或组合来实施设备1200,该固定逻辑电路结合大致地以1212来标识的处理和控制电路而被实施。虽然未被示出,但是设备1200可以包括系统总线或数据传递系统,其耦接该设备内的各种组件。系统总线可以包括不同的总线结构的任何一个或组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或处理器或利用各种总线体系结构的本地总线。
设备1200还包括计算机可读介质1214,诸如一个或多个存储器组件,其示例包括随机存取存储器(RAM)、非易失性存储器(例如,只读存储器(ROM)、闪速存储器、EPROM、EEPROM等中的任何一个或多个)、和磁盘存储设备。磁盘存储设备可被实施为任何类型的磁性或光学存储设备,诸如硬盘驱动器、可记录和/或可重写光盘(CD)、任何类型的数字通用光盘(DVD)等。设备1200还可以包括大容量存储介质设备1216。
计算机可读介质1214提供数据存储机制来存储设备数据1204,以及各种设备应用程序1218和与设备1200的操作方面有关的任何其他类型的信息和/或数据。例如,操作系统1220可以用计算机可读介质1214被维持为计算机应用程序并且被执行在处理器1210上。设备应用程序1218可以包含设备管理器(例如,控制应用程序、软件应用程序、信号处理和控制模块,对特定设备是原生的代码、针对特定设备的硬件抽象层等)。设备应用程序1218还包括实施本文中描述的技术的实施例的任何系统组件或模块。在该示例中,设备应用程序1218包括接口应用程序1222和手势捕获驱动程序1224,其被示出为软件模块和/或计算机应用程序。手势捕获驱动程序1224表示软件,该软件用来提供与配置为捕获手势的设备(诸如触摸屏、轨迹板、相机、等等)的接口。可替代或此外,接口应用程序1222和手势捕获驱动程序1224可以被实施为硬件、软件、固件或其任何组合。此外,计算机可读介质1214可以包括如以上描述的那样运行的web平台1225。
设备1200还包括音频和/或视频输入输出系统1226,其提供音频数据到音频系统1228和/或提供视频数据到显示系统1230。音频系统1228和/或显示系统1230可以包括处理、显示,和/或以其他方式呈现音频、视频和图像数据的任何设备。视频信号和音频信号可以经由RF(射频)链路、S视频链路、复合视频链路、分量视频链路、DVI(数字视频接口)、模拟音频连接、或其他类似的通信链路从设备1200被传达到音频设备和/或显示设备。在实施例中,音频系统1228和/或显示系统1230被实施为设备1200的外部组件。可替代地,音频系统1228和/或显示系统1230被实施为示例设备1200的集成组件。
结论
描述了高性能触摸拖放技术。在至少一些实施例中,多线程体系结构被实施为至少包括操纵线程和独立命中测试线程。操纵线程接收与输入相关联的消息,并发送与消息相关联的数据给独立命中测试线程。独立命中测试线程执行独立命中测试以确定输入是否命中有资格用于特定动作的元素。独立命中测试线程还标识与所述输入相关联的交互模型,并发送交互模型的指示到操纵线程,以使能操纵线程来检测特定动作是否被触发。
在一个或多个实施例中,接收基于与触摸输入相关联的指针消息的一个或多个操纵通知。指针消息配置成发起对页面的元素的拖放操作。与指针消息相关联的更新与表示页面上的元素的拖动画面相关。一个或多个拖动通知被发送给拖放管理器,以使能拖放管理器来发起鼠标兼容的功能,而不必理解触摸输入。
在至少一些实施例中,接收加载页面的请求,并标识页面上的一个或多个可拖动元素。可拖动元素在网页上被呈现到与页面上的内容所呈现到的另一层分离的层中。接收发起对可拖动元素的拖放操作的输入。响应于拖放操作被发起,基于可拖动元素呈现拖动画面。
虽然已经以特定于结构特点和/或方法的行为的语言描述了实施例,但是要理解的是,在所附权利要求中定义的实施例不必限于所描述特定特征或行为。相反,特定特征和行为被公开为实施要求保护的实施例的示例形式。
Claims (10)
1.一种系统,包括:
存储器和处理器,所述处理器被配置为执行存储在所述存储器中的指令来实施多线程体系结构,所述多线程体系结构包括:
操纵线程,其被配置为:
接收与输入相关联的一个或多个消息;以及
发送与所述一个或多个消息相关联的数据到独立命中测试(IHT)线程;以及
所述IHT线程,其被配置为:
执行独立命中测试,以确定是否接收关于有资格用于特定动作的元素的输入;
标识与所述输入相关联的交互模型;以及
将所述交互模型的指示发送到所述操纵线程,所述交互模型的所述指示可用来检测是否触发所述特定动作。
2.如权利要求1中所述的系统,其中所述特定动作包括拖动操作,其中所述IHT线程被配置为通过至少针对元素是使能拖动的指示查询所述元素的状态来确定所述元素是否有资格用于拖动操作。
3.如权利要求1中所述的系统,进一步包括被配置为在用户界面线程中暴露一个或多个应用程序编程接口(API)到web站点的web平台,所述一个或多个API被配置为将页面上的一个或多个元素定义为拖动源或放下目标。
4.如权利要求1中所述的系统,其中所述独立命中测试线程被配置为将所述一个或多个消息转发到用户界面线程而不阻断由所述操纵线程执行的操纵操作。
5.如权利要求1中所述的系统,其中所述交互模型包括按下并保持交互或交叉滑动交互中的一个。
6.如权利要求1中所述的系统,其中所述操纵线程进一步配置为:
检测拖动操作被触发;
标识所述元素的更新,所述更新与所述拖动操作相关联;以及
将所述元素的所述更新发送到用户界面线程用于基于所述更新呈现所述元素。
7.如权利要求1中所述的系统,其中所述操纵线程进一步配置为利用一个或多个手势识别组件来检测可操作以触发所述特定动作的特定手势。
8.一个或多个计算机可读存储介质,具有存储在其上的指令,所述指令响应于由计算设备的执行,使所述计算设备实施触摸拖/放助手模块,所述触摸拖/放助手模块被配置为:
基于与触摸输入相关联的指针消息接收一个或多个操纵通知,所述指针消息配置为发起对页面上的元素的拖放操作;
将与所述指针消息相关联的更新与表示所述页面上的所述元素的拖动画面相关;以及
发送一个或多个拖动通知到拖放管理器,所述拖动通知被配置为使能所述拖放管理器发起一个或多个鼠标兼容功能而不必理解所述触摸输入。
9.如权利要求8中所述的一个或多个计算机可读存储介质,其中所述一个或多个操纵通知包括与所述元素的操纵相关联的数据,所述元素的所述操纵包括所述元素到新位置的移动。
10.如权利要求8中所述的一个或多个计算机可读存储介质,其中所述一个或多个拖动通知包括与所述元素相关联的数据,所述数据包括所述元素的拖动状态和数据传递信息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/918645 | 2013-06-14 | ||
US13/918,645 US20140372923A1 (en) | 2013-06-14 | 2013-06-14 | High Performance Touch Drag and Drop |
PCT/US2013/061090 WO2014200553A1 (en) | 2013-06-14 | 2013-09-21 | High performance touch drag and drop |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105474160A true CN105474160A (zh) | 2016-04-06 |
Family
ID=49354898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380077441.5A Pending CN105474160A (zh) | 2013-06-14 | 2013-09-21 | 高性能触摸拖放 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20140372923A1 (zh) |
EP (1) | EP3008571A1 (zh) |
CN (1) | CN105474160A (zh) |
WO (1) | WO2014200553A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753216A (zh) * | 2017-11-08 | 2019-05-14 | 波利达电子股份有限公司 | 触控装置、触控装置的操作方法及储存介质 |
CN109766054A (zh) * | 2019-01-31 | 2019-05-17 | 恒生电子股份有限公司 | 一种触屏设备及其控制方法、介质 |
CN115220629A (zh) * | 2022-06-23 | 2022-10-21 | 惠州华阳通用电子有限公司 | 一种界面元素位置调整方法 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9639263B2 (en) * | 2014-08-05 | 2017-05-02 | Weebly, Inc. | Native overlay for rapid editing of web content |
US10139998B2 (en) | 2014-10-08 | 2018-11-27 | Weebly, Inc. | User interface for editing web content |
KR102211776B1 (ko) * | 2015-01-02 | 2021-02-03 | 삼성전자주식회사 | 컨텐츠 선택 방법 및 그 전자 장치 |
CN105988704B (zh) * | 2015-03-03 | 2020-10-02 | 上海触乐信息科技有限公司 | 高效的触摸屏文本输入系统及方法 |
US9710128B2 (en) * | 2015-03-17 | 2017-07-18 | Google Inc. | Dynamic icons for gesture discoverability |
US9300609B1 (en) | 2015-03-23 | 2016-03-29 | Dropbox, Inc. | Content item-centric conversation aggregation in shared folder backed integrated workspaces |
US10108688B2 (en) | 2015-12-22 | 2018-10-23 | Dropbox, Inc. | Managing content across discrete systems |
US10402470B2 (en) * | 2016-02-12 | 2019-09-03 | Microsoft Technology Licensing, Llc | Effecting multi-step operations in an application in response to direct manipulation of a selected object |
CN109074215A (zh) * | 2016-05-11 | 2018-12-21 | 夏普株式会社 | 信息处理装置、信息处理装置的控制方法及控制程序 |
US10970679B2 (en) | 2016-12-29 | 2021-04-06 | Dropbox, Inc. | Presenting project data managed by a content management system |
US10970656B2 (en) | 2016-12-29 | 2021-04-06 | Dropbox, Inc. | Automatically suggesting project affiliations |
US11226734B1 (en) * | 2016-12-30 | 2022-01-18 | Dassault Systemes Solidworks Corporation | Triggering multiple actions from a single gesture |
US10402786B2 (en) | 2016-12-30 | 2019-09-03 | Dropbox, Inc. | Managing projects in a content management system |
US20180188905A1 (en) * | 2017-01-04 | 2018-07-05 | Google Inc. | Generating messaging streams with animated objects |
US11409428B2 (en) * | 2017-02-23 | 2022-08-09 | Sap Se | Drag and drop minimization system |
KR102509976B1 (ko) * | 2017-12-29 | 2023-03-14 | 주식회사 피제이팩토리 | 이미지 패닝 방법 |
US11226939B2 (en) | 2017-12-29 | 2022-01-18 | Dropbox, Inc. | Synchronizing changes within a collaborative content management system |
US10754827B2 (en) | 2018-11-06 | 2020-08-25 | Dropbox, Inc. | Technologies for integrating cloud content items across platforms |
US11409948B2 (en) | 2018-12-10 | 2022-08-09 | Block, Inc. | Centralized brand asset management |
US10698595B1 (en) * | 2019-06-28 | 2020-06-30 | Servicenow, Inc. | Support for swimlanes in a mobile graphical user interface |
KR102245042B1 (ko) * | 2019-07-16 | 2021-04-28 | 주식회사 인에이블와우 | 단말기, 이의 제어 방법 및 상기 방법을 구현하기 위한 프로그램을 기록한 기록 매체 |
CN112578982A (zh) * | 2019-09-29 | 2021-03-30 | 华为技术有限公司 | 一种对电子设备的操作方法及电子设备 |
KR102282936B1 (ko) | 2020-04-10 | 2021-07-29 | 주식회사 카카오뱅크 | 계좌정보 숨김 서비스 제공 방법 |
EP4229509A1 (en) * | 2020-10-13 | 2023-08-23 | Pitch Software GmbH | Workspace video collaboration |
EP4411520A4 (en) * | 2022-01-12 | 2025-02-12 | Samsung Electronics Co Ltd | METHOD AND ELECTRONIC DEVICE FOR PROCESSING A TOUCH INPUT |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5598524A (en) * | 1993-03-03 | 1997-01-28 | Apple Computer, Inc. | Method and apparatus for improved manipulation of data between an application program and the files system on a computer-controlled display system |
CN101482784A (zh) * | 2008-01-04 | 2009-07-15 | 苹果公司 | 用于触摸传感器数据的运动锁定的运动分量优势度因子 |
EP2354930A1 (en) * | 2010-01-26 | 2011-08-10 | Apple Inc. | Gesture recognizers with delegates for controlling and modifying gesture recognition |
US20110252307A1 (en) * | 2008-03-04 | 2011-10-13 | Richard Williamson | Touch Event Model Programming Interface |
EP2148268A3 (en) * | 2008-07-25 | 2011-12-14 | Intuilab | Continuous recognition of multi-touch gestures |
US20120174121A1 (en) * | 2011-01-05 | 2012-07-05 | Research In Motion Limited | Processing user input events in a web browser |
WO2013019404A1 (en) * | 2011-08-02 | 2013-02-07 | Microsoft Corporation | Cross-slide gesture to select and rearrange |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728960B1 (en) * | 1998-11-18 | 2004-04-27 | Siebel Systems, Inc. | Techniques for managing multiple threads in a browser environment |
US6272493B1 (en) * | 1999-01-21 | 2001-08-07 | Wired Solutions, Llc | System and method for facilitating a windows based content manifestation environment within a WWW browser |
GB2405304B (en) * | 2003-06-13 | 2006-09-06 | Canon Europa Nv | Draggable palette |
US6970749B1 (en) * | 2003-11-12 | 2005-11-29 | Adobe Systems Incorporated | Grouped palette stashing |
US8566045B2 (en) * | 2009-03-16 | 2013-10-22 | Apple Inc. | Event recognition |
US9250788B2 (en) * | 2009-03-18 | 2016-02-02 | IdentifyMine, Inc. | Gesture handlers of a gesture engine |
US8438473B2 (en) * | 2011-01-05 | 2013-05-07 | Research In Motion Limited | Handling of touch events in a browser environment |
US9286081B2 (en) * | 2012-06-12 | 2016-03-15 | Apple Inc. | Input device event processing |
US9977683B2 (en) * | 2012-12-14 | 2018-05-22 | Facebook, Inc. | De-coupling user interface software object input from output |
-
2013
- 2013-06-14 US US13/918,645 patent/US20140372923A1/en not_active Abandoned
- 2013-09-21 EP EP13776613.5A patent/EP3008571A1/en not_active Withdrawn
- 2013-09-21 CN CN201380077441.5A patent/CN105474160A/zh active Pending
- 2013-09-21 WO PCT/US2013/061090 patent/WO2014200553A1/en active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5598524A (en) * | 1993-03-03 | 1997-01-28 | Apple Computer, Inc. | Method and apparatus for improved manipulation of data between an application program and the files system on a computer-controlled display system |
CN101482784A (zh) * | 2008-01-04 | 2009-07-15 | 苹果公司 | 用于触摸传感器数据的运动锁定的运动分量优势度因子 |
US20110252307A1 (en) * | 2008-03-04 | 2011-10-13 | Richard Williamson | Touch Event Model Programming Interface |
EP2148268A3 (en) * | 2008-07-25 | 2011-12-14 | Intuilab | Continuous recognition of multi-touch gestures |
EP2354930A1 (en) * | 2010-01-26 | 2011-08-10 | Apple Inc. | Gesture recognizers with delegates for controlling and modifying gesture recognition |
US20120174121A1 (en) * | 2011-01-05 | 2012-07-05 | Research In Motion Limited | Processing user input events in a web browser |
WO2013019404A1 (en) * | 2011-08-02 | 2013-02-07 | Microsoft Corporation | Cross-slide gesture to select and rearrange |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753216A (zh) * | 2017-11-08 | 2019-05-14 | 波利达电子股份有限公司 | 触控装置、触控装置的操作方法及储存介质 |
CN109766054A (zh) * | 2019-01-31 | 2019-05-17 | 恒生电子股份有限公司 | 一种触屏设备及其控制方法、介质 |
CN109766054B (zh) * | 2019-01-31 | 2021-02-02 | 恒生电子股份有限公司 | 一种触屏设备及其控制方法、介质 |
CN115220629A (zh) * | 2022-06-23 | 2022-10-21 | 惠州华阳通用电子有限公司 | 一种界面元素位置调整方法 |
CN115220629B (zh) * | 2022-06-23 | 2024-04-05 | 惠州华阳通用电子有限公司 | 一种界面元素位置调整方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3008571A1 (en) | 2016-04-20 |
US20140372923A1 (en) | 2014-12-18 |
WO2014200553A1 (en) | 2014-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105474160A (zh) | 高性能触摸拖放 | |
KR102052771B1 (ko) | 선택 및 재배열을 위한 교차-슬라이드 제스처 기법 | |
CA2800108C (en) | Jump, checkmark, and strikethrough gestures | |
JP2018010684A (ja) | タイルの配列 | |
US20110304556A1 (en) | Activate, fill, and level gestures | |
US20130067392A1 (en) | Multi-Input Rearrange | |
JP2017523515A (ja) | アイコンサイズ変更 | |
US11099723B2 (en) | Interaction method for user interfaces | |
US20130014053A1 (en) | Menu Gestures | |
TWI534694B (zh) | 用於管理沉浸式環境的電腦實施方法及運算裝置 | |
US10855481B2 (en) | Live ink presence for real-time collaboration | |
US9348498B2 (en) | Wrapped content interaction | |
US20110307840A1 (en) | Erase, circle, prioritize and application tray gestures | |
CN104024990A (zh) | 输入指示器延迟和缩放逻辑 | |
US20140372903A1 (en) | Independent Hit Testing for Touchpad Manipulations and Double-Tap Zooming | |
US20140013160A1 (en) | Independent Hit Testing | |
US9588679B2 (en) | Virtual viewport and fixed positioning with optical zoom | |
JP6175682B2 (ja) | 効率的なカスケードオペレーションの実現 | |
KR20160144445A (ko) | 확장가능한 애플리케이션 표시, 마일스톤, 및 스토리라인 | |
US20120117517A1 (en) | User interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160406 |
|
WD01 | Invention patent application deemed withdrawn after publication |