一种在终端中的触控操作方法和装置的制造方法_3

文档序号:8498562阅读:来源:国知局
>[0131]WindowState.java
[0132]WindowToken.java
[0133]AppffindowToken.java
[0134]Sess1n, java
[0135]InputManager.java
[0136]InputMonitor.java
[0137]其中,WindowManagerService负责完成窗口的管理工作;
[0138]WindowState (窗口状态类)与客户端窗口是——对应的,即每个窗口都具有一个WindowState,应用调用WindowManager.addView()创建窗口时,会在WindowManagerService 添加一个 WindowState 与之--对应。
[0139]InputMonitor (输入监听器)负责上层的消息分发功能。
[0140]在实际应用中,WindowState保存了其对应的窗口的几乎所有属性及状态数据,可以说WindowState就代表窗口。
[0141]WindowManagerService可以通过WindowState的属性及状态数据来管理窗口的状态,包括层次,焦点分配,位置布局等。
[0142]WindowState的大部分数据在窗口创建时生成,部分状态数据及调整数据由WindowManagerService 来控制使用。
[0143]WindowManagerService在接收到调整指令时,从调整指令中提取调整指令,按照窗口布局的原始策略,如窗口的层次、窗口间的依赖关系等,将调整数据分发给需要调整的窗P。
[0144]WindowManageService在控制窗口进行刷新显示,调出窗口对应的WindowState中的窗口数据,其中包括原始数据(如原始大小、原始位置等)和调整数据,基于原始数据和调整数据计算窗口的显示数据,如目标位置及目标大小等,以驱动显示屏按照该显示数据进行显示。
[0145]在本发明实施例的一种优选示例中,所述调整数据可以包括偏移量和/或缩放比例;
[0146]其中,偏移量可以为窗口移动的移动方向及移动距离,可以用于对窗口进行移动;
[0147]缩放比例可以窗口缩小或放大的比例,可以用于对窗口进行缩小或方法。
[0148]在本示例中,该子步骤S13可以包括如下子步骤:
[0149]子步骤S131,窗口管理服务对原始数据叠加偏移量,以获得显示数据进行显示;
[0150]在本示例中,针对移动操作,可以在原始数据的原始位置的基础上,叠加偏移量,获得用于显示的目标位置,其显示的目标大小可以沿用原始数据的原始大小。
[0151]例如,如图3B所示,偏移量为(Δχ,Ay),则可以将主窗口 302 (包括子窗口 303)移动(Λχ,Δγ)的距离,如虚线所示,移动后的显示屏的虚拟原点305’的坐标为(Δχ,△y),移动后的子窗口 303的位置A’为(X1+Δχ, Y1+Δγ) 0
[0152]或者,
[0153]子步骤S132,窗口管理服务对原始数据乘以缩放比例,以获得显示数据进行显示;
[0154]在本示例中,针对缩放操作,可以在原始数据的原始大小的基础上按照缩放比例进行缩放,获得用于显示的目标大小,其显示的目标位置可以依赖显示屏的虚拟原点进行布局。
[0155]例如,如图3C所示,缩放比例为η% (η为正数),则可以将主窗口 302 (包括子窗口 304)的原始大小缩放为η%,主窗口 302的目标大小为(W*n%,H*n% ),如虚线所示,缩放后的显示屏的虚拟原点305’的坐标为(0,0),即与缩放前的虚拟原点305重叠,缩放后的子窗口 304 的位置 B ’ 为(x2*n %,y2*n % )。
[0156]或者,
[0157]子步骤S133,窗口管理服务对原始数据乘以缩放比例,以获得变量数据;
[0158]子步骤S134,窗口管理服务对变量数据叠加偏移量,以获得显示数据进行显示;
[0159]在本示例中,针对移动操作和缩放操作,可以先进行缩放操作,再进行移动操作,即可以在原始数据的原始大小的基础上按照缩放比例进行缩放,获得用于显示的目标大小,变量位置(变量数据)可以沿显示屏的虚拟原点进行布局,在变量位置的基础上,叠加偏移量,获得用于显示的目标位置。
[0160]例如,如图3D所示,偏移量为(Δχ,Ay),缩放比例为η% (η为正数),则可以将主窗口 302 (包括子窗口 303、子窗口 304)的原始大小缩放为η%,如主窗口 302的目标大小为(W*n%,H*n% ),子窗口 303的变量位置为(Xl*n%,yi*n% ),子窗口 304的变量位置为(x2*n%,y2*n% ),再将主窗口 302 (包括子窗口 303、子窗口 304)移动(Δχ,Δ y)的距离,如虚线所示,调整后的虚拟原点305’的坐标为(ΔΧ,Ay),调整后的子窗口 303的位置Af 为+ Δ X,y^n% +Ay),子窗口 304 的位置 B’ 为(χ2*η% + Δ x,y2*n% +Ay)。
[0161]当然,上述调整方式只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他调整方式,本发明实施例对此不加以限制。另外,除了上述调整方式外,本领域技术人员还可以根据实际需要采用其它调整方式,本发明实施例对此也不加以限制。
[0162]步骤202,当接收到触摸屏上发生触摸事件时,将发生所述触摸事件的第一坐标位置按照所述调整数据映射为第二坐标位置;
[0163]在本发明实施例中,驱动层在检测到触摸屏上发生的触摸事件时,可以将触摸事件上报给应用层,在应用层中可以将发生所述触摸事件的第一坐标位置按照所述调整数据映射为第二坐标位置。
[0164]若窗口进行了调整,显示屏显示的是调整后的窗口(包括控件),在用户的角度看,窗口(包括控件)已经调整,应该点击调整后的窗口(包括控件)触发相应的功能。
[0165]假设,显示屏的虚拟原点(左上角)为(0,O),触摸屏的虚拟原点(左上角,电流值为O的点)也是(0,0),调整窗口后的显示内容偏移(X(l,y(l),即调整后的显示屏的虚拟原点为(χο,y。)。
[0166]由于显示屏的位置及窗口(包括控件)之间的关系已经确定,即显示屏的原始位置及窗口(包括控件)之间的关系已经确定,并且,触摸屏与显示屏的位置关系是一一对应的,系统上层仍然认为窗口所依赖的显示屏的虚拟原点是(0,O),其所对应的触摸屏的虚拟原点是(0,O)。
[0167]由于经过调整,用户所点击的位置是触摸屏的物理位置,并非其需要触发的控件的在显示屏中的位置,即此时上报的触摸事件依赖的是调整后的显示屏的虚拟原点(X(1,yQ),但是系统上层需要的触摸事件其实仍然是依赖于移动前的显示屏的虚拟原点(0,0)。
[0168]因此,在本发明实施例中,可以将触摸事件对应的第一坐标位置按照调整数据转换为第二坐标位置,即将触屏事件所依赖显示屏的虚拟原点从调整后的(X(l,y0)映射为调整前的(0,0),以获得用户需要触发的显示屏的真实位置。
[0169]例如,如图3A-图3D所示,子窗口 303 (包括控件)的原始位置为A、子窗口 304 (包括控件)的原始位置为B,在调整窗口之后,子窗口 303(包括控件)的目标位置为A’、子窗口 304 (包括控件)的目标位置为B’。
[0170]在用户的角度看,子窗口 303(包括控件)是显示在目标位置为A’上、子窗口304 (包括控件)是显示在目标位置为B’上,因此,用户一般会在触摸屏上点击目标位置A’,意图触发子窗口 303中的控件,或者,在触摸屏上点击目标位置B’,意图触发子窗口 304中的控件。
[0171]在具体实现中,用户可以通过手部、手写笔等方式在触摸屏上进行点击、滑动等操作,触摸屏可以检测用户的触摸信号,将该触摸信号转换成触摸事件和坐标位置(第一坐标位置,即在触摸屏中发生触摸事件的位置),如直角坐标(即X坐标和Y坐标)。
[0172]其中,触摸事件具体可以包括按下事件(Act1n_Down)、移动事件(Act1n_Move)和抬起事件(Act1nJJp)等等。
[0173]其中,按下事件(Act1n_Down)可以表示用户在触摸屏按下未移动、未抬起,移动事件(Act1ruMove)可以表示用户在触摸屏按下后开始移动(或滑行),抬起事件(Act1nJJp)可以表示用户在触摸屏抬起。
[0174]不同的触摸事件可以组合定义触控手势,应用可以按照该触控手势触发相应的操作,完成触控操作。
[0175]在本发明实施例中,如图3A-图3D所示,可以将发生在触摸屏上目标位置为A’ (第一坐标位置)、目标位置为B’ (第一坐标位置)的触摸事件,映射为发生在目标位置为A(第二坐标位置)、目标位置为B(第二坐标位置)的触摸事件,使得可以正常触发子窗口 303中的控件、子窗口 304中的控件。
[0176]在本发明的一种优选实施例中,步骤201可以包括如下子步骤:
[0177]子步骤S21,输入监听器获取存储在窗口状态类中的窗口数据;
[0178]子步骤S22,输入监听器按照所述窗口数据中的调整数据,将发生所述触摸事件的第一坐标位置映射为第二坐标位置。
[0179]在本发明实施例中,触摸屏的触摸事件的数据可以上报给InputMonitor,在InputMonitor中重新设置窗口绑定的事件处理策略,即窗口的位置与触摸事件分发策略。
[0180]具体而言,WindowMa
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1