本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種網(wǎng)格視圖控件的移動(dòng)控制方法及系統(tǒng)。
背景技術(shù):
在Android系統(tǒng)開(kāi)發(fā)過(guò)程中,通過(guò)采用網(wǎng)格視圖(GridView)控件來(lái)顯示大量子視圖(View),網(wǎng)格視圖(GridView)是一個(gè)以網(wǎng)格(Grid)顯示子視圖(View),即二維、可滾動(dòng)的網(wǎng)格,在Android系統(tǒng)開(kāi)發(fā)過(guò)程中應(yīng)用廣泛。在現(xiàn)有網(wǎng)格視圖(GridView)控件中,只能實(shí)現(xiàn)特定對(duì)稱方向的雙向滾動(dòng),無(wú)法實(shí)現(xiàn)任意方向滾動(dòng)的目的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題在于,針對(duì)現(xiàn)有網(wǎng)格視圖控件只能在特定對(duì)稱方向雙向滾動(dòng)的問(wèn)題,提供一種網(wǎng)格視圖控件的移動(dòng)控制方法及系統(tǒng)。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:一種網(wǎng)格視圖控件的移動(dòng)控制方法,包括:
初始化配置網(wǎng)格容器的寬高和數(shù)據(jù)集;所述網(wǎng)格容器的寬高限定所述網(wǎng)格容器的屏幕顯示范圍,所述數(shù)據(jù)集包括N*M個(gè)呈二維數(shù)組結(jié)構(gòu)排布的數(shù)據(jù)塊;
根據(jù)子視圖的寬高和所述網(wǎng)格容器的寬高,確定所述網(wǎng)格容器的屏幕顯示范圍中顯示的子視圖的數(shù)量和每一子視圖的位置;每一所述子視圖對(duì)應(yīng)所述網(wǎng)格容器的屏幕顯示范圍內(nèi)的數(shù)據(jù)塊;
接收用戶輸入的移動(dòng)控制指令,根據(jù)所述移動(dòng)控制指令獲取所述網(wǎng)格容器中的目標(biāo)子視圖的位置;
根據(jù)所述目標(biāo)子視圖的位置以及所述網(wǎng)格容器的屏幕顯示范圍的位置,控制所述網(wǎng)格容器相對(duì)于所述數(shù)據(jù)集移動(dòng)或靜止,以使所述目標(biāo)子視圖位于所述網(wǎng)格容器的屏幕顯示范圍中。
優(yōu)選地,所述根據(jù)子視圖的寬高和所述網(wǎng)格容器的寬高,確定所述網(wǎng)格容器的屏幕顯示范圍中顯示的子視圖的數(shù)量和每一子視圖的位置,包括:
根據(jù)所述子視圖的寬高和所述網(wǎng)格容器的寬高分別確定所述網(wǎng)格容器的屏幕顯示范圍中橫向顯示和縱向顯示的子視圖的數(shù)量;
依據(jù)初始默認(rèn)焦點(diǎn)所在的子視圖為起點(diǎn)子視圖;
從所述起點(diǎn)子視圖開(kāi)始依據(jù)所述橫向顯示和縱向顯示的子視圖的數(shù)量依次填充,以確定所述網(wǎng)格容器的屏幕顯示范圍中顯示的每一所述子視圖的位置。
優(yōu)選地,所述接收用戶輸入的移動(dòng)控制指令,根據(jù)所述移動(dòng)控制指令獲取所述網(wǎng)格容器中的目標(biāo)子視圖,包括:
接收用戶輸入的滾動(dòng)控制指令,所述滾動(dòng)控制指令包括目標(biāo)子視圖對(duì)應(yīng)的數(shù)據(jù)塊在所述數(shù)據(jù)集中的坐標(biāo)信息;將所述坐標(biāo)信息對(duì)應(yīng)的數(shù)據(jù)塊確定為所述網(wǎng)格容器中的目標(biāo)子視圖;
或者,接收用戶通過(guò)點(diǎn)擊數(shù)據(jù)塊以輸入點(diǎn)擊控制指令;將所述點(diǎn)擊控制指令所點(diǎn)擊到的所述數(shù)據(jù)塊確定所述網(wǎng)格容器中的目標(biāo)子視圖;
或者,接收用戶通過(guò)滑動(dòng)手勢(shì)以輸入的滑動(dòng)控制指令;所述滑動(dòng)控制指令終點(diǎn)所擊中的數(shù)據(jù)塊確定為所述網(wǎng)格容器中的目標(biāo)子視圖。
優(yōu)選地,所述根據(jù)所述起點(diǎn)子視圖、目標(biāo)子視圖以及所述網(wǎng)格容器的屏幕顯示范圍,控制所述網(wǎng)格容器相對(duì)于所述數(shù)據(jù)集移動(dòng),以使所述目標(biāo)子視圖位于所述網(wǎng)格容器的屏幕顯示范圍中,包括:
判斷所述目標(biāo)子視圖是否完全位于所述網(wǎng)格容器的屏幕顯示范圍內(nèi);
若目標(biāo)子視圖完全位于網(wǎng)格容器的屏幕顯示范圍內(nèi),則控制所述網(wǎng)格容器相對(duì)于所述數(shù)據(jù)集靜止;
若目標(biāo)子視圖不完全位于或者完全不位于網(wǎng)格容器的屏幕顯示范圍內(nèi),則計(jì)算使所述目標(biāo)子視圖移動(dòng)到網(wǎng)格容器的屏幕顯示范圍內(nèi)的橫向移動(dòng)和/或縱向移動(dòng)的最小距離,根據(jù)所述橫向移動(dòng)和/或縱向移動(dòng)的最小距離控制所述網(wǎng)格容器移動(dòng),以使所述目標(biāo)子視圖位于所述網(wǎng)格容器的屏幕顯示范圍內(nèi)。
優(yōu)選地,還包括:接收用戶輸入的屏幕拖動(dòng)控制指令,控制所述網(wǎng)格視圖移動(dòng),并在移動(dòng)過(guò)程中使接收所述屏幕拖動(dòng)控制指令前焦點(diǎn)所在的子視圖位于所述網(wǎng)格視圖的屏幕顯示范圍內(nèi)。
本發(fā)明還提供一種網(wǎng)格視圖控件的移動(dòng)控制方法,包括:
初始配置單元,用于初始化配置網(wǎng)格容器的寬高和數(shù)據(jù)集;所述網(wǎng)格容器的寬高限定所述網(wǎng)格容器的屏幕顯示范圍,所述數(shù)據(jù)集包括N*M個(gè)呈二維數(shù)組結(jié)構(gòu)排布的數(shù)據(jù)塊;
位置確定單元,用于根據(jù)子視圖的寬高和所述網(wǎng)格容器的寬高,確定所述網(wǎng)格容器的屏幕顯示范圍中顯示的子視圖的數(shù)量和每一子視圖的位置;每一所述子視圖對(duì)應(yīng)所述網(wǎng)格容器的屏幕顯示范圍內(nèi)的數(shù)據(jù)塊;
指令接收單元,用于接收用戶輸入的移動(dòng)控制指令,根據(jù)所述移動(dòng)控制指令獲取所述網(wǎng)格容器中的目標(biāo)子視圖的位置;
移動(dòng)控制單元,用于根據(jù)所述目標(biāo)子視圖的位置以及所述網(wǎng)格容器的屏幕顯示范圍的位置,控制所述網(wǎng)格容器相對(duì)于所述數(shù)據(jù)集移動(dòng)或靜止,以使所述目標(biāo)子視圖位于所述網(wǎng)格容器的屏幕顯示范圍中。
優(yōu)選地,所述位置確定單元包括:
視圖數(shù)量確定子單元,用于根據(jù)所述子視圖的寬高和所述網(wǎng)格容器的寬高分別確定所述網(wǎng)格容器的屏幕顯示范圍中橫向顯示和縱向顯示的子視圖的數(shù)量;
起點(diǎn)視圖確定子單元,用于依據(jù)初始默認(rèn)焦點(diǎn)所在的子視圖為起點(diǎn)子視圖;
視圖填充確定子單元,用于從所述起點(diǎn)子視圖開(kāi)始依據(jù)所述橫向顯示和縱向顯示的子視圖的數(shù)量依次填充,以確定所述網(wǎng)格容器的屏幕顯示范圍中顯示的每一所述子視圖的位置。
優(yōu)選地,所述指令接收單元包括:
第一指令接收子單元,用于接收用戶輸入的滾動(dòng)控制指令,所述滾動(dòng)控制指令包括目標(biāo)子視圖對(duì)應(yīng)的數(shù)據(jù)塊在所述數(shù)據(jù)集中的坐標(biāo)信息;將所述坐標(biāo)信息對(duì)應(yīng)的數(shù)據(jù)塊確定為所述網(wǎng)格容器中的目標(biāo)子視圖;
第二指令接收子單元,用于接收用戶通過(guò)點(diǎn)擊數(shù)據(jù)塊以輸入點(diǎn)擊控制指令;將所述點(diǎn)擊控制指令所點(diǎn)擊到的所述數(shù)據(jù)塊確定所述網(wǎng)格容器中的目標(biāo)子視圖;
第三指令接收子單元,用于接收用戶通過(guò)滑動(dòng)手勢(shì)以輸入的滑動(dòng)控制指令;所述滑動(dòng)控制指令終點(diǎn)所擊中的數(shù)據(jù)塊確定為所述網(wǎng)格容器中的目標(biāo)子視圖。
優(yōu)選地,所述移動(dòng)控制單元包括:
判斷子單元,用于判斷所述目標(biāo)子視圖是否完全位于所述網(wǎng)格容器的屏幕顯示范圍內(nèi);
第一移動(dòng)處理子單元,用于在所述目標(biāo)子視圖完全位于所述網(wǎng)格容器的屏幕顯示范圍內(nèi)時(shí),控制所述網(wǎng)格容器相對(duì)于所述數(shù)據(jù)集靜止;
第二移動(dòng)處理子單元,用于在所述目標(biāo)子視圖不完全位于或者完全不位于所述網(wǎng)格容器的屏幕顯示范圍內(nèi)時(shí),計(jì)算使所述目標(biāo)子視圖移動(dòng)到網(wǎng)格容器的屏幕顯示范圍內(nèi)的橫向移動(dòng)和/或縱向移動(dòng)的最小距離,根據(jù)所述橫向移動(dòng)和/或縱向移動(dòng)的最小距離控制所述網(wǎng)格容器移動(dòng),以使所述目標(biāo)子視圖位于所述網(wǎng)格容器的屏幕顯示范圍內(nèi)。
優(yōu)選地,還包括拖動(dòng)控制單元,用于接收用戶輸入的屏幕拖動(dòng)控制指令,控制所述網(wǎng)格視圖移動(dòng),并在移動(dòng)過(guò)程中使接收所述屏幕拖動(dòng)控制指令前焦點(diǎn)所在的子視圖位于所述網(wǎng)格視圖的屏幕顯示范圍內(nèi)。
本發(fā)明與現(xiàn)有技術(shù)相比具有如下優(yōu)點(diǎn):本發(fā)明所提供的網(wǎng)格視圖控件的移動(dòng)控制方法中,可根據(jù)目標(biāo)子視圖的位置和網(wǎng)格容器的屏幕顯示范圍位置,控制網(wǎng)格容器相對(duì)于數(shù)據(jù)集移動(dòng)或靜止,以使目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍內(nèi)。可以理解地,為使目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍內(nèi),需控制網(wǎng)格容器向任意方向移動(dòng),使該網(wǎng)格視圖控件可實(shí)現(xiàn)任意方向移動(dòng)目的。
本發(fā)明所提供的網(wǎng)格視圖控件的移動(dòng)控制系統(tǒng)中,移動(dòng)控制單元可根據(jù)目標(biāo)子視圖的位置和網(wǎng)格容器的屏幕顯示范圍的位置,控制網(wǎng)格容器相對(duì)于數(shù)據(jù)集移動(dòng)或靜止,以使目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍內(nèi)??梢岳斫獾兀瑸槭鼓繕?biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍內(nèi),需控制網(wǎng)格容器向任意方向移動(dòng),使該網(wǎng)格視圖控件可實(shí)現(xiàn)任意方向移動(dòng)的目的。
附圖說(shuō)明
下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,附圖中:
圖1是本發(fā)明實(shí)施例1中網(wǎng)格視圖控件的移動(dòng)控制方法的一流程圖。
圖2是本發(fā)明實(shí)施例1中網(wǎng)格視圖控件的移動(dòng)控制方法的一局部流程圖。
圖3是本發(fā)明實(shí)施例1中數(shù)據(jù)集與網(wǎng)格容器的一示意圖。
圖4是本發(fā)明實(shí)施例1中數(shù)據(jù)集與網(wǎng)格容器的一示意圖。
圖5是本發(fā)明實(shí)施例1中數(shù)據(jù)集與網(wǎng)格容器的一示意圖。
圖6是本發(fā)明實(shí)施例1中數(shù)據(jù)集與網(wǎng)格容器的一示意圖。
圖7是本發(fā)明實(shí)施例1中數(shù)據(jù)集與網(wǎng)格容器的一示意圖。
圖8是本發(fā)明實(shí)施例2中網(wǎng)格視圖控件的移動(dòng)控制系統(tǒng)的一原理框圖。
圖9是本發(fā)明實(shí)施例2中網(wǎng)格視圖控件的移動(dòng)控制系統(tǒng)的另一原理框圖。
圖中:10、初始配置單元;20、位置確定單元;21、視圖數(shù)量確定子單元;22、起點(diǎn)視圖確定子單元;23、視圖填充確定子單元;30、指令接收單元;31、第一指令接收子單元;32、第二指令接收子單元;33、第三指令接收子單元;40、移動(dòng)控制單元;41、判斷子單元;42、第一移動(dòng)處理子單元;43、第二移動(dòng)處理子單元;50、拖動(dòng)控制單元。
具體實(shí)施方式
為了對(duì)本發(fā)明的技術(shù)特征、目的和效果有更加清楚的理解,現(xiàn)對(duì)照附圖詳細(xì)說(shuō)明本發(fā)明的具體實(shí)施方式。
實(shí)施例1
圖1示出本實(shí)施例中的網(wǎng)格視圖控件的移動(dòng)控制方法。如圖1所示,該網(wǎng)格視圖控件的移動(dòng)控制方法包括:
S10:初始化配置網(wǎng)格容器的寬高和數(shù)據(jù)集;網(wǎng)格容器的寬高限定網(wǎng)格容器的屏幕顯示范圍;數(shù)據(jù)集包括N*M個(gè)呈二維數(shù)組結(jié)構(gòu)排布的數(shù)據(jù)塊(Block)。如圖3-圖7所示,本實(shí)施例中的數(shù)據(jù)集(Adapter)放置有5*4個(gè)呈二維數(shù)組結(jié)構(gòu)排布的數(shù)據(jù)塊,預(yù)設(shè)每一數(shù)據(jù)塊的寬度為單位寬度,每一數(shù)據(jù)塊的高度為單位高度。通過(guò)初始化配置網(wǎng)格容器(GridView)的寬高(即寬度和高度),可限定該網(wǎng)格容器(GridView)的屏幕顯示范圍,本實(shí)施例中的網(wǎng)格容器的寬高為3.5*2.5(如圖3-圖7中黑色實(shí)線框所示)。
S20:根據(jù)子視圖的寬高和網(wǎng)格容器的寬高,確定網(wǎng)格容器的屏幕顯示范圍中顯示的子視圖的數(shù)量和每一子視圖的位置;其中,每一子視圖對(duì)應(yīng)網(wǎng)格容器的屏幕顯示范圍內(nèi)的數(shù)據(jù)塊。本實(shí)施例中,子視圖的寬高分別對(duì)應(yīng)數(shù)據(jù)塊(Block)的寬高,為單位寬度與單位高度。步驟S20具體包括:
S21:根據(jù)子視圖的寬高和網(wǎng)格容器的寬高分別確定網(wǎng)格容器的屏幕顯示范圍中橫向顯示和縱向顯示的子視圖的數(shù)量。由于子視圖對(duì)應(yīng)于網(wǎng)格容器的屏幕顯示范圍內(nèi)的數(shù)據(jù)塊,本實(shí)施例中,每一數(shù)據(jù)塊的寬度為單位寬度,每一數(shù)據(jù)塊的高度為單位高度,若預(yù)先配置的網(wǎng)格容器的寬高為3.5*2.5,則說(shuō)明在該網(wǎng)格容器的屏幕顯示范圍內(nèi)橫向顯示的子視圖為3.5個(gè),縱向顯示的子視圖為2.5個(gè)。
S22:依據(jù)初始默認(rèn)焦點(diǎn)所在的子視圖為起點(diǎn)子視圖。如圖3所示,由于在數(shù)據(jù)集(Adapter)所形成的二維數(shù)組結(jié)構(gòu)中,每一數(shù)據(jù)塊(Block)相對(duì)于其他數(shù)據(jù)塊(Block)的位置已確定,在網(wǎng)格容器界面初始時(shí),默認(rèn)焦點(diǎn)為數(shù)據(jù)集(Adapter)中左上角的第一個(gè)數(shù)據(jù)塊1,將數(shù)據(jù)塊1設(shè)置為網(wǎng)格容器的屏幕顯示范圍中的起點(diǎn)子視圖。
S23:從起點(diǎn)子視圖開(kāi)始依據(jù)橫向顯示和縱向顯示的子視圖的數(shù)量依次填充,以確定網(wǎng)格容器的屏幕顯示范圍中顯示的每一子視圖的位置。本實(shí)施例中,沒(méi)有完全落入網(wǎng)格容器的數(shù)據(jù)塊(如圖3中的子視圖11)和完全落入網(wǎng)格容器的數(shù)據(jù)塊均作為子視圖。相應(yīng)地,完全沒(méi)有落入范圍網(wǎng)格容器的屏幕顯示范圍中的數(shù)據(jù)塊不作為子視圖,如數(shù)據(jù)塊5。
S30:接收用戶輸入的移動(dòng)控制指令,根據(jù)移動(dòng)控制指令獲取網(wǎng)格容器中的目標(biāo)子視圖的位置??梢岳斫獾?,該移動(dòng)控制指令可以是通過(guò)遙控器按鍵類型輸入的滾動(dòng)控制指令,也可以是通過(guò)點(diǎn)擊網(wǎng)格容器所在屏幕中的數(shù)據(jù)塊所輸入的點(diǎn)擊控制指令,還可以是通過(guò)滑動(dòng)手勢(shì)以輸入的滑動(dòng)控制指令(即執(zhí)行touch事件)。
步驟S30可以具體包括:接收用戶輸入的滾動(dòng)控制指令,滾動(dòng)控制指令包括目標(biāo)子視圖對(duì)應(yīng)的數(shù)據(jù)塊在數(shù)據(jù)集中的坐標(biāo)信息;將坐標(biāo)信息對(duì)應(yīng)的數(shù)據(jù)塊確定為網(wǎng)格容器中的目標(biāo)子視圖??梢岳斫獾兀瑵L動(dòng)控制指令中的坐標(biāo)信息包括X軸坐標(biāo)和Y軸坐標(biāo),在本實(shí)施例中,若滾動(dòng)控制指令輸入的坐標(biāo)信息為(3,3),則其目標(biāo)子視圖對(duì)應(yīng)的數(shù)據(jù)塊為數(shù)據(jù)塊13,則數(shù)據(jù)塊13為網(wǎng)格容器中的目標(biāo)子視圖。
步驟S30可以具體包括:接收用戶通過(guò)點(diǎn)擊網(wǎng)格容器所在屏幕中的數(shù)據(jù)塊所輸入的點(diǎn)擊控制指令,當(dāng)接收用戶通過(guò)點(diǎn)擊數(shù)據(jù)塊以輸入點(diǎn)擊控制指令;將點(diǎn)擊控制指令所點(diǎn)擊到的數(shù)據(jù)塊確定網(wǎng)格容器中的目標(biāo)子視圖。如圖5所示,用戶可點(diǎn)擊網(wǎng)格容器的屏幕顯示范圍中的子視圖14,將子視圖14確定為網(wǎng)格容器的目標(biāo)子視圖。
步驟S30可以具體包括:接收用戶通過(guò)滑動(dòng)手勢(shì)以輸入的滑動(dòng)控制指令;滑動(dòng)控制指令終點(diǎn)所擊中的數(shù)據(jù)塊確定為網(wǎng)格容器中的目標(biāo)子視圖。如圖5所示,用戶可將手指在網(wǎng)格容器所在屏幕上滑動(dòng)以輸入滑動(dòng)控制指令,若用戶的滑動(dòng)手勢(shì)是從子視圖1移動(dòng)到子視圖13,則該滑動(dòng)控制指令終點(diǎn)所擊中的子視圖13即為網(wǎng)格容器的目標(biāo)子視圖。
S40:根據(jù)目標(biāo)子視圖的位置和網(wǎng)格容器的屏幕顯示范圍的位置,控制網(wǎng)格容器相對(duì)于數(shù)據(jù)集移動(dòng)或靜止,以使目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍中??梢岳斫獾?,由于用戶輸入的移動(dòng)控制指令所確定的目標(biāo)子視圖可能完全位于網(wǎng)格容器的屏幕顯示范圍內(nèi),也可能完全不位于或不完全位于在網(wǎng)格容器的屏幕顯示范圍之內(nèi),步驟S40具體包括:
S41:判斷目標(biāo)子視圖是否完全位于網(wǎng)格容器的屏幕顯示范圍內(nèi)。本實(shí)施例中,以數(shù)據(jù)集所在屏幕的位置建立二維坐標(biāo)系,以左上角為坐標(biāo)原點(diǎn);由于數(shù)據(jù)集中的每一數(shù)據(jù)塊的位置已確定,即目標(biāo)子視圖的位置已確定,若設(shè)目標(biāo)子視圖的位置中橫向坐標(biāo)范圍為(x1,x2),縱向坐標(biāo)范圍為(y1,y2);相應(yīng)地,其網(wǎng)格容器的屏幕顯示范圍的位置中橫向坐標(biāo)范圍(X1,X2),縱向坐標(biāo)范圍為(Y1,Y2)。若X1≦x1≦x2≦X2且Y1≦y1≦y2≦Y2;則目標(biāo)子視圖完全位于網(wǎng)格容器的屏幕顯示范圍內(nèi)。若x2≦X1或者X2≦x1或者y2≦Y1或者Y2≦y1,則目標(biāo)子視圖完全不位于網(wǎng)格容器的屏幕顯示范圍內(nèi)。其中,x2≦X1表示目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的左側(cè);X2≦x1表示目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的右側(cè);y2≦Y1表示目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的下側(cè);若Y2≦y1表示目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的上側(cè)。若不滿足完全位于或完全不位于網(wǎng)格容器的屏幕顯示范圍內(nèi)的條件,則目標(biāo)子視圖不完全位于網(wǎng)格容器的屏幕顯示范圍內(nèi)。
S42:若目標(biāo)子視圖完全位于網(wǎng)格容器的屏幕顯示范圍內(nèi),則控制網(wǎng)格容器相對(duì)于數(shù)據(jù)集靜止。可以理解地,若X1≦x1≦x2≦X2,且Y1≦y1≦y2≦Y2,則目標(biāo)子視圖完全位于網(wǎng)格容器的屏幕顯示范圍內(nèi),則控制網(wǎng)格容器相對(duì)于數(shù)據(jù)集靜止。
S43:若目標(biāo)子視圖不完全位于或者完全不位于網(wǎng)格容器的屏幕顯示范圍內(nèi),則計(jì)算使目標(biāo)子視圖移動(dòng)到網(wǎng)格容器的屏幕顯示范圍內(nèi)的橫向移動(dòng)和/或縱向移動(dòng)的最小距離,根據(jù)橫向移動(dòng)和/或縱向移動(dòng)的最小距離控制網(wǎng)格容器移動(dòng),以使目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍內(nèi)。本實(shí)施例中,若x2≦X1,則目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的左側(cè),其需橫向移動(dòng)的最小距離為X1-x1;若X2≦x1,則目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的右側(cè),其需橫向移動(dòng)的最小距離為x2-X2;若x1≦X1≦x2≦X2,則目標(biāo)子視圖局部位于網(wǎng)格容器的屏幕顯示范圍的左側(cè),其需橫向移動(dòng)的最小距離為X1-x1;若X1≦x1≦X2≦x2,則目標(biāo)子視圖局部位于網(wǎng)格容器的屏幕顯示范圍的右側(cè),其需橫向移動(dòng)的最小距離為x2-X2。相應(yīng)地,若y2≦Y1,則目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的下側(cè),其需縱向移動(dòng)的最小距離為Y1-y1;若Y2≦y1,則目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的上側(cè),其需縱向移動(dòng)的最小距離為y2-X2;若y1≦Y1≦y2≦Y2,則目標(biāo)子視圖局部位于網(wǎng)格容器的屏幕顯示范圍的下側(cè),其需縱向移動(dòng)的最小距離為Y1-y1;若Y1≦y1≦Y2≦y2,則目標(biāo)子視圖局部位于網(wǎng)格容器的屏幕顯示范圍的上側(cè),其需縱向移動(dòng)的最小距離為y2-X2。
圖3示出初始化配置的數(shù)據(jù)集及對(duì)應(yīng)的網(wǎng)格容器的屏幕顯示范圍的示意圖。在圖3中,任意點(diǎn)擊子視圖2、子視圖3、子視圖6、子視圖7和子視圖8,由于上述子視圖位于網(wǎng)格容器的屏幕顯示范圍內(nèi),只需將焦點(diǎn)所在的子視圖移動(dòng)到點(diǎn)擊到的子視圖上,該網(wǎng)格視圖控件不會(huì)滾動(dòng)。在圖3的基礎(chǔ)上,點(diǎn)擊子視圖13對(duì)應(yīng)的數(shù)據(jù)塊,焦點(diǎn)跳轉(zhuǎn)到子視圖13,由于子視圖13的下側(cè)局部超出網(wǎng)格容器的屏幕顯示范圍,計(jì)算縱向移動(dòng)的最小距離;控制網(wǎng)格視圖控件向下滾動(dòng),以使子視圖13位于網(wǎng)格容器的屏幕顯示范圍內(nèi),如圖4所示。若在圖4的基礎(chǔ)上,再點(diǎn)擊子視圖14使焦點(diǎn)跳轉(zhuǎn)到子視圖14,由于子視圖14的右側(cè)局部超出網(wǎng)格容器的屏幕顯示范圍,計(jì)算橫向移動(dòng)的最小距離,控制網(wǎng)格視圖控件向右滾動(dòng),以使子視圖14位于網(wǎng)格容器的屏幕顯示范圍內(nèi),如圖5所示。若在圖5的基礎(chǔ)上點(diǎn)擊數(shù)據(jù)集右下角的數(shù)據(jù)塊20,由于數(shù)據(jù)塊20完全在網(wǎng)格容器的屏幕顯示范圍之外,則需分別計(jì)算其橫向移動(dòng)的最小距離和縱向移動(dòng)的最小距離,控制網(wǎng)格視圖控件向下并向右滾動(dòng),使其最終效果如圖7所示。
S50:接收用戶輸入的屏幕拖動(dòng)控制指令,控制網(wǎng)格視圖移動(dòng),并在移動(dòng)過(guò)程中使接收屏幕拖動(dòng)控制指令前焦點(diǎn)所在的子視圖位于網(wǎng)格視圖的屏幕顯示范圍內(nèi)。當(dāng)焦點(diǎn)在子視圖14上時(shí),接收用戶輸入的屏幕拖動(dòng)控制指令,向左上角方向拖動(dòng)屏幕,則屏幕顯示范圍中顯示的子視圖的位置會(huì)發(fā)生變化,在屏幕拖動(dòng)過(guò)程中,使其焦點(diǎn)所在的子視圖14不超出網(wǎng)格視圖的屏幕顯示范圍,拖動(dòng)后如圖6所示。
可以理解地,對(duì)于每個(gè)需要顯示大量數(shù)據(jù)的網(wǎng)格容器(ViewGroup)來(lái)說(shuō),內(nèi)存控制尤為重要,本實(shí)施例中采用AbsListView的實(shí)現(xiàn)方式。AbsListView的核心一是數(shù)據(jù)集(Adapter)和子視圖(view)的分離,二是RecycleBin機(jī)制。第一點(diǎn)是AbsListView及其子類的最終展示的數(shù)據(jù)集都是通過(guò)adapter管理,而adapter會(huì)返回網(wǎng)格容器(ViewGroup)的每個(gè)子視圖(view),這樣可以降低代碼耦合性;第二點(diǎn)是子視圖(view)的緩存和重復(fù)利用。用戶對(duì)于網(wǎng)格容器(ViewGroup)的移動(dòng)操作,會(huì)導(dǎo)致子視圖(view)的位置變化,有新的子視圖(view)進(jìn)入顯示范圍同樣也有舊的子視圖(view)移出顯示范圍,RecycleBin的機(jī)制主要是維護(hù)一個(gè)當(dāng)前屏幕顯示范圍內(nèi)的view數(shù)組,并實(shí)時(shí)將移出去的子視圖(view)從父節(jié)點(diǎn)中detach,然后放到該類下的另一個(gè)數(shù)組中緩存,當(dāng)有新的子視圖(view)進(jìn)入屏幕顯示范圍內(nèi)時(shí),優(yōu)先從緩存中取子視圖(view),否則重新inflate一個(gè)子視圖(view),最終填充數(shù)據(jù)后attach到網(wǎng)格容器(ViewGroup)顯示。當(dāng)需要實(shí)現(xiàn)上下左右滾動(dòng)且內(nèi)存穩(wěn)定時(shí),我們就需要在各個(gè)方向上處理子視圖(view)的移出和移入,由于各個(gè)方向數(shù)量的不確定性,該網(wǎng)格容器(ViewGroup)的RecycleBin機(jī)制會(huì)比GridView復(fù)雜一個(gè)維度。
本實(shí)施例所提供的網(wǎng)格視圖控件的移動(dòng)控制方法中,可根據(jù)目標(biāo)子視圖的位置和網(wǎng)格容器的屏幕顯示范圍的位置,控制網(wǎng)格容器相對(duì)于數(shù)據(jù)集移動(dòng)或靜止,以使目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍內(nèi);可以理解地,為使目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍內(nèi),需控制網(wǎng)格容器向任意方向移動(dòng),使該網(wǎng)格視圖控件可實(shí)現(xiàn)任意方向移動(dòng)目的。
實(shí)施例2
圖8和圖9示出本實(shí)施例中的網(wǎng)格視圖控件的移動(dòng)控制系統(tǒng)。如圖1所示,該網(wǎng)格視圖控件的移動(dòng)控制系統(tǒng)包括:
初始配置單元10,用于初始化配置網(wǎng)格容器的寬高和數(shù)據(jù)集;網(wǎng)格容器的寬高限定網(wǎng)格容器的屏幕顯示范圍;數(shù)據(jù)集包括N*M個(gè)呈二維數(shù)組結(jié)構(gòu)排布的數(shù)據(jù)塊(Block)。如圖3-圖7所示,本實(shí)施例中的數(shù)據(jù)集(Adapter)放置有5*4個(gè)呈二維數(shù)組結(jié)構(gòu)排布的數(shù)據(jù)塊,預(yù)設(shè)每一數(shù)據(jù)塊的寬度為單位寬度,每一數(shù)據(jù)塊的高度為單位高度。通過(guò)初始化配置網(wǎng)格容器(GridView)的寬高(即寬度和高度),可限定該網(wǎng)格容器(GridView)的屏幕顯示范圍,本實(shí)施例中的網(wǎng)格容器的寬高為3.5*2.5(如圖3-圖7中黑色實(shí)線框所示)。
位置確定單元20,用于根據(jù)子視圖的寬高和網(wǎng)格容器的寬高,確定網(wǎng)格容器的屏幕顯示范圍中顯示的子視圖的數(shù)量和每一子視圖的位置;其中,每一子視圖對(duì)應(yīng)網(wǎng)格容器的屏幕顯示范圍內(nèi)的數(shù)據(jù)塊。本實(shí)施例中,子視圖的寬高分別對(duì)應(yīng)數(shù)據(jù)塊(Block)的寬高,為單位寬度與單位高度。位置確定單元20具體包括:
視圖數(shù)量確定子單元21,用于根據(jù)子視圖的寬高和網(wǎng)格容器的寬高分別確定網(wǎng)格容器的屏幕顯示范圍中橫向顯示和縱向顯示的子視圖的數(shù)量。由于子視圖對(duì)應(yīng)于網(wǎng)格容器的屏幕顯示范圍內(nèi)的數(shù)據(jù)塊,本實(shí)施例中,每一數(shù)據(jù)塊的寬度為單位寬度,每一數(shù)據(jù)塊的高度為單位高度,若預(yù)先配置的網(wǎng)格容器的寬高為3.5*2.5,則說(shuō)明在該網(wǎng)格容器的屏幕顯示范圍內(nèi)橫向顯示的子視圖為3.5個(gè),縱向顯示的子視圖為2.5個(gè)。
起點(diǎn)視圖確定子單元22,用于依據(jù)初始默認(rèn)焦點(diǎn)所在的子視圖為起點(diǎn)子視圖。如圖3所示,由于在數(shù)據(jù)集(Adapter)所形成的二維數(shù)組結(jié)構(gòu)中,每一數(shù)據(jù)塊(Block)相對(duì)于其他數(shù)據(jù)塊(Block)的位置已確定,在網(wǎng)格容器界面初始時(shí),默認(rèn)焦點(diǎn)為數(shù)據(jù)集(Adapter)中左上角的第一個(gè)數(shù)據(jù)塊1,將數(shù)據(jù)塊1設(shè)置為網(wǎng)格容器的屏幕顯示范圍中的起點(diǎn)子視圖。
視圖填充確定子單元23,用于從起點(diǎn)子視圖開(kāi)始依據(jù)橫向顯示和縱向顯示的子視圖的數(shù)量依次填充,以確定網(wǎng)格容器的屏幕顯示范圍中顯示的每一子視圖的位置。可以理解地,本實(shí)施例中,沒(méi)有完全落入網(wǎng)格容器的數(shù)據(jù)塊(如圖3中的子視圖11)和完全落入網(wǎng)格容器的數(shù)據(jù)塊均作為子視圖(如圖3中的子視圖6)。相應(yīng)地,完全沒(méi)有落入范圍網(wǎng)格容器的屏幕顯示范圍中的數(shù)據(jù)塊不作為子視圖顯示,如數(shù)據(jù)塊5。
指令接收單元30,用于接收用戶輸入的移動(dòng)控制指令,根據(jù)移動(dòng)控制指令獲取網(wǎng)格容器中的目標(biāo)子視圖的位置??梢岳斫獾?,該移動(dòng)控制指令可以是通過(guò)遙控器按鍵類型輸入的滾動(dòng)控制指令,也可以是通過(guò)點(diǎn)擊網(wǎng)格容器所在屏幕中的數(shù)據(jù)塊所輸入的點(diǎn)擊控制指令,還可以是通過(guò)滑動(dòng)手勢(shì)以輸入的滑動(dòng)控制指令(即執(zhí)行touch事件)。
指令接收單元30可以包括第一指令接收子單元31,用于接收用戶輸入的滾動(dòng)控制指令,滾動(dòng)控制指令包括目標(biāo)子視圖對(duì)應(yīng)的數(shù)據(jù)塊在數(shù)據(jù)集中的坐標(biāo)信息;將坐標(biāo)信息對(duì)應(yīng)的數(shù)據(jù)塊確定為網(wǎng)格容器中的目標(biāo)子視圖??梢岳斫獾?,滾動(dòng)控制指令中的坐標(biāo)信息包括X軸坐標(biāo)和Y軸坐標(biāo),在本實(shí)施例中,若滾動(dòng)控制指令輸入的坐標(biāo)信息為(3,3),則其目標(biāo)子視圖對(duì)應(yīng)的數(shù)據(jù)塊為數(shù)據(jù)塊13,則數(shù)據(jù)塊13為網(wǎng)格容器中的目標(biāo)子視圖。
指令接收單元30可以包括第二指令接收子單元32,用于接收用戶通過(guò)點(diǎn)擊網(wǎng)格容器所在屏幕中的數(shù)據(jù)塊所輸入的點(diǎn)擊控制指令,當(dāng)接收用戶通過(guò)點(diǎn)擊數(shù)據(jù)塊以輸入點(diǎn)擊控制指令;將點(diǎn)擊控制指令所點(diǎn)擊到的數(shù)據(jù)塊確定網(wǎng)格容器中的目標(biāo)子視圖。如圖5所示,用戶可點(diǎn)擊網(wǎng)格容器的屏幕顯示范圍中的子視圖14,將子視圖14確定為網(wǎng)格容器的目標(biāo)子視圖。
指令接收單元30可以包括第三指令接收子單元33,用于接收用戶通過(guò)滑動(dòng)手勢(shì)以輸入的滑動(dòng)控制指令;滑動(dòng)控制指令終點(diǎn)所擊中的數(shù)據(jù)塊確定為網(wǎng)格容器中的目標(biāo)子視圖。如圖5所示,用戶可將手指在網(wǎng)格容器所在屏幕上滑動(dòng)以輸入滑動(dòng)控制指令,若用戶的滑動(dòng)手勢(shì)是從子視圖1移動(dòng)到子視圖13,則該滑動(dòng)控制指令終點(diǎn)所擊中的子視圖13即為網(wǎng)格容器的目標(biāo)子視圖。
移動(dòng)控制單元40,用于根據(jù)目標(biāo)子視圖的位置和網(wǎng)格容器的屏幕顯示范圍的位置,控制網(wǎng)格容器相對(duì)于數(shù)據(jù)集移動(dòng)或靜止,以使目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍中??梢岳斫獾?,由于用戶輸入的移動(dòng)控制指令所確定的目標(biāo)子視圖可能完全位于網(wǎng)格容器的屏幕顯示范圍內(nèi),也可能完全不位于或不完全位于網(wǎng)格容器的屏幕顯示范圍之內(nèi)。移動(dòng)控制單元40具體包括判斷子單元41、第一移動(dòng)處理子單元42和第二移動(dòng)處理子單元43。
判斷子單元41,用于判斷目標(biāo)子視圖是否完全位于網(wǎng)格容器的屏幕顯示范圍內(nèi)。本實(shí)施例中,以數(shù)據(jù)集所在屏幕的位置建立二維坐標(biāo)系,以左上角為坐標(biāo)原點(diǎn);由于數(shù)據(jù)集中的每一數(shù)據(jù)塊的位置已確定,即目標(biāo)子視圖的位置已確定,若設(shè)目標(biāo)子視圖的位置中橫向坐標(biāo)范圍為(x1,x2),縱向坐標(biāo)范圍為(y1,y2);相應(yīng)地,其網(wǎng)格容器的屏幕顯示范圍的位置中橫向坐標(biāo)范圍(X1,X2),縱向坐標(biāo)范圍為(Y1,Y2)。若X1≦x1≦x2≦X2且Y1≦y1≦y2≦Y2;則目標(biāo)子視圖完全位于網(wǎng)格容器的屏幕顯示范圍內(nèi)。若x2≦X1或者X2≦x1或者y2≦Y1或者Y2≦y1,則目標(biāo)子視圖完全不位于網(wǎng)格容器的屏幕顯示范圍內(nèi)。其中,x2≦X1表示目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的左側(cè);X2≦x1表示目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的右側(cè);y2≦Y1表示目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的下側(cè);若Y2≦y1表示目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的上側(cè)。若不滿足完全位于或完全不位于網(wǎng)格容器的屏幕顯示范圍內(nèi)的條件,則目標(biāo)子視圖不完全位于網(wǎng)格容器的屏幕顯示范圍內(nèi)。。
第一移動(dòng)處理子單元42,用于在目標(biāo)子視圖完全位于網(wǎng)格容器的屏幕顯示范圍內(nèi)時(shí),控制網(wǎng)格容器相對(duì)于數(shù)據(jù)集靜止??梢岳斫獾?,若X1≦x1≦x2≦X2,且Y1≦y1≦y2≦Y2,則目標(biāo)子視圖完全位于網(wǎng)格容器的屏幕顯示范圍內(nèi),則控制網(wǎng)格容器相對(duì)于數(shù)據(jù)集靜止。
第二移動(dòng)處理子單元43,用于在目標(biāo)子視圖不完全位于或者完全不位于網(wǎng)格容器的屏幕顯示范圍內(nèi)時(shí),計(jì)算使目標(biāo)子視圖移動(dòng)到網(wǎng)格容器的屏幕顯示范圍內(nèi)的橫向移動(dòng)和/或縱向移動(dòng)的最小距離,根據(jù)橫向移動(dòng)和/或縱向移動(dòng)的最小距離控制網(wǎng)格容器移動(dòng),以使目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍內(nèi)。本實(shí)施例中,若x2≦X1,則目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的左側(cè),其需橫向移動(dòng)的最小距離為X1-x1;若X2≦x1,則目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的右側(cè),其需橫向移動(dòng)的最小距離為x2-X2;若x1≦X1≦x2≦X2,則目標(biāo)子視圖局部位于網(wǎng)格容器的屏幕顯示范圍的左側(cè),其需橫向移動(dòng)的最小距離為X1-x1;若X1≦x1≦X2≦x2,則目標(biāo)子視圖局部位于網(wǎng)格容器的屏幕顯示范圍的右側(cè),其需橫向移動(dòng)的最小距離為x2-X2。相應(yīng)地,若y2≦Y1,則目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的下側(cè),其需縱向移動(dòng)的最小距離為Y1-y1;若Y2≦y1,則目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍的上側(cè),其需縱向移動(dòng)的最小距離為y2-X2;若y1≦Y1≦y2≦Y2,則目標(biāo)子視圖局部位于網(wǎng)格容器的屏幕顯示范圍的下側(cè),其需縱向移動(dòng)的最小距離為Y1-y1;若Y1≦y1≦Y2≦y2,則目標(biāo)子視圖局部位于網(wǎng)格容器的屏幕顯示范圍的上側(cè),其需縱向移動(dòng)的最小距離為y2-X2。
圖3示出初始化配置的數(shù)據(jù)集及對(duì)應(yīng)的網(wǎng)格容器的屏幕顯示范圍的示意圖。在圖3中,任意點(diǎn)擊子視圖2、子視圖3、子視圖6、子視圖7和子視圖8,由于上述子視圖位于網(wǎng)格容器的屏幕顯示范圍內(nèi),只需將焦點(diǎn)所在的子視圖移動(dòng)到點(diǎn)擊到的子視圖上,該網(wǎng)格視圖控件不會(huì)滾動(dòng)。在圖3的基礎(chǔ)上,點(diǎn)擊子視圖13對(duì)應(yīng)的數(shù)據(jù)塊,焦點(diǎn)跳轉(zhuǎn)到子視圖13,由于子視圖13的下側(cè)局部超出網(wǎng)格容器的屏幕顯示范圍,計(jì)算縱向移動(dòng)的最小距離;控制網(wǎng)格視圖控件向下滾動(dòng),以使子視圖13位于網(wǎng)格容器的屏幕顯示范圍內(nèi),如圖4所示。若在圖4的基礎(chǔ)上,再點(diǎn)擊子視圖14使焦點(diǎn)跳轉(zhuǎn)到子視圖14,由于子視圖14的右側(cè)局部超出網(wǎng)格容器的屏幕顯示范圍,計(jì)算橫向移動(dòng)的最小距離,控制網(wǎng)格視圖控件向右滾動(dòng),以使子視圖14位于網(wǎng)格容器的屏幕顯示范圍內(nèi),如圖5所示。若在圖5的基礎(chǔ)上點(diǎn)擊數(shù)據(jù)集右下角的數(shù)據(jù)塊20,由于數(shù)據(jù)塊20完全在網(wǎng)格容器的屏幕顯示范圍之外,則需分別計(jì)算其橫向移動(dòng)的最小距離和縱向移動(dòng)的最小距離,控制網(wǎng)格視圖控件向下并向右滾動(dòng),使其最終效果如圖7所示。
拖動(dòng)控制單元50,用于接收用戶輸入的屏幕拖動(dòng)控制指令,控制網(wǎng)格視圖移動(dòng),并在移動(dòng)過(guò)程中使接收屏幕拖動(dòng)控制指令前焦點(diǎn)所在的子視圖位于網(wǎng)格視圖的屏幕顯示范圍內(nèi)。當(dāng)焦點(diǎn)在子視圖14上時(shí),接收用戶輸入的屏幕拖動(dòng)控制指令,向左上角方向拖動(dòng)屏幕,則屏幕顯示范圍中顯示的子視圖的位置會(huì)發(fā)生變化,在屏幕拖動(dòng)過(guò)程中,使其焦點(diǎn)所在的子視圖14不超出網(wǎng)格視圖的屏幕顯示范圍,拖動(dòng)后如圖6所示。
可以理解地,對(duì)于每個(gè)需要顯示大量數(shù)據(jù)的網(wǎng)格容器(ViewGroup)來(lái)說(shuō),內(nèi)存控制尤為重要,本實(shí)施例中采用AbsListView的實(shí)現(xiàn)方式。AbsListView的核心一是數(shù)據(jù)集(Adapter)和子視圖(view)的分離,二是RecycleBin機(jī)制。第一點(diǎn)是AbsListView及其子類的最終展示的數(shù)據(jù)集都是通過(guò)adapter管理,而adapter會(huì)返回網(wǎng)格容器(ViewGroup)的每個(gè)子視圖(view),這樣可以降低代碼耦合性;第二點(diǎn)是子視圖(view)的緩存和重復(fù)利用。用戶對(duì)于網(wǎng)格容器(ViewGroup)的移動(dòng)操作,會(huì)導(dǎo)致子視圖(view)的位置變化,有新的子視圖(view)進(jìn)入顯示范圍同樣也有舊的子視圖(view)移出顯示范圍,RecycleBin的機(jī)制主要是維護(hù)一個(gè)當(dāng)前屏幕顯示范圍內(nèi)的view數(shù)組,并實(shí)時(shí)將移出去的子視圖(view)從父節(jié)點(diǎn)中detach,然后放到該類下的另一個(gè)數(shù)組中緩存,當(dāng)有新的子視圖(view)進(jìn)入屏幕顯示范圍內(nèi)時(shí),優(yōu)先從緩存中取子視圖(view),否則重新inflate一個(gè)子視圖(view),最終填充數(shù)據(jù)后attach到網(wǎng)格容器(ViewGroup)顯示。當(dāng)需要實(shí)現(xiàn)上下左右滾動(dòng)且內(nèi)存穩(wěn)定時(shí),我們就需要在各個(gè)方向上處理子視圖(view)的移出和移入,由于各個(gè)方向數(shù)量的不確定性,該網(wǎng)格容器(ViewGroup)的RecycleBin機(jī)制會(huì)比GridView復(fù)雜一個(gè)維度。
本實(shí)施例所提供的網(wǎng)格視圖控件的移動(dòng)控制系統(tǒng)中,移動(dòng)控制單元40可根據(jù)目標(biāo)子視圖的位置和網(wǎng)格容器的屏幕顯示范圍的位置,控制網(wǎng)格容器相對(duì)于數(shù)據(jù)集移動(dòng)或靜止,以使目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍內(nèi);可以理解地,為使目標(biāo)子視圖位于網(wǎng)格容器的屏幕顯示范圍內(nèi),需控制網(wǎng)格容器向任意方向移動(dòng),使該網(wǎng)格視圖控件可實(shí)現(xiàn)任意方向移動(dòng)目的。
本發(fā)明是通過(guò)幾個(gè)具體實(shí)施例進(jìn)行說(shuō)明的,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明白,在不脫離本發(fā)明范圍的情況下,還可以對(duì)本發(fā)明進(jìn)行各種變換和等同替代。另外,針對(duì)特定情形或具體情況,可以對(duì)本發(fā)明做各種修改,而不脫離本發(fā)明的范圍。因此,本發(fā)明不局限于所公開(kāi)的具體實(shí)施例,而應(yīng)當(dāng)包括落入本發(fā)明權(quán)利要求范圍內(nèi)的全部實(shí)施方式。