一种在终端中的触控操作方法和装置的制造方法
【技术领域】
[0001]本发明涉及触控技术领域,特别是涉及一种在终端中的触控操作方法和一种在终端中的触控操作装置。
【背景技术】
[0002]随着科技的发展,各种终端,尤其是诸如手机、平板电脑等移动设备在人们的工作、学习、日常交流等各方面的使用率也越来越高。
[0003]为了方便用户的阅读和查看等因素,终端的屏幕越来越大。
[0004]当终端的屏幕比较大时,用户单手操作变得越来越不方便。因此,单手操控技术便应运而生,其中,将窗口移动到单手可以操控的区域是单手操控技术的方案之一。
[0005]窗口移动后,屏幕并没有移动,因此触摸事件需要同步进行映射。
[0006]目前的窗口移动方案,一般要对系统事件的二次转发,因此,存在二次转发后与控件操控的同步性问题,以及,触屏事件对差异性控件的适应性及兼容性问题。
[0007]为解决上面的问题,会大大增加系统及应用的复杂度,降低产品的稳定性,降低响应速度。
【发明内容】
[0008]鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种在终端中的触控操作方法和相应的一种在终端中的触控操作装置。
[0009]为了解决上述问题,本发明实施例公开了一种在终端中的触控操作方法,包括:
[0010]当接收到窗口的移动指令时,按照所述移动指令中的偏移量调整在显示屏中的显示区域,以在显示区域中显示窗口 ;
[0011]当检测到触摸屏上被触发的触摸点时,根据所述偏移量计算所述触摸点相对于调整后的窗口的坐标位置,以生成触摸事件;
[0012]将所述触摸事件发送至,在显示屏中原始位置为所述坐标位置的窗口,以驱动所述窗口所属的应用执行相应的操作。
[0013]优选地,所述按照所述移动指令中的偏移量调整在显示屏中的显示区域,以在显示区域中显示窗口的步骤包括:
[0014]对显示屏的显示区域的开始地址与结束地址叠加所述移动指令中的偏移量;
[0015]将叠加偏移量之后的开始地址与所述结束地址写入显示屏的寄存器中,以驱动显示屏在所述开始地址与所述结束地址之间的显示区域显示窗口。
[0016]优选地,所述根据所述偏移量计算所述触摸点相对于调整后的窗口的坐标位置的步骤包括:
[0017]计算所述触摸点在所述触摸屏上的触摸点坐标;
[0018]对所述触摸点的触摸点坐标减去偏移量,以获得坐标位置。
[0019]优选地,所述计算所述触摸点在所述触摸屏上的触摸点坐标的步骤包括:
[0020]检测所述触摸点与所述触摸屏的边界之间形成的多个电流值;
[0021]采用所述多个电流值按照线性关系计算触摸点坐标。
[0022]优选地,所述将所述触摸事件发送至,在显示屏中原始位置为所述坐标位置的窗口,以执行相应的操作的步骤包括:
[0023]输入监听器获取存储在窗口状态类中的窗口数据;所述窗口数据包括原始位置;
[0024]输入监听器将所述触摸事件发送至,窗口数据中原始位置为所述坐标位置的窗口,以驱动所述窗口所属的应用执行相应的操作。
[0025]本发明实施例还公开了一种在终端中的触控操作装置,包括:
[0026]窗口调整模块,用于在接收到窗口的移动指令时,按照所述移动指令中的偏移量调整在显示屏中的显示区域,以在显示区域中显示窗口 ;
[0027]坐标位置计算模块,用于在检测到触摸屏上被触发的触摸点时,根据所述偏移量计算所述触摸点相对于调整后的窗口的坐标位置,以生成触摸事件;
[0028]事件分发模块,用于将所述触摸事件发送至,在显示屏中原始位置为所述坐标位置的窗口,以驱动所述窗口所属的应用执行相应的操作。
[0029]优选地,所述窗口调整模块包括:
[0030]地址计算子模块,用于对显示屏的显示区域的开始地址与结束地址所述移动指令中的叠加偏移量;
[0031]写地址子模块,用于将叠加偏移量之后的开始地址与所述结束地址写入显示屏的寄存器中,以驱动显示屏在所述开始地址与所述结束地址之间的显示区域显示窗口。
[0032]优选地,所述坐标位置计算模块包括:
[0033]触摸点坐标计算子模块,用于计算所述触摸点在所述触摸屏上的触摸点坐标;
[0034]触摸点坐标映射子模块,用于对所述触摸点的触摸点坐标减去偏移量,以获得坐标位置。
[0035]优选地,所述触摸点坐标计算子模块包括:
[0036]电流值检测子模块,用于检测所述触摸点与所述触摸屏的边界之间形成的多个电流值;
[0037]线性计算子模块,用于采用所述多个电流值按照线性关系计算触摸点坐标。
[0038]优选地,所述事件分发模块包括输入监听器子模块,所述输入监听器子模块包括:
[0039]窗口数据获取子模块,用于获取存储在窗口状态类中的窗口数据;所述窗口数据包括原始位置;
[0040]事件数据分发子模块,用于将所述触摸事件发送至,窗口数据中原始位置为所述坐标位置的窗口,以驱动所述窗口所属的应用执行相应的操作。
[0041]本发明实施例包括以下优点:
[0042]本发明实施例按照调整数据调整在显示屏中的显示区域和触摸屏中的触屏区域,基于调整后的触屏区域中计算发生触摸事件的坐标位置,并将该触摸事件发送至,在显示屏中原始位置为该坐标位置的窗口,以执行相应的操作,通过触摸屏硬件的特性进行触控操作,窗口及其位置的逻辑关系不发生改变,将触摸事件进行映射上报即可,避免了二次转发,大大提高了稳定性。
【附图说明】
[0043]图1是本发明的一种终端的结构框图;
[0044]图2是本发明的一种在终端中的触控操作方法实施例的步骤流程图;
[0045]图3A-图3B是本发明的一种窗口的调整示例图;
[0046]图4是本发明的一种触摸区域的调整示例图;
[0047]图5A-图5B是本发明的一种坐标位置的计算示例图;
[0048]图6是本发明的一种窗口管理系统的结构图;
[0049]图7是本发明的一种在终端中的触控操作装置实施例的结构框图。
【具体实施方式】
[0050]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0051]在可进行触控操作的终端中,一般可以包括显示屏和触摸屏(touch screen)。
[0052]其中,显示屏可以将用户界面(User Interface,UI)元素,如窗口(包括控件)显示到屏幕上,具体可以包括IXD(Liquid Crystal Display,液晶显示器)显示屏、LED (Light-Emitting D1de,发光二极管)显示屏等等,
[0053]触摸屏又可以称为“触控屏”、“触控面板”,是个可接收触头等输入讯号的感应式液晶显示装置,具体可以包括电阻技术触摸屏、电容技术触摸屏等等,本发明实施例对此不加以限制。
[0054]大多数情况下,触摸屏附着在显示屏之上,如果能测量出触摸点在触摸屏上的坐标位置,则可根据显示屏上对应坐标位置的用户界面元素获知触摸者的意图,进行相应的操作,如关闭、确认、返回等等。
[0055]如图1所示,以手机100为例,手机100可以包括机身100、显示屏102、面板103,其中,面板103中包括触摸屏1031,触摸屏1031附着在显示屏102上。
[0056]终端的屏幕越来越大,如手机屏幕从4.7英寸、5英寸发展到5.2英寸、5.5英寸,甚至更大,用户单手操作变得越来越不方便。
[0057]例如,男性的拇指长度一般在175px左右,基本上可以触摸到4英寸触摸屏的每一个角落,但是在6.4英寸触摸屏中仅能覆盖三分之一的区域,剩余三分之二的区域无法触及。
[0058]为了方便用户单手操作,目前提供了窗口移动方案,其大致分为两种:
[0059]一种方案是应用处理,大多数应用都是由几个或者几十个甚至更多的控件来组成,其中还有子控件的嵌套的情况。
[0060]控件随窗口发生移动后,将触摸事件发送给位于其坐标位置的窗口的主控件,主控件需要根据偏移量重新计算坐标位置,再将触摸事件转发给相应的子控件,由子控件实现其功能。
[0061]另一种方案是窗口处理,大多数应用都是由几个或者几十个甚至更多的控件来组成,除了主窗口以外,还有输入法窗口、各种各样的弹出窗口以及自定义样式的子窗口,每个窗口的位置都需要单独计算。
[0062]窗口移动后,将触摸事件发送给主窗口,主窗口需要根据偏移量重新计算坐标位置,再将触摸事件转发给相应的子窗口,由子窗口实现其功能。
[0063]两种方式都存在二次转发,即触摸事件转发给主控件、再由主控件转发给子控件,触摸事件转发给主窗口、再由主窗口转发给子窗口,存在同步性问题、适应性及兼容性问题。
[0064]所谓的同步性,指的是控件的显示位置数据跟触摸事件的数据必须匹配。
[0065]在第一次显示窗口(包括控件)时,显示屏的位置及窗口(包括控件)之间的关系已经确定,即每个控件对于显示屏的屏幕原点(左上角的点)的相对位置已经固定,其跟触屏事件映射关系已经确定。如果改变控件的位置后,此控件内的每个子控件都要调整其相对于显示屏的屏幕原点的相对位置,其跟触屏事件映射关系也要重新映射。
[0066]适应性和兼容性问题主要体现在控件的布局上,比如某个控件,全屏时显示在显示屏中间,若发生偏移,其应该显示在偏移后的窗口的中间,但其在显示屏中可能处于左侦I也可能处于右侧,而居中位置显示的处理方式同居左、居右显示等的处理方式都要不同。
[0067]在应用过程中,在很多情况下,需要改变触屏事件的逻辑状态。其中,触摸事件的逻辑状态包括时间、位置、类型、触摸时长等数据,对于初始状态直接来源于驱动层上报,但是有些特殊事件是经过窗口管理部分分发时其部分状态发生了改变,因此上层收到的事件与触摸屏真实事件已经不一样了,如果再进行二次分发的话,此事件的逻辑状态已经改变。
[0068]例如,有一个弹
出窗口,手指触摸点从窗口内滑动到窗口外后抬起,触屏驱动层最后上报的事件类型应该是Act1n_UP (抬起),而窗口管理模块在分发时发现此点已经不在窗口内,可能就会将其事件类型转换为cancel (取消),进而通知应用。
[0069]如上所述,为保证偏移后的控件正常使用,理论上需要匹配控件的所有情况,包括用户指定位置、指定大小的控件等等,若考虑不周就会出现问题,这样大大增加了系统及应用的复杂度,降低产品的稳定性,降低响应速度。
[0070]因此,提出了本发明实施例的核心构思之一,基于触摸屏硬件特性,调整触屏原点以实现触屏事件的映射,再上报给相应的窗口,实现触屏数据与显示界面的同步。
[0071 ] 参照图2,示出了本发明的一种在终端中的触控操作方法实施例的步骤流程图,具体可以包括如下步骤:
[0072]步骤201,当接收到窗口的移动指令时,按照所述移动指令中的偏移量调整在显示屏中的显示区域,以在显示区域中显示窗口 ;
[0073]在本发明实施例中,可以在驱动层中按照偏移量调整在显示屏中的显示区域。
[0074]在实际应用中,可以通过指定的操作触发窗口的移动指令,即指示如何调整显示区域的信息,按照该偏移量调整显示区域,使终端适应单手操作。
[0075]其中,该移动指令中包括偏移量,偏移量可以为显示区域移动的移动方向及移动距离。
[0076]用户可以通过点击某个物理按键,或者,点击某个控件,或者,触发某个操作手势,或者,倾斜手机等操作,触发调整指令,本发明实施例对此不加以限制。
[0077]在具体实现中,该偏移量可以默认设置的,如移动距离、移动方向是默认设置的,也可以实时根据指定的操作生成,如将操作手势的方向设置为移动方向、操作手势的距离与移动的距离成正比等等,本发明实施例对此不加以限制。
[0078]例如,如图3A所示,显示屏301中的显示区域302重叠,显示屏301的虚拟原点305位于左上角,坐标为(0,O),主窗口 306的原始大小为(W,H),其中,W为宽,H为高,显示区域302中包括窗口 303和窗口 304,窗口 303和窗口 304中都可以包括控件,窗口 303的位置为AU1, Y1),窗口 304的位置为B(x2,y2)。
[0079]其中,位置A和位置B可以是一个值,如(300,200),也可以是一个范围,如左上角是(300,200)、右下角是(350,250)的矩形。
[0080]窗口 303位于显示区域302的位置A,在用户的角度看,窗口 303在触摸屏的位置也应该是位置A,若用户意图触发窗口 303中的控件,应该点击触摸屏的位置A。
[0081]同理,窗口 304位于显示区域302的位置B,在用户的角度看,窗口 304在触摸屏的位置也应该是位置B,若用户意图触发窗口 304中的控件,应该点击触摸屏的位置B。
[0082]若用户使用右手单手操作可能无法触及窗口 303中的控件,则可以通过移动显示区域等操作将窗口 303往右下方调整。
[0083]若用户使用左手单手操作可能无法触及窗口 304中的控件,则可以通过移动显示区域等操作将窗口 304往左上方调整。
[0084]需要说明的是,本发明实施例中的终端,可以包括移动设备,例如,手机、平板电脑等等,也可以包括固定设备,例如,个人电脑等等,本发明实施例对此不加以限制。
[0085]这些终端可以支持包括Windows、Android (安卓)、1S、WindowsPhone等操作系统,为使本领域技术人员更好地理解本发明实施例,在本发明实施例中,将AndroicK安卓)作为终端系统的一种示例进行说明。
[0086]在本发明的一种优选实施例中,步骤201可以包括如下子步骤:
[0087]子步骤S11,对显示屏的显示区域的开始地址与结束地址叠加所述移动指令中的偏移量;
[0088]子步骤S12,将叠加偏移量之后的开始地址与所述结束地址写入显示屏的寄存器中,以驱动显示屏在所述开始地址与所述结束地址之间的显示区域显示窗口。
[0089]在本发明实施例中,可以采用硬件方式的平行或垂直滚动。
[0090]如果要使显示屏的显示区域滚动,可以通过修改显示屏的显示区域(帧缓冲区)的开始地址(如IXDBASEU)和结束地址(如IXDBASEL)的值来实现。
[0091]其中,显示区域的开始地址(如IXDBASEU)可以在显示屏的寄存器(如LCDSADDR1[20:0])中配置,显示缓存的开始地址A[21:1];
[0092]显示区域的结束地址(如IXDBASEL)可以在显示屏的寄存器(如LCDSADDR2[20:0])中配置,显示缓存的结束地址A[21:1]。
[0093]在发明实施例中,针对移动操作,可以在显示区域的开始地址的原始的位置的开始地址与结束地址的基础上,叠加偏移量,获得调整后的显示区域的开始地址与结束地址。
[0094]例如,如图3B所示,偏移量为(Δχ,Ay),则可以将显示区域302移动(Δχ,Ay)的距离,如虚线所示,移动后的显示区域302的虚拟原点305’的坐标为(ΛΧ,Ay),在移动后显示区域302中,窗口 303的位置A’为(X1+ Δχ, Υι+Δγ)。
[0095]当然,上述移动方式只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他移动方式,本发明实施例对此不加以限制。另外,除了上述移动方式外,本领域技术人员还可以根据实际需要采用其它移动方式,本发明实施例对此也不加以限制。
[0096]步骤202,当检测到触摸屏上被触发的触摸点时,根据所述偏移量计算所述触摸点相对于调整后的窗口的坐标位置,以生成触摸事件;
[0097]在本发明实施例中,可以在驱动层中根据所述调整数据计算所述触摸点相对于调整后的窗口的坐标位置,并按照该坐标位置生成触摸事件。
[0098]若显示区域进行了调整,显示屏显示的是调整后的显示区域(包括窗口、控件等),在用户的角度看,窗口(包括控件)已经调整,应该点击调整后的窗口(包括控件)触发相应的功能。
[0099]假设,显示屏的虚拟原点(左上角)为(0,O),触摸屏的虚拟原点(左上角,电流值为O的点)也是(0,0),调整窗口后的显示内容偏移(X(l,y(l),即调整后的显示屏的虚拟原点为(χο,y。)。
[0100]由于显示屏的位置及窗口(包括控件)之间的关系已经确定,即显示屏的原始位置及窗口(包括控件)之间的关系已经确定,并且,触摸屏与显示屏的位置关系是一一对应的,系统上层仍然认为窗口所依赖的显示屏的虚拟原点是(0,O),其所对应的触摸屏的虚拟原点是(0,O)。
[0101]由于经过移动,用户所点击的位置是触摸屏的物理位置,并非其需要触发的控件的在显示屏的显示区域中的位置,但是系统上层需要的触摸事件其实仍然是依赖于移动前的显示屏的虚拟原点(0,0)。
[0102]因此,在本发明实施例中,调整触摸屏的虚拟原点,以与显示屏的虚拟原点对应,进而计算坐标位置,即将触屏事件所依赖显示屏的虚拟原点从调整后的(X(l,y0)映射为调整前的(0,O),即将移动后的显示屏的显示区域与触摸屏的触屏区域一一对应,以获得用户需要触发的显示屏的真实位置。
[0103]例如,如图3A-图3B与图5所示,窗口 303(包括控件)的原始位置为A,在移动显示区域之后,窗口 303 (包括控件)的位置为A’。
[0104]在用户的角度看,窗口 303(包括控件)是显示在位置A’上,因此,用户一般会在触摸屏上点击位置A’,意图触发窗口 303中的控件。
[0105]虽然触摸屏的触摸区域没有发生变化,但是由于在驱动层对触摸屏的触摸点坐标进行位置的映射,应用层可以直接获取映射后的坐标位置,在某个角度看来,触摸屏的触摸区域可以认为是跟随窗口的调整而调整。
[0106]在一个示例中,针对移动操作,可以在触摸屏原始的触屏区域的基础上,叠加偏移量,获得移动后的触屏区域。
[0107]例如,与图3B相对应地,如图4所示,在触摸屏原始的触屏区域401的原点403的坐标为(0,0),偏移量为(Δχ, Ay),则可以将触屏区域401移动(Δχ, Δγ)的距离,获得如虚线所示触屏区域402,移动后的显示屏的虚拟原点403’的坐标为(Δχ,Ay),与,移动后的显示屏的虚拟原点305’ (Δχ, Δγ)相对应。
[0108]当然,上述调整方式只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他调整方式,本发明实施例对此不加以限制。另外,除了上述调整方式外,本领域技术人员还可以根据实际需要采用其它调整方式,本发明实施例对此也不加以限制。
[0109]在本发明的一种优选实施例中,步骤202可以包括如下子步骤:
[0110]子步骤S21,计算所述触摸点在所述触摸屏上的触摸点坐标;
[0111]子步骤S22,对所述触摸点的触摸点坐标减去偏移量,以获得坐标位置。
[0112]在具体实现中,用户可以通过手部、手写笔等方式在触摸屏上进行点击、滑动等操作,触摸屏可以检测在触摸屏的触摸点上的触摸信号,将该触摸信号转换成触摸事件和坐标位置(即发生触摸事件的位置),如直角坐标(即X坐标和Y坐标)。
[0113]其中,触摸事件具体可以包括按下事件(Act1n_Down)、移动事件(Act1n_Move)和抬起事件(Act1nJJp)等等。
[0114]其中,按下事件(Act1n_Down)可以表示用户在触摸屏按下未移动、未抬起,移动事件(Act1ruMove)可以表示用户在触摸屏按下后开始移动(或滑行),抬起事件(Act1nJJp)可以表示用户在触摸屏抬起。
[0115]不同的触摸事件可以组合定义触控手势,驱动层将触摸事件上报给应用层,再分发到相关的应用中,应用可以按照该触控手势触发相应的操作,完成触控操作。
[0116]在本发明实施例中,可以依赖调整后的触屏区域,即依赖调整后的触摸屏的虚拟原点计算坐标位置,以适应显示屏中窗口的调整。
[0117]如图4所示,若用户点击在触摸屏上的位置A’ (触摸点),则可以计算在调整后的触屏区域402中,相对于调整后的虚拟原点403’的位置,与调整后的显示区域对
应,使得可以正常触发窗口 303中的控件。
[0118]在本发明的一种优选实施例中,子步骤S21可以包括如下子步骤:
[0119]子步骤S211,检测所述触摸点与所述触摸屏的边界之间形成的多个电流值;
[0120]子步骤S222,采用所述多个电流值按照线性关系计算触摸点坐标。
[0121]需要说明的是,本发明实施例可以应用于触摸点的坐标位置计算符合线性关系的触摸屏中,如电容式触摸屏、电阻式触摸屏。
[0122]以电容式触摸屏为例,电容式触摸屏在在触摸屏四边均镀上狭长的电极,在导电体内形成一个低压交流电场。
[0123]用户触摸屏幕时,由于人体电场,手指与导体层间会形成一个耦合电容,就会有一定量的电荷转移到人体。为了恢复这些电荷损失,四边电极发出的电流会流向触摸点,而电流强弱与触摸点到电极的距离成正比(即线性关系),位于触摸屏后的控制器便会计算电流的比例及强弱,从而计算出触摸点的坐标位置。
[0124]例如,如图5A所示,假设触摸屏的触屏区域501的宽度为W,高度为H,虚拟原点502的坐标为(0,0),触摸点503的位置坐标为(X,y)。触摸屏的电流检测点为四条边,流经左、上、右、下边的测得电流分别为1x1、IyU 1x2、Iy2。
[0125]那么,触摸点的坐标为:
[0126]X = W* (1x1/(Ixl+Ix2));
[0127]y = H*(Iyl/(Iyl+Iy2))。
[0128]在本发明实施例中,针对移动操作,则可以直接计算相对于调整后的触摸屏的虚拟原点的坐标位置。
[0129]例如,如图5B所示,假设偏移量为(Δχ,Ay),移动后的触摸屏的触屏区域501’的虚拟原点502’的坐标为(Λχ,Ay),则可以触摸屏501的左、上、右、下边的测得电流分别为1x1、IyU 1x2、Iy2计算触摸点503的触摸点坐标:
[0130]X = W*(Ixl/(Ixl+Ix2));
[0131]y = H*(Iyl/(Iyl+Iy2))。
[0132]则触摸点503的坐标位置为(X- Λ X,y- Λ y)。
[0133]当然,上述坐标位置的计算方式只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他坐标位置的计算方式,本发明实施例对此不加以限制。另外,除了上述坐标位置的计算方式外,本领域技术人员还可以根据实际需要采用其它坐标位置的计算方式,本发明实施例对此也不加以限制。
[0134]步骤203,将所述触摸事件发送至,在显示屏中原始位置为所述坐标位置的窗口,以驱动所述窗口所属的应用执行相应的操作。
[0135]在本发明实施例中,可以在应用层将所述触摸事件发送至,在显示屏中原始位置为所述坐标位置的窗口。
[0136]在具体实现中,触摸事件映射之后获得的坐标位置,反映的是窗口的原始位置,可以直接发送至相应的窗口进行处理。
[0137]需要说明的是,本发明实施例中所指将触摸事件发送至窗口,可以指将该触摸事件发送至窗口对应的进程或线程,由该进程或线程属于某个应用,该进程或线程按照预先设置的规则执行相应的操作。
[0138]例如,某个窗口中的控件为输入法应用的空格键,若触摸事件表征单击操作,则输入空格,若触摸事件表征长按操作,则切换语音输入等等。
[0139]在本发明的一种有限实施例中,步骤203可以包括如下子步骤:
[0140]子步骤S31,输入监听器获取存储在窗口状态类中的窗口数据;所述窗口数据包括原始位置;
[0141]子步骤S32,输入监听器将所述触摸事件发送至,窗口数据中原始位置为所述坐标位置的窗口,以驱动所述窗口所属的应用执行相应的操作。
[0142]如图6所示,在Andro i d系统中,从设计的角度来看,窗口管理系统是基于C/S(Server/Client,服务端/客户端)模式的。
[0143]整个窗口管理系统可以分为服务端(Server)和客户端(Client)两大部分,客户端负责请求创建窗口和使用窗口,服务端完成窗口的维护,窗口显示等。
[0144]在客户端(Client),并不是直接与WindowManagerService (窗口管理服务)交互,而是直接和本地对象WindowManager (窗口管理器)交互,然后由WindowManager完成与WindowManagerService 的交互。
[0145]对于Android系统中的应用来说这个交互是透明的,应用一般不会感知到WindowManagerService 的存在。
[0146]在Android系统的应用框架中,窗口主要分为两种:
[0147]第一种是应用的窗口:一个Activity组件(布满整个窗口或者悬浮于其他窗口上的交互界面,在一个应用中通常由多个Activity构成)有一个主窗口,弹出的对话框也有一个窗口,Menu(菜单)也是一个窗口,等等。在同一个Activity中,主窗口、对话框、Menu的窗口之间通过该Activity关联起来。
[0148]第二种是公共界面的窗口:如最近运行对话框、关机对话框、状态栏下拉栏、锁屏界面等。这些窗口都是系统级别的窗口,不从属于任何应用,和Activity没有关系。
[0149]Android系统的窗口管理是基于C/S模式的,并且使用独立进程的方式实现。
[0150]窗口管理的服务端WindowManagerService运行在独立的进程system_server (系统服务)里,当应用需要创建窗口时,通过进程通信的方式请求WindowManagerService创建窗口,由WindowManagerService向应用程序传递和窗口相关的交互消息。所有应用的窗口都在服务端管理,窗口的显不和控制都在WindowManagerService里处理。
[0151]WindowManagerService主要完成了以下几部分功能:
[0152]1、窗口的添加和删除;
[0153]2、窗口的显示和隐藏控制;
[0154]3、Z-order 顺序管理;
[0155]4、焦点窗口和焦点应用的管理;
[0156]5、输入法窗口管理和墙纸窗口管理;
[0157]6、转场动画;
[0158]7、系统消息收集和分发。
[0159]服务端(Server)的核心的几个类是:
[0160]WindowManagerService.java
[0161]WindowState.java
[0162]WindowToken.java
[0163]AppffindowToken.java
[0164]Sess1n, java
[0165]InputManager.java
[0166]InputMonitor.java
[0167]其中,WindowManagerService负责完成窗口的管理工作;
[0168]WindowState (窗口状态类)与客户端窗口是——对应的,即每个窗口都具有一个WindowState,应用调用WindowManager.addView()创建窗口时,会在WindowManagerService 添加一个 WindowState 与之--对应。
[0169]InputMonitor (输入监听器)负责上层的消息分发功能。
[0170]在实际应用中,WindowState保存了其对应的窗口的几乎所有属性及状态数据,可以说WindowState就代表窗口。
[0171]WindowManagerService可以通过WindowState的属性及状态数据来管理窗口的状态,包括层次,焦点分配,位置布局等。
[0172]WindowState的大部分数据在窗口创建时生成,部分状态数据及调整数据由WindowManagerService 来控制使用。
[0173]在具体实现中,触摸事件中映射之后获得的坐标位置,反映的是窗口的原始位置,可以直接发送至相应的窗口进行处理。
[0174]需要说明的是,本发明实施例中所指将触摸事件发送至窗口,可以指将该触摸事件发送至窗口对应的进程或线程,由该进程或线程执行相应的操作。
[0175]在本发明实施例中,WindowManagerService向InputMonitor发送一个通知,InputMonitor接收到该通知后,可以从WindowState中获取窗口数据。
[0176]窗口在创建时,可以向系统底层注册事件回调函数,通过InputMonitor监听触摸事件。
[0177]触摸屏事件发生时,InputManager通过InputManager.Callbacks类响应回调,在回调里再调用WindowManagerService.1nputMonitor来接收触摸事件。
[0178]InputMonitor找到当前窗口(WindowState)对应的事件处理接口(InputffindowHandle),以移动后的参数进行处理,并将处理结果上报给当前窗口。
[0179]本发明实施例按照调整数据调整在显示屏中的显示区域和触摸屏中的触屏区域,基于调整后的触屏区域中计算发生触摸事件的坐标位置,并将该触摸事件发送至,在显示屏中原始位置为该坐标位置的窗口,以执行相应的操作,通过触摸屏硬件的特性进行触控操作:
[0180]其一,系统上层提供调整数据,而不需要进行大的改动,可移植性强;
[0181]其二,窗口及其位置的逻辑关系不发生改变,将触摸事件进行映射上报即可,避免了二次转发,大大提高了稳定性;
[0182]其三,避免对触屏数据重新转换,事件数据的精准度高;
[0183]其四,对触摸事件没有进行逻辑及状态改变,不影响原始应用,大大减少了兼容性问题,复杂度小。
[0184]需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技
术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0185]参照图7,示出了本发明的一种在终端中的触控操作装置实施例的结构框图,所述终端可以包括显示屏和触摸屏,该装置具体可以包括如下模块:
[0186]窗口调整模块701,用于在接收到窗口的移动指令时,按照所述移动指令中的偏移量调整在显示屏中的显示区域,以在显示区域中显示窗口 ;
[0187]坐标位置计算模块702,用于在检测到触摸屏上被触发的触摸点时,根据所述偏移量计算所述触摸点相对于调整后的窗的坐标位置,以生成触摸事件;
[0188]事件分发模块703,用于将所述触摸事件发送至,在显示屏中原始位置为所述坐标位置的窗口,以驱动所述窗口所属的应用执行相应的操作。
[0189]在本发明的一种优选实施例中,所述窗口调整模块701可以包括如下子模块:
[0190]地址计算子模块,用于对显示屏的显示区域的开始地址与结束地址叠加所述移动指令中的偏移量;
[0191]写地址子模块,用于将叠加偏移量之后的开始地址与所述结束地址写入显示屏的寄存器中,以驱动显示屏在所述开始地址与所述结束地址之间的显示区域显示窗口。
[0192]在本发明的一种优选实施例中,所述坐标位置计算模块702可以包括如下子模块:
[0193]触摸点坐标计算子模块,用于计算所述触摸点在所述触摸屏上的触摸点坐标;
[0194]触摸点坐标映射子模块,用于对所述触摸点的触摸点坐标减去偏移量,以获得坐标位置。
[0195]在本发明的一种优选实施例中,所述触摸点坐标计算子模块可以包括如下子模块:
[0196]电流值检测子模块,用于检测所述触摸点与所述触摸屏的边界之间形成的多个电流值;
[0197]线性计算子模块,用于采用所述多个电流值按照线性关系计算触摸点坐标。
[0198]在本发明的一种优选实施例中,所述事件分发模块703可以包括输入监听器子模块,所述输入监听器子模块可以包括如下子模块:
[0199]窗口数据获取子模块,用于获取存储在窗口状态类中的窗口数据;所述窗口数据包括原始位置;
[0200]事件数据分发子模块,用于将所述触摸事件发送至,窗口数据中原始位置为所述坐标位置的窗口,以驱动所述窗口所属的应用执行相应的操作。
[0201]对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0202]本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0203]本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0204]本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0205]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0206]这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0207]尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0208]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0209] 以上对本发明所提供的一种在终端中的触控操作方法和一种在终端中的触控操作装置。,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【主权项】
1.一种在终端中的触控操作方法,其特征在于,包括: 当接收到窗口的移动指令时,按照所述移动指令中的偏移量调整在显示屏中的显示区域,以在显示区域中显示窗口 ; 当检测到触摸屏上被触发的触摸点时,根据所述偏移量计算所述触摸点相对于调整后的窗口的坐标位置,以生成触摸事件; 将所述触摸事件发送至,在显示屏中原始位置为所述坐标位置的窗口,以驱动所述窗口所属的应用执行相应的操作。2.根据权利要求1所述的方法,其特征在于,所述按照所述移动指令中的偏移量调整在显示屏中的显示区域,以在显示区域中显示窗口的步骤包括: 对显示屏的显示区域的开始地址与结束地址叠加所述移动指令中的偏移量; 将叠加偏移量之后的开始地址与所述结束地址写入显示屏的寄存器中,以驱动显示屏在所述开始地址与所述结束地址之间的显示区域显示窗口。3.根据权利要求1或2所述的方法,其特征在于,所述根据所述偏移量计算所述触摸点相对于调整后的窗口的坐标位置的步骤包括: 计算所述触摸点在所述触摸屏上的触摸点坐标; 对所述触摸点的触摸点坐标减去偏移量,以获得坐标位置。4.根据权利要求3所述的方法,其特征在于,所述计算所述触摸点在所述触摸屏上的触摸点坐标的步骤包括: 检测所述触摸点与所述触摸屏的边界之间形成的多个电流值; 采用所述多个电流值按照线性关系计算触摸点坐标。5.根据权利要求1或2或4所述的方法,其特征在于,所述将所述触摸事件发送至,在显示屏中原始位置为所述坐标位置的窗口,以执行相应的操作的步骤包括: 输入监听器获取存储在窗口状态类中的窗口数据;所述窗口数据包括原始位置; 输入监听器将所述触摸事件发送至,窗口数据中原始位置为所述坐标位置的窗口,以驱动所述窗口所属的应用执行相应的操作。6.一种在终端中的触控操作装置,其特征在于,包括: 窗口调整模块,用于在接收到窗口的移动指令时,按照所述移动指令中的偏移量调整在显示屏中的显示区域,以在显示区域中显示窗口 ; 坐标位置计算模块,用于在检测到触摸屏上被触发的触摸点时,根据所述偏移量计算所述触摸点相对于调整后的窗口的坐标位置,以生成触摸事件; 事件分发模块,用于将所述触摸事件发送至,在显示屏中原始位置为所述坐标位置的窗口,以驱动所述窗口所属的应用执行相应的操作。7.根据权利要求6所述的装置,其特征在于,所述窗口调整模块包括: 地址计算子模块,用于对显示屏的显示区域的开始地址与结束地址所述移动指令中的叠加偏移量; 写地址子模块,用于将叠加偏移量之后的开始地址与所述结束地址写入显示屏的寄存器中,以驱动显示屏在所述开始地址与所述结束地址之间的显示区域显示窗口。8.根据权利要求6或7所述的装置,其特征在于,所述坐标位置计算模块包括: 触摸点坐标计算子模块,用于计算所述触摸点在所述触摸屏上的触摸点坐标; 触摸点坐标映射子模块,用于对所述触摸点的触摸点坐标减去偏移量,以获得坐标位置。9.根据权利要求8所述的装置,其特征在于,所述触摸点坐标计算子模块包括: 电流值检测子模块,用于检测所述触摸点与所述触摸屏的边界之间形成的多个电流值; 线性计算子模块,用于采用所述多个电流值按照线性关系计算触摸点坐标。10.根据权利要求6或7或9所述的装置,其特征在于,所述事件分发模块包括输入监听器子模块,所述输入监听器子模块包括: 窗口数据获取子模块,用于获取存储在窗口状态类中的窗口数据;所述窗口数据包括原始位置; 事件数据分发子模块,用于将所述触摸事件发送至,窗口数据中原始位置为所述坐标位置的窗口,以驱动所述窗口所属的应用执行相应的操作。
【专利摘要】本发明实施例提供了一种在终端中的触控操作方法和装置,该方法包括:当接收到窗口的移动指令时,按照所述移动指令中的偏移量调整在显示屏中的显示区域,以在显示区域中显示窗口;当检测到触摸屏上被触发的触摸点时,根据所述偏移量计算所述触摸点相对于调整后的窗口的坐标位置,以生成触摸事件;将所述触摸事件发送至,在显示屏中原始位置为所述坐标位置的窗口,以驱动所述窗口所属的应用执行相应的操作。本发明实施例窗口及其位置的逻辑关系不发生改变,将触摸事件进行映射上报即可,避免了二次转发,大大提高了稳定性。
【IPC分类】G06F3/0481, G06F3/0488
【公开号】CN104881203
【申请号】CN201510205026
【发明人】黄玖法
【申请人】青岛海信移动通信技术股份有限公司
【公开日】2015年9月2日
【申请日】2015年4月24日
转载请注明原文地址:https://www.famiwei.com/read-8138868.html