高性能触摸拖放的制作方法_3

文档序号:9713525阅读:来源:国知局
元素有关的触摸输入。在至少一些实施例中,触摸输入包含交叉滑动手势或按下并保持手势,如以上描述的那样。步骤302确定关于可拖动元素接收的输入的手势类型。如果手势类型被确定为对可拖动元素的交叉滑动手势,则步骤304确定交叉滑动手势是否沿拖动轴。可以利用任何适合的拖动阈值。在至少一个实施例中,拖动轴是沿与平移或滚动方向正交的方向。如果交叉滑动手势不是沿着拖动轴,则步骤306发起平移操作。另一方面,如果交叉滑动手势包括沿拖动轴的手势,则步骤308确定是否已超过距离阈值。可以利用任何合适距离阈值,诸如用户的手指沿着拖动轴对可拖动元素滑动的距离。在一个或多个实施例中,可以使用约2.7mm的阈值距离来发起拖放操作。
[0054]如果不超过距离阈值,则步骤310选择元素。另一方面,如果手指滑动已经超过了距离阈值,则步骤312发起拖放操作。在至少一个实施例中,该元素“粘”到用户的手指并且用户可以将元素拖动到新的位置。
[0055]返回到步骤302,如果触摸输入的手势类型被确定为按下并保持手势,则步骤314确定是否已超过拖动阈值。可以利用任何适合的拖动阈值。在一个实施例中,拖动阈值可以包括将按下并保持手势保持稳定在该元素上的预定时间段。如果不超过拖动阈值,则步骤310选择元素。例如,用户可能在超过拖动阈值之前停止与元素接触。另一方面,如果超出拖动阈值,使得用户将按下并保持手势维持稳定持续超过拖动阈值的持续时间,则步骤312发起拖放操作,如以上描述的那样。
[0056]一旦发起拖放操作,步骤316接收与使能滚动的元素相关的附加触摸输入。在一个或多个实施例中,与执行对使能拖动的元素的拖放操作并行地接收附加触摸输入。例如,当用户正在用第一手指拖动元素时,用户可以对使能滚动的元素使用第二手指以平移被拖动的元素下方的页面。响应于接收关于使能滚动的元素的附加触摸输入,步骤318发起平移操作。可以利用任何适合的平移操作。在实施例中,发起平移操作以与使能拖动的元素被拖动的并发地平移页面。
[0057]已经考虑以上描述的澄清技术后,现在考虑依据一个或多个实施例的多线程体系结构的讨论。
[0058]多线程体系结构
使用传统技术,诸如单线程体系结构,通过web站点和应用程序的密集处理可能影响在元素被拖动时维持元素在用户的手指下的能力。在一个或多个实施例中,多线程体系结构被采用来提供应用程序代码与可拖动元素的操纵之间的独立性。在操作中,一个独立命中测试组件提供了命中测试线程,其与主线程例如用户界面线程分离。独立命中测试线程被用于对减轻主线程上的命中测试的影响的web内容的命中测试。使用单独线程用于命中测试可以允许很快确定目标。在其中通过单独线程(诸如,可以用于触摸操纵诸如平移和拖放操作的操纵线程)处理适当响应的情况下,操纵可以在不阻塞主线程的情况下发生。这导致在各种场景下即使在低端硬件上一贯快速的响应时间。在至少一些实施例中,操纵线程和独立命中测试线程可以是同一线程,同时与UI线程分离并独立于UI线程。
[0059]现在考虑图4,图4图示依据一个或多个实施例的大致地以400的示例客户端体系结构。在该示例中,三个不同的线程以402、404和406被图示。用户界面线程402构成了主线程,该主线程配置为容纳web app或web站点的代码的执行,包括暴露拖放功能的事件和其他API。独立命中测试(IHT)线程404构成利用数据结构的线程,该数据结构表示页面上的可操纵元素,包括可拖动元素。操纵线程406构成下述线程:该线程配置为接受针对操作系统的触摸输入,并且基于IHT线程提供的操纵配置来操纵页面元素被呈现到的“视口”。
[0060]在一个或多个实施例中,独立命中测试可以操作如下。独立命中测试线程404知晓所显示的页面上的独立和从属的区域。“独立区域”是不必利用主线程用于命中测试的web内容的区域。独立区域通常包括通常由用户平移或缩放的那些区域。“从属区域”是利用主线程(即,用户界面线程)用于命中测试的web内容的区域。从属区域可以与输入或“命中”相关联,该输入或“命中”在控件诸如〈input type= “range”〉上发生,在该控件中与页面的交互并不触发操纵。其他从属区域可以包括(通过示例而非限制)与选择句柄、装饰器、滚动条和用于视频和音频内容的控件相关联的那些区域。这样的从属区域还可以包括无窗口的ActiveX控件,在该控件中第三方代码的意图是未知的。
[0061 ]当用户通过例如点击特定元素而引起鼠标输入408时,鼠标输入408在UI线程402处被接收和处理。然而,当用户引起触摸输入410时,触摸输入410重定向到操纵线程406,其是与UI线程402分离的线程,如以上描述的那样。在至少一些实施例中,操纵线程406充当或管理被注册以接收与各种类型的触摸输入相关联的消息的委托线程。操纵线程406接收触摸输入消息和在用户界面线程402前面更新。IHT线程404与操纵线程406—起注册以接收来自操纵线程406的输入消息。当触摸输入410被接收到时,操纵线程406接收关联的消息,并将同步通知发送到IHT线程404<JHT线程404接收消息并使用在此包含的数据以走过关联的显示树来执行命中测试。可以走过整个显示树或审视的遍历可以发生。如果触摸输入关于独立区域发生,则IHT线程404调用操纵线程406,以通知操纵线程406其可以发起平移。在至少一些实施例中,如果触摸输入关于从属区域发生,则操纵线程406重新分配输入消息到用户界面线程402以用于通过充分命中测试的方式处理。重新分配输入消息到用户界面线程402承载有其效率,因为消息被保存在相同的队列或位置中,直到重新分配发生,从而阻止消息在队列中移动。不经受基于独立命中测试的处理的从属区域包括(通过示例而非限制)对应于包括以下元素的元素的那些区域:滑块控件,视频/音频回放和音量滑块,ActiveX控件,滚动条,文本选择夹持器(和其他装饰器),和设置为溢出的页面的元素。
[0062]在至少一些实施例中,在执行独立命中测试后或在操纵的发起期间,将引起独立命中测试的输入消息转发到用户界面线程402用于正常处理。正常处理与基本交互(诸如(通过示例而非限制)可以将各种样式应用于是输入主题的元素的处理)相关联。在这些实例中,将输入消息转发到用户界面线程402不阻断由操纵线程406执行的操纵。
[0063]在操作中,诸如浏览器或web应用程序宿主的web平台106可以暴露被配置用于拖放功能的一个或多个API。这些API可以被暴露到UI线程402中的web站点或应用程序。通过这些API,web app可以定义是拖动源和放下目标的元素,以及在拖放操作中传递的任何数据。当元素被指定为可拖动时,由IHT线程404处理该元素。在暴露两种交互模型来用触摸输入(例如,按下并保持和交叉滑动手势)发起拖放操作的实施例中,交互模型也通过IHT线程404处理。
[0064]现在考虑图5,图5是描述依据一个或多个实施例的方法中的步骤的流程图。该方法可以结合任何合适的硬件,软件,固件,或其组合来实施。在至少一些实施例中,可以通过适合地配置的系统诸如包括独立命中测试线程的系统来实施该方法。在图示的示例中,所描述的方法的各个方面出现在各自的列中,该列由执行特定操作的线程(例如“ UI线程、“IHT线程”、和“操纵线程”)指定。
[0065]步骤500在操纵线程处接收与输入相关联的输入消息。在至少一些实施例中,输入包括触摸输入。然而,其他类型的输入可以被接收而不背离要求保护的主题的精神和范围。在至少一些实施例中,输入消息由操纵线程接收并被放置到队列中。步骤502将与输入消息相关联的数据发送到独立命中测试(IHT)线程。在一个实施例中,数据包括新的触摸输入的一个或多个位置。响应于IHT线程接收到输入消息,步骤504执行独立命中测试以确定输入是否已经命中可拖动元素。在该示例中,IHT线程通过查询元素的状态确定元素的拖动资格,该状态可以从与页面相关联的HTML中读取。元素的状态提供元素是否被使能用于特定操作的指示。通过示例而非限制,状态可以指示拖动、平移、或缩放能力中的一个或多个被使能用于特定元素或视口。
[0066]响应于确定输入已经命中可拖动元素,步骤506在IHT线程处标识被配置用于可拖动元素的交互模型。交互模型定义了哪种类型交互正在被输入发起。不同类型的交互模型可以包括(通过示例而非限制)按下并保持交互、交叉滑动交互、等等。步骤508发送交互模型的指示到操纵线程。响应于接收到交互模型的指示,操纵线程在步骤510处检测到拖动操作被触发。在一个或多个实施例中,操纵线程可以使用系统手势识别组件来基于指示的交互模式检测拖动操作是否被触发。这些手势识别组件可以配置为检测特定手势诸如按下并保持手势或交叉滑动手势,其可操作以基于拖动阈值来触发拖动操作,如以上和以下描述的那样。如果拖动操作被触发,步骤512发送针对可拖动元素的更新到UI线程。在实施例中,在拖动操作期间也将更新发送到UI线程。通过示例而非限制,更新可以包括对可拖动元素的一个或多个位置的更新。基于更新,步骤514呈现用于显示的可拖动元素的视觉表示。
[0067]根据以上描述的体系结构,独立操纵连同从属拖动处理一起被提供。例如,当拖动预览独立于UI线程402正被移动在用户的手指下周围时,拖动操作的处理依赖于UI线程402,因为IHT线程404可以发送拖动消息到UI线程402用于处理。
[0068]已经考虑以上描述的多线程技术和与其使用的技术后,现在考虑依据一个或多个实施例的预分层的讨论。
[0069]预分层
用于拖动元素的传统技术可能产生元素的可拖动表示,其视觉上从该元素改变以提供元素被拖动的视觉提示。然而,在一些实例中,从元素到元素的视觉上改变的可拖动表示的转变能够产生震动或抖动的影响,从而导致不平滑的转变。为了克服这个挑战,可以提供与被选择用于拖动的元素相同的视觉表示的拖动画面。例如考虑图6,图6是依据一个或多个实施例的示例实施方式的图示。图6的上部分600图示用于产生所选元素的可拖动表示的传统技术。例如,元素602已由用户选择用于拖动,并且可拖动表示604被产生以向用户指示元素602正被拖动。然而,可拖动表示604是元素602的视觉上改变的版本。可拖动表示604可以以各种方式在视觉上改变。在该示例中,可拖动表示604从元素602在大小、不透明度、以及内容方面被改变。
[0070]图6的下部606图示了拖动画面608,该拖动画面608用匹配被选择用于拖动的可拖动元素610
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1