控件的点击事件处理方法及系统的制作方法

文档序号:6506285阅读:168来源:国知局
控件的点击事件处理方法及系统的制作方法
【专利摘要】本发明公开控件的点击事件处理方法及系统,其中,方法包括步骤:当控件接收到用户的点击事件时,获取点击处相对于控件原点的坐标(x0,y0);判断控件是否具有动画效果;当控件具有动画效果时,通过矩阵逆变换将点击处相对于控件原点的坐标(x0,y0)转换为相对于位图原点的坐标(x,y);判断点击处相对于位图原点的坐标(x,y)是否在位图区域内,当是时,判断点击处的坐标的像素是否为0,当不为0时响应点击事件。
【专利说明】控件的点击事件处理方法及系统
【技术领域】
[0001]本发明涉及用户界面【技术领域】,尤其涉及一种控件的点击事件处理方法及系统。【背景技术】
[0002]Android系统提供了很多基本的控件实现,但Android系统提供的控件并不能实现开发者想要的功能或者自定义的外观,因此,很多时候要开发人员对控件进行自定义来实现所需功能。自定义控件具有低耦合、高内聚的特点,并且能灵活引用,外观绚丽,因此受到开发者的青睐。实现自定义控件的方法有很多,如继承已有控件,重写某些已有方法;或是继承View (视图)类,利用View (视图)的已有方法,进行重绘等。在控件实现过程中,响应用户点击操作(鼠标点击或者触摸操作)是处理用户交互的基本操作。
[0003]现有的控件响应用户点击事件的方法有通过区域来进行判断或者通过像素来进行判断,例如:1)点击无图标即空白处:没有注册响应点击事件,不响应用户操作;2)点击规则图标:若不在所规定的矩形区域中,则不响应用户操作。若点击处在规则的图标中,则对点击事件进行响应处理;3)点击不规则图标:若点击处为透明区域,则不需要响应用户点击操作。
[0004]在通过区域判断的方法来响应控件点击事件过程中,其存在下述缺点:图标若存在透明区域,则无法判断是否响应用户点击事件。
[0005]因此,现有技术还有待于改进和发展。

【发明内容】

[0006]鉴于上述现有技术的不足,本发明的目的在于提供控件的点击事件处理方法及系统,旨在解决现有的控件点 击事件处理方法若存在透明区域则无法精确判断是否响应用户点击事件的问题。
[0007]本发明的技术方案如下:
一种控件的点击事件处理方法,其中,包括步骤:
A、当控件接收到用户的点击事件时,获取点击处相对于控件原点的坐标(X(l,y0);
B、判断控件是否具有动画效果;
C、当控件具有动画效果时,通过矩阵逆变换将点击处相对于控件原点的坐标(?,%)转换为相对于位图原点的坐标(χ,y);
D、判断点击处相对于位图原点的坐标(x,y)是否在位图区域内,当是时,判断点击处的像素是否为O,当不为O时响应点击事件。
[0008]所述的控件的点击事件处理方法,其中,所述步骤C具体包括:先通过矩阵逆变换将点击处相对于控件原点的坐标(XtI,yo)转换为相对于控件初始化时控件原点的坐标(X1,yi),再将点击处相对于控件初始化时控件原点的坐标(Xl,Y1)转换为相对于位图原点的坐标(χ,y )。
[0009]所述的控件的点击事件处理方法,其中,所述步骤C中,通过矩阵逆变换将点击处相对于控件原点的坐标(Xtl,yo)转换为相对于控件初始化时控件原点的坐标(X1,y工)的过程包括:
Cl、获取包含有动画变换参数的图片处理矩阵;
C2、根据图片处理矩阵的逆矩阵对点击处相对于控件原点的坐标(X(l,y0)进行相应转换,获得点击处相对于控件初始化时控件原点的坐标(X1, y工)。
[0010]所述的控件的点击事件处理方法,其中,所述步骤D中,当点击处相对于位图原点的坐标U,y)不在位图区域内时,不响应点击事件,并结束流程。
[0011 ] 所述的控件的点击事件处理方法,其中,所述步骤D中,当点击处的像素为O时,不响应点击事件,并结束流程。
[0012]所述的控件的点击事件处理方法,其中,所述控件原点位于控件的左上角。
[0013]所述的控件的点击事件处理方法,其中,所述位图原点位于位图的左上角。
[0014]一种控件的点击事件处理系统,其中,包括:
坐标获取模块,用于当控件接收到用户的点击事件时,获取点击处相对于控件原点的坐标(x0,y0);
判断模块,用于判断控件是否具有动画效果;
坐标转换模块,用于当控件具有动画效果时,通过矩阵逆变换将点击处相对于控件原点的坐标(X(i,y0)转换为相对于位图原点的坐标(χ,y);
处理模块,用于判断点击处相对于位图原点的坐标(χ,y)是否在位图区域内,当是时,判断点击处的像素,当不为O时响应点击事件。
[0015]所述的控件的点击事件处理系统,其中,坐标转换模块包括:
第一转换单元,用于通过矩阵逆变换将点击处相对于控件原点的坐标(Xo,y。)转换为相对于控件初始化时控件原点的坐标(X1, Y1);
第二转换单元,用于将点击处相对于控件初始化时控件原点的坐标(Xpy1)转换为相对于位图原点的坐标(χ,y)o
[0016]所述的控件的点击事件处理系统,其中,所述坐标转换模块包括:
矩阵获取单元,用于获取包含有动画变换参数的图片处理矩阵;
坐标转换单元,用于根据图片处理矩阵的逆矩阵对点击处相对于控件原点的坐标(Xo,y0)进行相应转换,获得点击处相对于控件初始化时控件原点的坐标(X1, Υι)ο
[0017]所述的控件的点击事件处理系统,其中,所述处理模块还包括:
有益效果:本发明通过对具有动画效果的控件的点击处坐标进行转换,并结合判断转换后的点击处坐标是否在位图区域内以及点击处的像素是否为0,来判断是否响应用户的点击事件,既能提高响应的处理精确度,又能保证较佳的处理速度,提升用户的使用体验。
【专利附图】

【附图说明】
[0018]图1为本发明提供的控件的点击事件处理方法较佳实施例的流程图。
[0019]图2为本发明提供的实施例中控件的示意图。
[0020]图3为图2所示控件晃动时点击处的坐标转换的示意图。
[0021]图4至图7为控件产生动画效果时坐标转换的原理图。
[0022]图8为本发明的方法中坐标转换的流程图。[0023]图9为本发明提供的控件的点击事件处理方法另一实施例的流程图 图10为本发明提供的控件的点击事件处理系统较佳实施例的结构框图。
[0024]图11为本发明的系统中坐标转换模块一实施例的结构框图。
[0025]图12为本发明的系统中坐标转换模块另一实施例的结构框图。
【具体实施方式】
[0026]本发明提供一种控件的点击事件处理方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0027]请参阅图1,图1为本发明一种控件的点击事件处理方法较佳实施例的流程图,如图所示,其包括步骤:
S101、当控件接收到用户的点击事件时,获取点击处相对于控件原点的坐标(X(l,y0);在本实施例中,所述的控件可以是Android系统提供的基本的控件,也可以是利用继承View,通过重写控件构造、onDraw (重绘)、或者onMeasure (重测)等Android系统提供的标准方法来对控件进行自定义后获得的自定义控件,自定义控件在不同的状态下,显示不同的动画效果,当控件的状态发生变化时,动画效果随之改变,通过不断的刷新View,使得控件显示出动画效果。
[0028]此步骤中,先获取点击处相对于控件原点的坐标A (Xtl, y(l),在本实施例中,如图2所示,其中的实线框表示控件的区域,虚线框表示位图的区域,控件原点(0,O)位于控件的左上角,位图原点(0,O)则位于相应位图的左上角,C点则表示控件动画效果中左右晃动时的旋转中心。其中,位图是通过配置控件的常规属性页来指定显示的位图文件,即在一个指定的控件上显示指定的位图。
[0029]S102、判断控件是否具有动画效果;
获取点击处坐标后,再判断控件是否具有动画效果,因为若有动画效果,其控件的坐标会发生变化,需要对控件坐标进行转换,即进入到步骤S103中。
[0030]S103、当控件具有动画效果时,通过矩阵逆变换将点击处相对于控件原点的坐标(X(i,y0)转换为相对于位图原点的坐标(χ,y);
此步骤中,通过矩阵逆变换将点击处相对于控件原点的坐标A (Χ(ι,%)转换为相对于控件上位图原点的坐标(X,y),此步骤需要进行坐标转换是因为:在Android系统中,图片的某些部分是透明的,所以图片显示的区域可能为不规则区域,因而控件呈现出各种不同的效果,控件的实际区域大小与位图大小也可能不一样,即控件原点的坐标与位图的原点坐标有可能是不一样的,所以需要进行转换,获得点击处控件上位图原点的坐标(x,y)。
[0031]S104、判断点击处相对于位图原点的坐标(χ, y)是否在位图区域内,当是时,判断点击处的像素是否为0,当不为O时响应点击事件。
[0032]本实施例最后通过判断点击处相对于位图原点的坐标(χ, y)是否在位图区域内,以及点击处的像素是否为O来判断是否响应用户的点击(触摸)事件,具体判断方法为:当点击处相对于位图原点的坐标(x,y)在位图区域内,以及点击处的像素不为O时,则响应用户的点击事件。反之,当点击处相对于位图原点的坐标U,y)不在位图区域内时,或者,当点击处的像素为O时,则不响应点击事件,流程结束。[0033]本发明提供的上述实施例,通过对具有动画效果的控件的点击处坐标进行转换,并结合判断转换后的点击处坐标是否在位图区域内以及点击处的像素是否为0,来判断是否响应用户的点击事件,结合了区域判断和像素判断两种方法的优点,先判断点击处坐标是否在位图区域内,此处为快速判断,当在位图区域内时再判断点击处的像素是否为0,此处为精确判断,这样既能提高响应的处理精确度,又能保证较佳的处理速度,提升用户的使用体验。[0034]在本发明提供的另一实施例中,在获取点击处相对于控件原点的坐标A (&,^)之后,当判定控件不具有动画效果时,可以直接将点击处相对于控件原点的坐标A (x0, y(l)转换为相对于位图原点的坐标(X,y),因为控件不具有动画效果,获取的坐标A (Xtl, Yci)即为相对于控件初始化时控件原点的坐标。其他处理过程与前述实施例相同,即先判断点击处相对于位图原点的坐标(X,y)是否在位图区域内,再判断点击处的像素是否为O来判断是否响应用户的点击(触摸)事件。
[0035]在本发明提供的另一实施例中,在控件具有动画效果时,需要对点击处相对于控件原点的坐标A Cx0, %)进行转换处理,通过矩阵逆变换将点击处相对于控件原点的坐标A (x0, yd转换为相对于控件初始化时控件原点的坐标A' (X1, Y1),然后再将点击处相对于控件初始化时控件原点的坐标A' (X1, Y1)转换为相对于控件上位图原点的坐标(χ, y )。本实施例提供了一种转换处理方法,下面对此进行具体描述。
[0036]先对控件的动画效果进行描述:控件的动画效果实现过程实际上是根据控件当前的动画参数,对控件做一定的图形变换,例如缩放、旋转、移动、扭曲等等,然后将变换后的图像绘制到屏幕中,绘制完成后,再重绘视图,如此连续绘制,即可获得动画效果。在Android系统中,图片处理矩阵Matrix中保存了图形变换相关的动画变换参数。
[0037]举例说明绘制旋转图片的主要步骤如下: matrix.preRotate(paraml, param2, param3, param4); canvas, contact(matrix);
canvas.drawBitmap ();
在上述过程中,控件的坐标发生变化,如图4至图7所示,先将坐标原点0(0,0)移至旋转中心C (χ。,y。)作为新的坐标原点,点A' (X1, Y1)相对于新的坐标原点的坐标为A'(χ。: Al),然后点A' (xcl,ycl)围绕新的坐标原点进行旋转变化移至A (Xc^yeci),而新的坐标原点则移回至原先的坐标原点0(0,0),点A以及点A'的坐标则变为相对于0(0,0)的坐标。所以实际的点击处A的坐标值依旧是相对于控件原点而言。但是判断是否响应点击处的点击事件,则需要以图中的位图或者初始化静止时的相对坐标来判断,所以将点击处的坐标A (?, %)转换至发生坐标变换前的坐标A' (Xl,yi)。
[0038]根据上述原理,只需要采用相应的矩阵逆变换来对点击处的坐标进行转换处理即可,如图8所示,坐标(?, y0)转换为坐标(Xl,Y1)的主要步骤如下:
S201、获取包含有动画变换参数的图片处理矩阵;
此处的图片处理矩阵Matrix中保存有动画变换参数,根据该动画变换参数可获知控件发生类似缩放、旋转、移动、扭曲等等变化的具体参数。
[0039]S202、根据图片处理矩阵的逆矩阵对点击处相对于控件原点的坐标(?,%)进行相应转换,获得点击处相对于控件初始化时控件原点的坐标(Xl,yi)。此步骤即根据前述的原理,将实际点击处相对于当前控件原点的坐标(?,%)转换为发生坐标变化前的坐标相对于控件初始化时控件原点的坐标(Xl,yi)0以旋转动画效果为例,具体变换时,先将坐标原点从当前控件原点的坐标移至旋转中心C,获得点击处相对于旋转中心c的坐标,然后按照逆变换获得旋转前的点击处相对于旋转中心C的坐标,然后将坐标原点从旋转中心C移动至控件初始化时控件原点,获得旋转前的点击处相对于控件初始化时控件原点的坐标。
[0040]通过上述实施例,实现点击处的坐标的转换处理,从而方便了后续的判断,即判断点击处是否处于位图区域以及点击处的像素是否为0,然后根据判断结果来确定是否响应点击事件。
[0041]坐标转换的实现代码如下: float[] dst = new float[2]; float 口 src = {x0, y0};
View.getMatrix().1nvert(matrix);
matrix.mapPoints(dst, src);
下面通过一具体实施例来对本发明进行描述,如图9所示:
51、开始;
52、点击自定义控件;此处的控件可以是Android系统提供的基本的控件,也可以是自定义控件。 [0042]S3、依据控件状态,判断是否有动画效果,当是时进入步骤S4,否则进入步骤S6 ;具有动画效果和不具有动画效果两种情况下,进行不同的处理,在具有动画效果情况下,需要先根据动画效果的参数将点击处相对于控件原点的坐标(χο,y0)转换为相对于控件初始化时控件原点的坐标(Xl,yi),在不具有动画效果情况下,则不需要。
[0043]S4、暂停动画,获取此时的点击坐标(Xci, yj、图片处理矩阵matrix,动画继续;此处获取的参数可传入到前述的坐标转换的实现代码中,从而进行坐标转换,本实施例以旋转动画为例,所以图片处理矩阵matrix中含有旋转角度等关键参数,同样对于以缩放、移动等动画效果,则图片处理矩阵matrix中含有缩放比例、移动距离等关键参数,通过这些关键参数可对矩阵逆变换处理,进行下述步骤中的坐标变换。
[0044]S5、坐标变换,将(X。,y0)转换为坐标(Xl,Y1);
S6、判断控件和位图的原点坐标系是否一样,当是时,转入步骤S8,否则进入步骤S7 ;在自定义控件时,若控件所占区域与位图所占区域的大小不一样,则二者的原点坐标系不一样,需要进行步骤S7的坐标变换,反之则一样,不需要进行接下来的坐标变换。
[0045]S7、通过坐标系变换,将(X1, Y1)变换为(χ, y);
58、判断点击处(X,y)是否在位图区域内,当是时,进入步骤S9,否则进入步骤Sll;
59、判断(X,y)处的像素是否为0,当不为O时,进入步骤S10,当为O时则转入步骤
Sll ;
S10、响应点击事件;
SI 1、流程结束。
[0046]基于上述方法,本发明还提供一种控件的点击事件处理系统,如图10所示,其包括:
坐标获取模块100,用于当控件接收到用户的点击事件时,获取点击处相对于控件原点的坐标(xQ, y0);
判断模块200,用于判断控件是否具有动画效果;
坐标转换模块300,用于当控件具有动画效果时,通过矩阵逆变换将点击处相对于控件原点的坐标(X(i,y0)转换为相对于位图原点的坐标(χ,y);
处理模块400,用于判断点击处相对于位图原点的坐标(X,y)是否在位图区域内,当是时,判断点击处的像素是否为0,当不为O时响应点击事件;
其中,坐标获取模块100将获取的点击处相对于控件原点的坐标(?,%)传送至坐标转换模块300,同时坐标转换模块300会获取判断模块200的判断结果,在判定为具有动画效果的情况下,坐标转换模块300将点击处相对于控件原点的坐标(?,%)转换为相对于位图原点的坐标(X,y),并将转换后的坐标(X,y)传入到处理模块400,处理模块400判断转换后的坐标U,y)是否在位图区域内,当是时,判断点击处的像素是否为0,只有在点击处的像素不为O时才响应用户点击事件。
[0047]通过本发明实施例的点击事件处理系统,对控件的点击处坐标进行转换,并结合判断转换后的点击处坐标是否在位图区域内以及点击处的像素是否为0,来判断是否响应用户的点击事件。本实施例的点击事件处理系统结合了区域判断和像素判断两种方法的优点,先判断点击处坐标是否在位图区域内(此处为快速判断),当在位图区域内时再判断点击处的像素是否为O (此处为精确判断),这样既能提高响应的处理精确度,又能保证较佳的处理速度,提升用户的使用体验。
[0048]进一步,如图11所示,所述坐标转换模块300包括:
第一转换单元310,用于通过矩阵逆变换将点击处相对于控件原点的坐标(X(l,yci)转换为相对于控件初始化时控件原点的坐标(X1, Yi);
第二转换单元320,用于将点击处相对于控件初始化时控件原点的坐标(Xl,yi)转换为相对于位图原点的坐标(χ,y)。
[0049]在具有动画效果的情况下,第一转换单元310会先将点击处相对于控件原点的坐标(?, %)转换为相对于控件初始化时控件原点的坐标(X1, Y1),然后将转换后的坐标(X1,Y1)传送给第二转换单元320,由第二转换单元320将坐标(Xl,yi)再次进行转换,最后获得点击处相对于位图原点的坐标(χ,y)。
[0050]进一步,如图12所示,所述坐标转换模块300包括:
矩阵获取单元330,用于获取包含有动画变换参数的图片处理矩阵;
坐标转换单元340,用于根据图片处理矩阵的逆矩阵对点击处相对于控件原点的坐标(Xe),yci)进行相应转换,获得点击处相对于控件初始化时控件原点的坐标(X1, y^o关于上述功能模块的技术细节在前面的方法中已有详述,故不再赘述。
[0051]综上所述,本发明通过对具有动画效果的控件的点击处坐标进行转换,并结合判断转换后的点击处坐标是否在位图区域内以及点击处的像素是否为0,来判断是否响应用户的点击事件,既能提高响应的处理精确度,又能保证较佳的处理速度,提升用户的使用体验。
[0052]应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
【权利要求】
1.一种控件的点击事件处理方法,其特征在于,包括步骤: A、当控件接收到用户的点击事件时,获取点击处相对于控件原点的坐标(X(l,y0); B、判断控件是否具有动画效果; C、当控件具有动画效果时,通过矩阵逆变换将点击处相对于控件原点的坐标(?,%)转换为相对于位图原点的坐标(X,y); D、判断点击处相对于位图原点的坐标(x,y)是否在位图区域内,当是时,判断点击处是否的像素是否为O,当不为O时响应点击事件。
2.根据权利要求1所述的控件的点击事件处理方法,其特征在于,所述步骤C具体包括: 先通过矩阵逆变换将点击处相对于控件原点的坐标(X(l,y0)转换为相对于控件初始化时控件原点的坐标(X1, Y1),再将点击处相对于控件初始化时控件原点的坐标(X1, Y1)转换为相对于位图原点的坐标(X,y)。
3.根据权利要求1或2所述的控件的点击事件处理方法,其特征在于,所述步骤C中,通过矩阵逆变换将点击处相对于控件原点的坐标(X(l,Y0)转换为相对于控件初始化时控件原点的坐标(X1, Y1)的过程包括: Cl、获取包含有动画变换参数的图片处理矩阵; C2、根据图片处理矩阵的逆矩阵对点击处相对于控件原点的坐标(X(l,y0)进行相应转换,获得点击处相对于控件初始化时控件原点的坐标(X1, y工)。
4.根据权利要求1所述的控件的点击事件处理方法,其特征在于,所述步骤D中,当点击处相对于位图原点的坐标(X,y)不在位图区域内时,不响应点击事件,并结束流程。
5.根据权利要求1所述的控件的点击事件处理方法,其特征在于,所述步骤D中,当点击处的像素为O时,不响应点击事件,并结束流程。
6.根据权利要求1所述的控件的点击事件处理方法,其特征在于,所述控件原点位于控件的左上角。
7.根据权利要求6所述的控件的点击事件处理方法,其特征在于,所述位图原点位于位图的左上角。
8.一种控件的点击事件处理系统,其特征在于,包括: 坐标获取模块,用于当控件接收到用户的点击事件时,获取点击处相对于控件原点的坐标(X(i,y0); 判断模块,用于判断控件是否具有动画效果; 坐标转换模块,用于当控件具有动画效果时,通过矩阵逆变换将点击处相对于控件原点的坐标(X(i,y0)转换为相对于位图原点的坐标(χ,y); 处理模块,用于判断点击处相对于位图原点的坐标(X,y)是否在位图区域内,当是时,判断点击处的像素是否为0,当不为O时响应点击事件。
9.根据权利要求8所述的控件的点击事件处理系统,其特征在于,坐标转换模块包括: 第一转换单元,用于通过矩阵逆变换将点击处相对于控件原点的坐标(Xo,y。)转换为相对于控件初始化时控件原点的坐标(X1, Y1); 第二转换单元,用于将点击处相对于控件初始化时控件原点的坐标(Xpy1)转换为相对于位图原点的坐标(χ,y)o
10.根据权利要求9所述的控件的点击事件处理系统,其特征在于,所述坐标转换模块包括: 矩阵获取单元,用于获取包含有动画变换参数的图片处理矩阵; 坐标转换单元,用于根据图片处理矩阵的逆矩阵对点击处相对于控件原点的坐标(Xo,y0)进行相应转 换,获得点击处相对于控件初始化时控件原点的坐标(X1, Υι)ο
【文档编号】G06F3/0488GK103543923SQ201310310508
【公开日】2014年1月29日 申请日期:2013年7月23日 优先权日:2013年7月23日
【发明者】罗莎莎, 何康, 向树森, 刘剑威 申请人:Tcl集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1