CN103970538B - 一种Android焦点变换方法及系统 - Google Patents
一种Android焦点变换方法及系统 Download PDFInfo
- Publication number
- CN103970538B CN103970538B CN201410189976.8A CN201410189976A CN103970538B CN 103970538 B CN103970538 B CN 103970538B CN 201410189976 A CN201410189976 A CN 201410189976A CN 103970538 B CN103970538 B CN 103970538B
- Authority
- CN
- China
- Prior art keywords
- focus
- component
- layer
- focus frame
- frame
- 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.)
- Active
Links
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明公开一种Android焦点变换方法及系统,该方法包括:A、控件布局时定义一框架层,并在框架层中布局组件层和焦点框层;B、设置组件层及焦点框层的宽高并调用组件层的绘制函数和焦点框层的绘制函数分别绘制组件和焦点框;C、组件层接收焦点移动事件,计算焦点框移动的轨迹值,并将该轨迹值交由焦点框层的焦点移动函数进行参数设置,最后调用焦点框层的绘制函数利用所设置参数绘制焦点框。本发明系统通过设置相对独立的组件层和焦点框层,使焦点框的绘制和组件的绘制分别进行且互不影响。从而使本系统可在组件没有更新,而焦点框需要移动的情况下,只绘制焦点框而不绘制组件,从而优化执行效率,节约系统资源。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种Android焦点变换方法及系统。
背景技术
现在很多的应用在进行焦点切换时,会采用焦点平滑移动的方式,以增强用户体验效果。像listview和GridView是采用焦点平滑移动最常用的控件。目前在实现焦点平滑移动,是采用重新定义控件,然后在控件的绘制函数中不断绘制焦点框实现的。这个绘制过程,应用组件和焦点框都是在一张画布上进行绘制的,在下一次绘制前,需要先清屏,然后再绘制。就目前的清屏机制,会清除掉屏幕上所有的组件(元素),然后再重新绘制所有的组件和焦点框。这样的操作方式显然对于系统资源是一种极大的浪费,尤其是焦点移动的过程中,组件不发生变化的情况下,却需要不断的绘制所有的组件和焦点框。当系统资源紧张的时候,焦点框的移动会有卡顿的现象,就是组件的过度绘制造成的。
因此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种Android焦点变换方法及系统,旨在解决目前实现焦点平滑移动的机制占用系统资源多,易造成系统卡顿的问题。
本发明的技术方案如下:
一种Android焦点变换方法,其中,所述方法包括以下步骤:
A、控件布局时定义一框架层,并在框架层中布局有焦点需求的组件层和用于绘制焦点框的焦点框层;
B、设置组件层及焦点框层的宽高数据并调用组件层的绘制函数和焦点框层的绘制函数分别绘制组件层组件和焦点框;
C、组件层接收焦点移动事件,计算焦点框移动的轨迹值,并将该轨迹值交由焦点框层的焦点移动函数进行参数设置,最后调用焦点框层的绘制函数利用所设置的参数绘制焦点框。
所述的Android焦点变换方法,其中,所述步骤A中在框架层中布局完组件层和焦点框层之后,调用重写绘制函数对组件层和焦点框层同时进行绘制。
所述的Android焦点变换方法,其中,所述步骤B具体为:
B1、组件层调用组件层的测算函数设置组件层宽高数据并将该数据传递至焦点框层,焦点框层调用测算函数并利用所传入的宽高数据设置焦点框层的宽高。
B2、组件层调用其绘制函数并利用所设置的组件层宽高数据绘制所述组件层组件,之后焦点框层调用其绘制函数并根据设置的焦点框层宽高在组件层预定组件位置绘制所述焦点框。
所述的Android焦点变换方法,其中,所述步骤A之后,步骤B之前还包括:
所述组件层和焦点框层进行初始化。
所述的Android焦点变换方法,其中,所述步骤B1具体为:
所述组件层调用其测算函数设置组件层宽高数据并将该数据传递至焦点框层,当所述焦点框层设置的宽高测算接口首次接收所述组件层发送的组件层宽高数据时,其调用焦点框层测算函数利用该宽高数据设置焦点框层宽高,并记录将该焦点框层宽高;
当所述宽高测算接口再次接收到所述组件层发送的组件层宽高数据时,将所接收的组件层宽高数据与所记录的焦点框层宽高进行比对,若比对不一致,则所述所述宽高测算接口调用焦点框层测算函数利用当前接收的组件层宽高数据重新设置焦点框层的宽高。
所述的Android焦点变换方法,其中,所述焦点框移动的轨迹值包括当前焦点所处组件的起始坐标、及下一个获得焦点框的组件与当前焦点框所处组件的x轴偏移量和y轴偏移量。
所述的Android焦点变换方法,其中,所述步骤C具体为:
C1、组件层的按键监听机制接收焦点移动事件,获取当前焦点所处组件的起始坐标并计算下一个获得焦点框的组件索引值;
C2、利用所得出的当前焦点所处组件的起始坐标及下一个获得焦点框的组件索引值计算得出当前焦点框所处组件的x轴偏移量和y轴偏移量;
C3、将所计算出的当前焦点所处组件的起始坐标、下一个获得焦点框的组件索引值及当前焦点框所处组件的x轴偏移量和y轴偏移量作为参数传递至焦点框层的焦点移动函数;
C4、所述焦点移动函数利用所传入的参数进行轨迹设置,之后调用焦点框层的绘制函数利用所设置的轨迹坐标位置多次绘制焦点框,实现焦点框的平滑移动效果。
所述的Android焦点变换方法,其中,通过组件层设定焦点框样式,其中,当焦点框为图片类型时,在所述组件层初始化时,将焦点框图片路径传递至焦点框层,并将图片保存为静态变量。
所述的Android焦点变换方法,其中,所述步骤C1中获取当前焦点所处组件的起始坐标并计算下一个获得焦点框的组件索引值具体为:
C11、组件层的按键监听机制接收焦点移动事件,获取当前焦点所处组件的起始坐标并根据焦点移动事件查找焦点框移动的下一个组件并判断该组件是否为不可获得焦点模式,若是,则继续查找下一个组件直至找到可获得焦点的组件;
C12、计算所查找到下一个可获得焦点的组件的索引值。
一种Android焦点变换系统,其中,所述系统包括:
框架层模块、用于控件布局时定义一框架层,并在框架层中布局有焦点需求的组件层和用于绘制焦点框的焦点框层;
组件层,用于设置组件层的宽高数据并调用组件层的绘制函数绘制组件层组件,以及用于接收焦点移动事件,计算焦点框移动的轨迹值;
焦点框层,用于设置焦点框层的宽高数据并调用焦点框层的绘制函数绘制焦点框,以及用于将所述组件层计算的轨迹值交由焦点框层的焦点移动函数进行参数设置,并调用焦点框层的绘制函数利用所设置的参数绘制焦点框。
有益效果:本发明提供一种Android焦点变换方法及系统,该系统实现相对独立的组件层和焦点框层,使焦点框的绘制和组件的绘制分别进行且互不影响。从而使本系统可在组件没有更新,而焦点框需要移动绘制的情况下,只绘制焦点框而不绘制组件,从而优化执行效率,节约系统资源,即在避免系统资源浪费的同时大大提高了执行效率。
附图说明
图1为本发明具体实施例中Android焦点变换方法流程图。
图2为本发明具体实施例中布局图层示意图。
图3为图1中步骤S200的具体方法流程图。
图4为图1中步骤S300的具体方法流程图。
图5为图4中步骤S310的具体方法流程图。
图6为本发明的具体实施例中布局操作示意图。
图7为本发明具体实施例中应用绘制过程图。
图8为本发明具体实施例中焦点框移动绘制流程图。
图9为本发明具体实施例中Android焦点变换系统的原理框图。
具体实施方式
本发明提供一种Android焦点变换方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示的一种Android焦点变换方法,其中,所述方法包括以下步骤:
S100、控件布局时定义一框架层,并在框架层中布局有焦点需求的组件层和用于绘制焦点框的焦点框层。
其中,控件布局如图2所示,框架层10中内布局两层,一层布局应用,即为组件层11,另一层布局焦点框,即为焦点框层12。所述框架层的宽高设置自适应,所述组件层11及焦点框层12作为框架层的元素,在框架层中布局完组件层11和焦点框层12之后,调用重写绘制函数对组件层11和焦点框层12同时进行绘制。另外,焦点框图片样式是需要组件层11进行设置的。
上述框架层的布局可具有如下结构:
-框架层开始
--组件层开始
--组件1
--组件2
--…
--组件N
--组件层结束
--焦点框层
--框架层结束。
通过定义上述的框架层所要实现的效果是:焦点框的绘制在焦点框层12绘制函数中完成,绘制不影响组件层11的组件;组件层11组件的绘制在组件层11绘制函数中完成,也不会影响焦点框层12。两者是相对独立的。当需要全部组件及焦点框同时更新时,则进行框架层的绘制请求。
S200、设置组件层及焦点框层的宽高数据并调用组件层的绘制函数和焦点框层的绘制函数分别绘制组件层组件和焦点框。
所述组件层是有焦点需求的组件集合,在组件层布局绘制之前需要进行宽高的设置,这样设置是为确定整个组件层的宽度和高度。
进一步地,所述步骤S100之后,步骤S200之前还包括:
所述组件层和焦点框层进行初始化。即将组件装载入组件层,并将焦点框层对象传入组件层。同时组件层组件的各个属性进行初始化。
具体地,如图3所示,所述步骤S200具体为:
S210、组件层调用组件层的测算函数设置组件层宽高数据并将该数据传递至焦点框层,焦点框层调用测算函数并利用所传入的宽高数据设置焦点框层的宽高。
为了保持焦点框层的宽高与组件层的宽高一致,当组件层测算函数(onMeasure)进行宽高设置时,将设置的宽高值同时传递到焦点框层,焦点框层也将调用测算函数进行宽高的设置。
焦点框层的宽高由于依赖于使用焦点框的组件层的宽高,因此组件层的宽高发生变化时,焦点框层宽高要相应的变化。
进一步地,所述步骤S210还可进一步包括:
所述组件层调用其测算函数设置组件层宽高数据并将该数据传递至焦点框层,当所述焦点框层设置的宽高测算接口首次接收所述组件层发送的组件层宽高数据时,其调用焦点框层测算函数(本函数为重定义函数,继承自android系统测算函数)利用该宽高数据设置焦点框层宽高,并记录将该焦点框层宽高;
当所述宽高测算接口再次接收到所述组件层发送的组件层宽高数据时,将所接收的组件层宽高数据与所记录的焦点框层宽高进行比对,若比对不一致,则所述宽高测算接口调用焦点框层测算函数利用当前接收的组件层宽高数据重新设置焦点框层的宽高,即利用该次接收的组件层宽高数据替代之前记录的焦点框层宽高。当比对一致时,舍弃所接收的本次数据。
另外还需要计算组件位置
组件的位置也即组件在屏幕上的坐标。该坐标的隶属坐标系是由系统预设生成,其可以是以屏幕左上角为原点建立的坐标系。
组件的x坐标 = 组件层相对屏幕左侧的距离+该组件左侧所有组件的宽度+该组件左侧的控件之间的所有空隙值;
组件的y坐标 = 组件层相对屏幕顶部的距离+该组件上方所有组件的高度+该组件上方控件之间的所有空隙值;
组件在获得焦点时,焦点的位置与组件位置是重合的,因此组件位置的计算是为确定焦点的位置。
S220、组件层调用其绘制函数并利用所设置的组件层宽高数据绘制所述组件层组件,之后焦点框层调用其绘制函数并根据设置的焦点框层宽高在组件层预定组件位置绘制所述焦点框。
组件层绘制过程属于android默认绘制机制。而焦点框绘制前需要确认焦点框的位置。默认位置为组件层可获得焦点的第一个组件的位置;继而获得焦点位置,第一个可获得焦点的组件位置坐标即为焦点位置坐标。因此,通过第一个可获得焦点的组件的位置确认焦点位置。第一个可获得焦点的组件的坐标的计算可按照组件坐标位置的计算方法进行。
焦点框的宽高实际上由获得焦点位置的组件层组件确定。因此如步骤S210所述,在绘制焦点框前,组件层组件需要获取组件宽高或者需要的数值作为参数传递到焦点框层。
另外,焦点框样式是由组件层设定的,例如焦点框为图片类型时,在所述组件层初始化时,将焦点框图片路径传递至焦点框层,并将图片保存为静态变量。从而使得图片在整个操作过程中都有效,在不更换焦点框的情况下,无需多次传递。
本发明在需要绘制焦点框时,需要组件层进行绘制触发。首次绘制焦点框是在组件层的绘制函数绘制了拥有焦点框的组件后,调用焦点框绘制接口,组件层将当前获得焦点组件的宽高传递到焦点框层,以调整焦点框图片的大小,然后焦点框绘制接口调用绘制函数将图片绘制在已经获得的焦点框的位置上。(已经获得的焦点框的位置为上述的步骤S200所得出的)
S300、组件层接收焦点移动事件,计算焦点框移动的轨迹值,并将该轨迹值交由焦点框层的焦点移动函数进行参数设置,最后调用焦点框层的绘制函数利用所设置的参数绘制焦点框。
其中,所述焦点框移动的轨迹值包括当前焦点所处组件的起始坐标、及下一个获得焦点框的组件与当前焦点框所处组件的x轴偏移量和y轴偏移量(所依照的坐标系位上述的坐标系,即以屏幕左上角为原点建立的坐标系)
另外,所述的焦点框层的整体背景为透明色。
如图4所示的具体实施例中,所述步骤S300具体为:
S310、组件层的按键监听机制接收焦点移动事件,获取当前焦点所处组件的起始坐标并计算下一个获得焦点框的组件索引值;
S320、利用所得出的当前焦点所处组件的起始坐标及下一个获得焦点框的组件索引值计算得出当前焦点框所处组件的x轴偏移量和y轴偏移量;
S330、将所计算出的当前焦点所处组件的起始坐标、下一个获得焦点框的组件索引值及当前焦点框所处组件的x轴偏移量和y轴偏移量作为参数传递至焦点框层的焦点移动函数;
S340、所述焦点移动函数利用所传入的参数进行轨迹设置,之后调用焦点框层的绘制函数利用所设置的轨迹坐标位置多次绘制焦点框,实现焦点框的平滑移动效果。
进一步地,如图5所示的上述步骤S310中获取当前焦点所处组件的起始坐标并计算下一个获得焦点框的组件索引值具体为:
S311、组件层的按键监听机制接收焦点移动事件,获取当前焦点所处组件的起始坐标并根据焦点移动事件查找焦点框移动的下一个组件并判断该组件是否为不可获得焦点模式,若是,则继续查找下一个组件直至找到可获得焦点的组件;
S312、计算所查找到下一个可获得焦点的组件的索引值。
通过本发明上述方法实现的焦点框的移动大致过程为:当用户按下操作键(比如上下键),焦点框开始移动。此时接收到按键操作的是组件层的按键监听机制。组件层监听机制会根据键的不同,计算焦点框移动的起始坐标,及焦点框的x轴和y轴的偏移坐标值,并将这些坐标值作为参数传递到焦点框层的焦点移动函数。焦点移动函数是利用控制视图滑动的实现接口scroller ,其将传递进来的参数进行设置,然后调用绘制函数;在绘制函数中,获得scroller提供的当前轨迹的x轴坐标和y轴坐标,然后将这两个值作为焦点框绘制的位置,进行绘制。并多次绘制焦点框,就实现了平滑移动效果。
当方向键被操作,本发明的焦点会根据方向键进行相应的移动。因焦点框采用绘制的方式,因此需要预先设定移动轨迹。在组件层的组件中,组件可以设置为不可获得焦点的模式。而移动轨迹的确定需要四个值:当前焦点的x坐标,当前焦点的y坐标,下一个获得焦点框的组件与当前焦点框所在组件的x轴偏移量及y轴偏移量。
下面通过如图6所示的例子对焦点框移动轨迹的计算进行进一步阐述,下述可能用到的名词定义
itemWidth: 组件的宽
itmeHeight: 组件的高
hSpace: 水平方向上两个组件之间的空隙值
vSpace: 竖直方向上两个组件之间的空隙值
hNum:组件的列数
vNum:组件的行数
ID:当前获得焦点的组件索引值
nextId:下一个可以获得焦点的组件索引值
图中所示是为一个GridView控件,包含10个组件,其中组件2,组件8,组件9被设置为不可获得焦点模式。向右的操作时,可以获得焦点的顺序为:组件1,组件3,组件4,组件5,组件6,组件7,组件10;也即“Z”字形操作。10个组件,vNum为 4,hNum 为3。这10个组件的itemWidth相同,itemHeightu也相同,组件间的hSpace和vSpace也是固定的。
当焦点向右移动时,则向右移动轨迹计算为:
首先计算下一个需获得焦点框的组件的ID(索引值)。比如当前焦点在组件1上,按下向右操作键一次,则焦点框向右移动一次。组件2为不可获得焦点模式,则下一个获得焦点的组件是组件3。如当前焦点在组件7上,按下向右操作键一次,则焦点框向右移动一次;但是组件8不可获得焦点,而组件8是第二行的最后一个组件,则折行到第三行;组件9也不可获得焦点,则下一个可获得焦点的组件是组件10。
根据以上描述,当下一个可获得焦点的组件nextId可以获得时,向右移动轨迹的公式可分为本行计算及折行计算两种:
下一个可获得焦点的组件在本行时:
按照组件位置坐标的计算方法可将移动轨迹为的位置偏移量表示为:
x轴偏移量 = (nextId - ID)* (itemWidth +hSpace);
y轴偏移量= 0;
下一个可获得焦点的组件折行时:
同样按照组件位置坐标的计算方法可将移动轨迹为的位置偏移量表示为:
x轴偏移量 = ((nextId - ID) % vNum ) * (itemWidth +hSpace);
y轴偏移量=((nextId - ID) / vNum ) * (itemHeight + vSpace) ;
当ID即为最后一个可获得焦点的组件,即不存在下一个可获得焦点的组件时,右键操作舍弃。
当焦点向左移动时,则向左移动轨迹计算为:
当按下向左键时,焦点应向左移动。比如焦点在组件1上,按下左键,组件1的左侧不存在组件,也即找不到nextId,因此本次操作舍弃;如焦点在组件10上时,按下左键,焦点向左移动,但是组件9不可获得焦点,则折行寻找组件8;组件8、仍不能获得焦点,则nextId为7。
当下一个可获得焦点的组件nextId可以获得时,向左的运动轨迹计算分为两种:
下一个可获得焦点的组件在本行时:
按照组件位置坐标的计算方法可将移动轨迹为的位置偏移量表示为:
x轴偏移量 = (nextId - ID)* (itemWidth +hSpace);
y轴偏移量=0;
下一个可获得焦点的组件折行时:
按照组件位置坐标的计算方法可将移动轨迹为的位置偏移量表示为:
x轴偏移量 = ((nextId - ID) % vNum ) * (itemWidth +hSpace);
y轴偏移量=((nextId - ID) / vNum ) * (itemHeight + vSpace) ;
当ID即为最后一个可获得焦点的组件,即不存在下一个可获得焦点的组件时,左键操作舍弃。
当焦点向上移动时,则向上移动轨迹计算为:
按下上键时,如果当前焦点组件的ID为第一行的组件即1—4,则焦点组件上方不存在组件,即nextId不可获得,舍弃本次操作;如果焦点组件ID为6时,则焦点组件的上方组件,即组件2不能获得焦点,即nextId不可获得,因此本次向上操作也舍弃。
当下一个可获得焦点的组件nextId可以获得时,移动轨迹公式为:
按照组件位置坐标的计算方法可将移动轨迹为的位置偏移量表示为:
x轴偏移量 = 0;
y轴偏移量=((nextId - ID) / vNum ) * (itemHeight + vSpace) ;
当焦点向下移动时,则向下移动轨迹计算为:
按下下键时,焦点应向下移动。由于第三行只有2个组件,如果是在组件7按下键,正下方是不存在控件的,因此需要特殊处理,即组件10获得焦点。
如焦点组件是组件4,正下方的组件8不能获得焦点,即nextId不可获得,则舍弃本次操作;如焦点控件是组件10,下方没有组件,即nextId不可获得,则舍弃本次操作。
当下一个可获得焦点的组件nextId可以获得时,移动轨迹公式为:
按照组件位置坐标的计算方法可将移动轨迹为的位置偏移量表示为:
x轴偏移量 = ((nextId - ID) % vNum ) * (itemWidth +hSpace);
y轴偏移量=((nextId - ID) / vNum ) * (itemHeight + vSpace)。
如图7所示为以GridView组件添加焦点框为例实现的的应用绘制过程,其步骤为:
S1、启动应用。
S2、布局组件层及焦点框层。首先定义一框架层类,继承自FrameLayout,用来管理GridView组件层和焦点框层,调用重写绘制函数(继承自FrameLayout),完成组件层和焦点框层的同时绘制。
S3、初始化。初始化GridView组件层和焦点框层。将组件装载入GridView,并将焦点框层对象传入组件层。GridView组件各个属性进行初始化。
S4、设置组件层及焦点框层宽高。调用组件层测算函数设定组件层的宽高,并将组件层的宽高传入焦点框层设定宽高。
S5、组件绘制。
S6、焦点框绘制。调用焦点移动函数设置参数和并调用绘制函数对焦点框进行绘制。
如图8所示为焦点移动绘制流程图,其具体步骤如下:
H1、操作按键。
H2、组件层接收。组件层接收焦点移动事件,即监听到键值,然后判断焦点移动方向。
H3、计算下一个索引值是否存在。即判断nextID是否存在,若存在,则执行步骤H4,若否,则执行步骤H7。
H4、计算焦点组件坐标及移动偏移量。计算焦点框移动的起始坐标,及焦点框的x轴和y轴的偏移坐标值。
H5、调用焦点移动函数设置参数。将上述值作为参数调用焦点框层焦点移动函数。
H6、调用绘制函数绘制焦点框。
H7、结束操作。
如图9所示的Android焦点变换系统,其中,所述系统包括:
框架层模块100、用于控件布局时定义一框架层,并在框架层中布局有焦点需求的组件层和用于绘制焦点框的焦点框层,即用于装载组件和焦点框。具体如步骤S100所述。
组件层200,用于设置组件层的宽高数据并调用组件层的绘制函数绘制组件层组件,以及用于接收焦点移动事件,计算焦点框移动的轨迹值,其主要作用可概括为设置焦点框,完成焦点位置计算,及焦点移动时,计算焦点框的移动起始坐标及运动偏移量。
焦点框层300,用于设置焦点框层的宽高数据并调用焦点框层的绘制函数绘制焦点框,以及用于将所述组件层计算的轨迹值交由焦点框层的焦点移动函数进行参数设置,并调用焦点框层的绘制函数利用所设置的参数绘制焦点框。即用来完成焦点的移动及焦点的绘制。
本发明提供一种Android焦点变换方法及系统,该系统实现相对独立的组件层和焦点框层,使焦点框的绘制和组件的绘制分别进行且互不影响。从而使本系统可在组件没有更新,而焦点框需要移动绘制的情况下,只绘制焦点框而不绘制组件,从而优化执行效率,节约系统资源,即在避免系统资源浪费的同时大大提高了执行效率。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (10)
1.一种基于Android的焦点变换方法,其特征在于,所述方法包括以下步骤:
A、控件布局时定义一框架层,并在框架层中布局有焦点需求的组件层和用于绘制焦点框的焦点框层;
B、设置组件层及焦点框层的宽高数据并调用组件层的绘制函数和焦点框层的绘制函数分别绘制组件层组件和焦点框;
C、组件层接收焦点移动事件,计算焦点框移动的轨迹值,并将该轨迹值交由焦点框层的焦点移动函数进行参数设置,最后调用焦点框层的绘制函数利用所设置的参数绘制焦点框。
2.根据权利要求1所述的基于Android的焦点变换方法,其特征在于,所述步骤A中在框架层中布局完组件层和焦点框层之后,调用重写绘制函数对组件层和焦点框层同时进行绘制。
3.根据权利要求1所述的基于Android的焦点变换方法,其特征在于,所述步骤B具体为:
B1、组件层调用组件层的测算函数设置组件层宽高数据并将该数据传递至焦点框层,焦点框层调用测算函数并利用所传入的宽高数据设置焦点框层的宽高;
B2、组件层调用其绘制函数并利用所设置的组件层宽高数据绘制所述组件层组件,之后焦点框层调用其绘制函数并根据设置的焦点框层宽高在组件层预定组件位置绘制所述焦点框。
4.根据权利要求3所述的基于Android的焦点变换方法,其特征在于,所述步骤A之后,步骤B之前还包括:
对所述组件层和焦点框层进行初始化。
5.根据权利要求3所述的基于Android的焦点变换方法,其特征在于,所述步骤B1具体为:
所述组件层调用其测算函数设置组件层宽高数据并将该数据传递至焦点框层,当所述焦点框层设置的宽高测算接口首次接收所述组件层发送的组件层宽高数据时,其调用焦点框层测算函数利用该宽高数据设置焦点框层宽高,并记录该焦点框层宽高;
当所述宽高测算接口再次接收到所述组件层发送的组件层宽高数据时,将所接收的组件层宽高数据与所记录的焦点框层宽高进行比对,若比对不一致,则所述宽高测算接口调用焦点框层测算函数利用当前接收的组件层宽高数据重新设置焦点框层的宽高。
6.根据权利要求1所述的基于Android的焦点变换方法,其特征在于,所述焦点框移动的轨迹值包括当前焦点所处组件的起始坐标、及下一个获得焦点框的组件与当前焦点框所处组件的x轴偏移量和y轴偏移量。
7.根据权利要求6所述的基于Android的焦点变换方法,其特征在于,所述步骤C具体为:
C1、组件层的按键监听机制接收焦点移动事件,获取当前焦点所处组件的起始坐标并计算下一个获得焦点框的组件索引值;
C2、利用所得出的当前焦点所处组件的起始坐标及下一个获得焦点框的组件索引值计算得出当前焦点框所处组件的x轴偏移量和y轴偏移量;
C3、将所计算出的当前焦点所处组件的起始坐标、下一个获得焦点框的组件索引值及当前焦点框所处组件的x轴偏移量和y轴偏移量作为参数传递至焦点框层的焦点移动函数;
C4、所述焦点移动函数利用所传入的参数进行轨迹设置,之后调用焦点框层的绘制函数利用所设置的轨迹坐标位置多次绘制焦点框,实现焦点框的平滑移动效果。
8.根据权利要求4所述的基于Android的焦点变换方法,其特征在于,通过组件层设定焦点框样式,其中,当焦点框为图片类型时,在所述组件层初始化时,将焦点框图片路径传递至焦点框层,并将图片保存为静态变量。
9.根据权利要求7所述的基于Android的焦点变换方法,其特征在于,所述步骤C1中获取当前焦点所处组件的起始坐标并计算下一个获得焦点框的组件索引值具体为:
C11、组件层的按键监听机制接收焦点移动事件,获取当前焦点所处组件的起始坐标并根据焦点移动事件查找焦点框移动的下一个组件并判断该组件是否为不可获得焦点模式,若是,则继续查找下一个组件直至找到可获得焦点的组件;
C12、计算所查找到下一个可获得焦点的组件的索引值。
10.一种基于Android的焦点变换系统,其特征在于,所述系统包括:
框架层模块、用于控件布局时定义一框架层,并在框架层中布局有焦点需求的组件层和用于绘制焦点框的焦点框层;
组件层模块,用于设置组件层的宽高数据并调用组件层的绘制函数绘制组件层组件,以及用于接收焦点移动事件,计算焦点框移动的轨迹值;
焦点框层模块,用于设置焦点框层的宽高数据并调用焦点框层的绘制函数绘制焦点框,以及用于将所述组件层模块计算的轨迹值交由焦点框层的焦点移动函数进行参数设置,并调用焦点框层的绘制函数利用所设置的参数绘制焦点框。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410189976.8A CN103970538B (zh) | 2014-05-07 | 2014-05-07 | 一种Android焦点变换方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410189976.8A CN103970538B (zh) | 2014-05-07 | 2014-05-07 | 一种Android焦点变换方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103970538A CN103970538A (zh) | 2014-08-06 |
CN103970538B true CN103970538B (zh) | 2017-12-12 |
Family
ID=51240078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410189976.8A Active CN103970538B (zh) | 2014-05-07 | 2014-05-07 | 一种Android焦点变换方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103970538B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105739808B (zh) * | 2014-12-08 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 终端设备上光标移动显示方法及其装置 |
CN104954849B (zh) * | 2015-06-25 | 2018-08-07 | 福建新大陆通信科技股份有限公司 | 一种机顶盒马赛克中快速切换逻辑框的方法 |
CN105892807A (zh) * | 2016-03-29 | 2016-08-24 | 乐视控股(北京)有限公司 | 焦点框调整方法及装置 |
CN106658139B (zh) * | 2016-10-18 | 2021-04-06 | Tcl科技集团股份有限公司 | 一种焦点控制方法及装置 |
CN109104628B (zh) * | 2017-06-21 | 2020-12-15 | 武汉斗鱼网络科技有限公司 | 安卓电视的焦点前景生成方法、存储介质、设备及系统 |
CN109144809B (zh) * | 2017-06-28 | 2022-03-25 | 武汉斗鱼网络科技有限公司 | 一种焦点变化监控方法、存储介质、电子设备及系统 |
CN107835461B (zh) * | 2017-11-02 | 2021-09-28 | 深圳市雷鸟网络传媒有限公司 | 焦点移动控制方法、智能电视及计算机可读存储介质 |
CN107872726A (zh) * | 2017-11-27 | 2018-04-03 | 山东浪潮商用系统有限公司 | 一种焦点控制方法及装置 |
CN109656639B (zh) * | 2018-12-25 | 2022-04-15 | 深圳创维数字技术有限公司 | 一种界面滚动方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019678A (zh) * | 2012-11-16 | 2013-04-03 | Tcl集团股份有限公司 | 一种列表焦点框焦点变换方法及装置 |
CN103473055A (zh) * | 2013-09-06 | 2013-12-25 | 乐视致新电子科技(天津)有限公司 | 一种焦点移动控制方法及装置 |
CN103677573A (zh) * | 2012-09-18 | 2014-03-26 | 北京琉石天音网络信息技术有限公司 | 一种焦点移动的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130141428A1 (en) * | 2011-11-18 | 2013-06-06 | Dale L. Gipson | Computer-implemented apparatus, system, and method for three dimensional modeling software |
-
2014
- 2014-05-07 CN CN201410189976.8A patent/CN103970538B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677573A (zh) * | 2012-09-18 | 2014-03-26 | 北京琉石天音网络信息技术有限公司 | 一种焦点移动的方法及装置 |
CN103019678A (zh) * | 2012-11-16 | 2013-04-03 | Tcl集团股份有限公司 | 一种列表焦点框焦点变换方法及装置 |
CN103473055A (zh) * | 2013-09-06 | 2013-12-25 | 乐视致新电子科技(天津)有限公司 | 一种焦点移动控制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103970538A (zh) | 2014-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103970538B (zh) | 一种Android焦点变换方法及系统 | |
CN109271038B (zh) | 候选词推荐方法、终端及计算机可读存储介质 | |
CN107508974B (zh) | 一种界面显示方法、移动终端以及计算机可读存储介质 | |
CN108052260B (zh) | 移动终端操作响应方法、移动终端及可读存储介质 | |
CN108198146B (zh) | 一种降噪方法、设备和计算机可读存储介质 | |
CN105991925A (zh) | 场景构图指示方法和指示装置 | |
CN109471579B (zh) | 终端屏幕信息布局调整方法、装置、移动终端及存储介质 | |
CN111654628A (zh) | 一种视频拍摄方法、设备及计算机可读存储介质 | |
CN111242234A (zh) | 图像目标的检测方法、装置、终端设备及存储介质 | |
CN110069122B (zh) | 一种屏幕控制方法、终端及计算机可读存储介质 | |
CN107395971B (zh) | 一种图像采集方法、设备和计算机可读存储介质 | |
CN109710168B (zh) | 一种屏幕触控方法、设备及计算机可读存储介质 | |
CN110209449B (zh) | 一种游戏中光标定位方法和装置 | |
CN102193194B (zh) | 间距计算装置与应用其的透镜修正系统及方法 | |
CN103853470B (zh) | 数据处理和显示方法及设备 | |
CN111866389B (zh) | 一种视频跟踪拍摄方法、设备及计算机可读存储介质 | |
CN113597006A (zh) | 一种电子价签通讯方法、系统及计算机可读存储介质 | |
CN111612688B (zh) | 一种图像处理方法、设备及计算机可读存储介质 | |
CN211025083U (zh) | 一种基于单目摄像头手势控制的墙面体感游戏设备 | |
CN107197161A (zh) | 一种图像数据处理方法、装置、电子设备以及存储介质 | |
CN107220068A (zh) | 一种排列应用程序图标的方法及终端 | |
CN113784067A (zh) | 字符叠加方法及装置、存储介质、电子装置 | |
CN109215004B (zh) | 一种图像合成方法、移动终端及计算机可读存储介质 | |
CN103186917B (zh) | 一种实现视图动画显示的方法和装置 | |
CN112965679A (zh) | 一种投屏方法、移动终端以及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |