本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種顯示視圖控件動(dòng)態(tài)效果的方法及裝置。
背景技術(shù):
瀏覽器頁(yè)面中常常嵌有圖像窗口,用于顯示靜態(tài)或動(dòng)態(tài)的視圖控件(Image View)。此外,一些系統(tǒng)原生或第三方開(kāi)發(fā)的應(yīng)用程序中也會(huì)內(nèi)嵌這種圖像窗口,較為常見(jiàn)的包括操作系統(tǒng)的桌面背景,或者天氣類(lèi)應(yīng)用中顯示陰晴雨雪圖標(biāo)的窗口等。
當(dāng)圖像窗口用以顯示動(dòng)態(tài)視圖控件時(shí),視圖控件的動(dòng)態(tài)效果往往是程序預(yù)先設(shè)置好的,例如雨點(diǎn)從上飄落至下,或者信息標(biāo)簽按照預(yù)定軌跡進(jìn)行循環(huán)位移等。這種動(dòng)態(tài)效果樣式呆板,無(wú)法對(duì)用戶(hù)操作進(jìn)行響應(yīng),不具有交互性能。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種顯示視圖控件動(dòng)態(tài)效果的方法及裝置,能夠解決圖像窗口欠缺交互功能的問(wèn)題。
為解決上述問(wèn)題,第一方面,本發(fā)明提供了一種顯示視圖控件動(dòng)態(tài)效果的方法,包括:
檢測(cè)終端相對(duì)終端本體上預(yù)設(shè)坐標(biāo)軸的旋轉(zhuǎn)角度;
根據(jù)所述旋轉(zhuǎn)角度確定圖像窗口中視圖控件的位移方向和位移長(zhǎng)度,所述圖像窗口為終端提供的可視化部件;
按照所述位移方向及所述位移長(zhǎng)度,顯示所述視圖控件在所述圖像窗口中移動(dòng)的動(dòng)態(tài)效果。
第二方面,本發(fā)明還提供了一種顯示視圖控件動(dòng)態(tài)效果的裝置,包括:
檢測(cè)單元,用于檢測(cè)終端相對(duì)終端本體上預(yù)設(shè)坐標(biāo)軸的旋轉(zhuǎn)角度;
確定單元,用于根據(jù)所述旋轉(zhuǎn)角度確定圖像窗口中視圖控件的位移方向和位移長(zhǎng)度,所述圖像窗口為終端提供的可視化部件;
顯示單元,用于按照所述位移方向及所述位移長(zhǎng)度,顯示所述視圖控件在所述圖像窗口中移動(dòng)的動(dòng)態(tài)效果。
第三方面,本發(fā)明還提供了一種顯示視圖控件動(dòng)態(tài)效果的裝置,包括:
方向傳感器,被配置為檢測(cè)終端相對(duì)終端本體上預(yù)設(shè)坐標(biāo)軸的旋轉(zhuǎn)角度;
處理器,被配置為根據(jù)所述旋轉(zhuǎn)角度確定圖像窗口中視圖控件的位移方向和位移長(zhǎng)度,所述圖像窗口為終端提供的可視化部件;
顯示器,被配置為按照所述位移方向及所述位移長(zhǎng)度,顯示所述視圖控件在所述圖像窗口中移動(dòng)的動(dòng)態(tài)效果;
存儲(chǔ)器,被配置為存儲(chǔ)所述處理器的可執(zhí)行指令;
總線,被配置為耦接所述方向傳感器、所述處理器、所述顯示器及所述存儲(chǔ)器。
本發(fā)明提供的顯示視圖控件動(dòng)態(tài)效果的方法及裝置,能夠通過(guò)檢測(cè)終端相對(duì)預(yù)設(shè)坐標(biāo)軸的旋轉(zhuǎn)角度捕捉到終端在三維空間中的姿態(tài)變化,根據(jù)該姿態(tài)變化確定出圖像窗口中視圖控件的位移方向和位移長(zhǎng)度,并據(jù)此顯示視圖控件在圖像窗口中移動(dòng)的動(dòng)態(tài)效果。與現(xiàn)有技術(shù)中按照預(yù)定程序展示動(dòng)態(tài)效果相比,本發(fā)明能夠基于終端握持方式的變化調(diào)整圖像窗口中動(dòng)畫(huà)元素的動(dòng)態(tài)效果,從而實(shí)現(xiàn)具有人機(jī)交互功能的圖像展示方式。
上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說(shuō)明
通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1示出了本發(fā)明實(shí)施例提供的一種顯示視圖控件動(dòng)態(tài)效果的方法流程圖;
圖2示出了本發(fā)明實(shí)施例中終端X軸、Y軸、Z軸的示意圖;
圖3a示出了本發(fā)明實(shí)施例中終端圍繞X軸旋轉(zhuǎn)的示意圖;
圖3b示出了本發(fā)明實(shí)施例中終端圍繞Y軸旋轉(zhuǎn)的示意圖;
圖3c示出了本發(fā)明實(shí)施例中終端圍繞Z軸旋轉(zhuǎn)的示意圖;
圖4示出了本發(fā)明實(shí)施例中位移方向所在延長(zhǎng)線與Y軸之間存在夾角的示意圖;
圖5a和圖5b分別示出了本發(fā)明實(shí)施例中旋轉(zhuǎn)角度與位移方向關(guān)系的示意圖;
圖6a和圖6b分別示出了本發(fā)明實(shí)施例中包含視圖控件的圖像窗口的示意圖;
圖7示出了本發(fā)明實(shí)施例提供的另一種顯示視圖控件動(dòng)態(tài)效果的方法流程圖;
圖8示出了本發(fā)明實(shí)施例提供的映射表的示意圖;
圖9a和圖9b分別示出了本發(fā)明實(shí)施例中位移長(zhǎng)度與旋轉(zhuǎn)角度數(shù)值之間關(guān)系的示意圖;
圖10示出了本發(fā)明實(shí)施例中另一種位移長(zhǎng)度與旋轉(zhuǎn)角度數(shù)值之間關(guān)系的示意圖;
圖11a和圖11b分別示出了本發(fā)明實(shí)施例中終端圍繞Y軸旋轉(zhuǎn)的動(dòng)態(tài)效果的示意圖;
圖12a和圖12b分別示出了本發(fā)明實(shí)施例中終端圍繞X軸旋轉(zhuǎn)的動(dòng)態(tài)效果的示意圖;
圖13a和圖13b分別示出了本發(fā)明實(shí)施例中終端圍繞Z軸旋轉(zhuǎn)的動(dòng)態(tài)效果的示意圖;
圖14a和圖14b示出了本發(fā)明實(shí)施例中終端圍繞X軸及Y軸旋轉(zhuǎn)的動(dòng)態(tài)效果的示意圖;
圖15a和圖15b示出了本發(fā)明實(shí)施例中終端圍繞X軸及Z軸旋轉(zhuǎn)的動(dòng)態(tài)效果的示意圖;
圖16示出了本發(fā)明實(shí)施例提供的一種顯示視圖控件動(dòng)態(tài)效果的裝置的組成框圖;
圖17示出了本發(fā)明實(shí)施例提供的另一種顯示視圖控件動(dòng)態(tài)效果的裝置的組成框圖;
圖18示出了本發(fā)明實(shí)施例提供的又一種顯示視圖控件動(dòng)態(tài)效果的裝置的組成框圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
為解決現(xiàn)有技術(shù)中圖像窗口的顯示方式欠缺交互功能的問(wèn)題,本發(fā)明實(shí)施例提供一種顯示視圖控件動(dòng)態(tài)效果的方法。該方法應(yīng)用于終端側(cè),所述終端包括但不限于是:手機(jī)、平板電腦、可穿戴式設(shè)備。實(shí)際應(yīng)用中,一切具有角度檢測(cè)功能以及圖像輸出功能的便攜式設(shè)備均可實(shí)現(xiàn)本發(fā)明實(shí)施例提供的方法。
如圖1所示,該方法包括:
101、檢測(cè)終端相對(duì)終端本體上預(yù)設(shè)坐標(biāo)軸的旋轉(zhuǎn)角度。
終端通過(guò)其自帶的檢測(cè)部件獲取旋轉(zhuǎn)角度參數(shù),該部件可以?xún)?nèi)置于終端中,也可以集成在終端外殼上。實(shí)際應(yīng)用中,該檢測(cè)部件具體可以是方向傳感器。
所述預(yù)設(shè)坐標(biāo)軸是以終端終端本體為參照系設(shè)置的,如圖2所示,與手機(jī)寬邊平行的為X軸、與手機(jī)長(zhǎng)邊平行的為Y軸、垂直于手機(jī)屏幕所在平面的為Z軸。
如圖3a所示,如果將手機(jī)屏幕朝上放置在水平桌面上,將手機(jī)頂部逐漸抬起,或者將手機(jī)底部逐漸抬起,那么手機(jī)將圍繞X軸轉(zhuǎn)動(dòng),方向傳感器檢測(cè)到手機(jī)相對(duì)X軸的旋轉(zhuǎn)角度。實(shí)際應(yīng)用中,手機(jī)圍繞X軸旋轉(zhuǎn)的角度變化范圍為[-180°,+180°]。具體的,當(dāng)手機(jī)屏幕朝上放置在水平桌面上時(shí),X軸的旋轉(zhuǎn)角度為0°,當(dāng)將手機(jī)頂部逐漸抬起直至手機(jī)屏幕朝下放置在水平桌面上時(shí),手機(jī)向后翻轉(zhuǎn)了180°,此時(shí)X軸的旋轉(zhuǎn)角度為-180°;與此相反,當(dāng)將手機(jī)底部逐漸抬起直至手機(jī)屏幕朝下放置在水平桌面上時(shí),手機(jī)向前翻轉(zhuǎn)了180°,此時(shí)X軸的旋轉(zhuǎn)角度為+180°。
如圖3b所示,如果將手機(jī)屏幕朝上放置在水平桌面上,將手機(jī)左側(cè)逐漸抬起,或者將手機(jī)右側(cè)逐漸抬起,那么手機(jī)將圍繞Y軸轉(zhuǎn)動(dòng),方向傳感器檢測(cè)到手機(jī)相對(duì)Y軸的旋轉(zhuǎn)角度。實(shí)際應(yīng)用中,手機(jī)圍繞Y軸旋轉(zhuǎn)的角度變化范圍為[-90°,+90°]。具體的,當(dāng)手機(jī)屏幕朝上放置在水平桌面上時(shí),Y軸的旋轉(zhuǎn)角度為0°,當(dāng)將手機(jī)左側(cè)逐漸抬起直至手機(jī)垂直于水平桌面時(shí),手機(jī)向右翻轉(zhuǎn)了90°,此時(shí)Y軸的旋轉(zhuǎn)角度為-90°;與此相反,當(dāng)將手機(jī)右側(cè)逐漸抬起直至手機(jī)垂直于水平桌面時(shí),手機(jī)向左翻轉(zhuǎn)了180°,此時(shí)Y軸的旋轉(zhuǎn)角度為+90°。
如圖3c所示,如果將手機(jī)屏幕朝上放置在水平桌面上,使手機(jī)在水平平面上做順時(shí)針或逆時(shí)針旋轉(zhuǎn)時(shí),手機(jī)將圍繞Z軸轉(zhuǎn)動(dòng),方向傳感器檢測(cè)到手機(jī)相對(duì)Z軸的旋轉(zhuǎn)角度。實(shí)際應(yīng)用中,手機(jī)圍繞Z軸旋轉(zhuǎn)的角度變化范圍為[0°,360°)。具體的,當(dāng)手機(jī)屏幕朝上放置在水平桌面上時(shí),手機(jī)頂部分別朝向正東、正南、正西、正北四個(gè)方向時(shí)的Z軸的旋轉(zhuǎn)角度依次為:90°、180°、270°及0°。
本實(shí)施例中,方向傳感器對(duì)Z、X、Y三軸的旋轉(zhuǎn)角度進(jìn)行實(shí)時(shí)檢測(cè),并分別記做參數(shù)values[0]、values[1]和values[2]。終端可以利用其中任意一個(gè)坐標(biāo)軸的旋轉(zhuǎn)角度調(diào)整動(dòng)態(tài)效果,也可以結(jié)合其中任意兩個(gè)或三個(gè)坐標(biāo)軸的旋轉(zhuǎn)角度對(duì)動(dòng)態(tài)效果進(jìn)行合成,本發(fā)明后續(xù)實(shí)施例將對(duì)此進(jìn)行介紹。
需要說(shuō)明的是,上述坐標(biāo)軸是為方便構(gòu)建三維坐標(biāo)系而虛構(gòu)的,并不具有可見(jiàn)形態(tài),也不會(huì)對(duì)終端的外觀造成破壞。
102、根據(jù)旋轉(zhuǎn)角度確定圖像窗口中視圖控件的位移方向和位移長(zhǎng)度。
終端中可以預(yù)先配置旋轉(zhuǎn)角度與位移方向之間的映射關(guān)系,該關(guān)系可以基于具體的設(shè)計(jì)需求設(shè)置。在本實(shí)施例的一種實(shí)現(xiàn)方式中,旋轉(zhuǎn)角度與位移方向之間的映射關(guān)系可以被配置為:位移方向所在延長(zhǎng)線與坐標(biāo)軸成預(yù)設(shè)角度值的夾角。以終端圍繞Y軸旋轉(zhuǎn)為例,圖4給出了幾種不同夾角值的情況,當(dāng)終端圍繞Y軸旋轉(zhuǎn)時(shí),圖像窗口中的視圖控件可以按照?qǐng)D4中虛線所示方向移動(dòng)。
進(jìn)一步的,在位移方向所在延長(zhǎng)線上,還具有兩個(gè)方向相反的位移方向,本實(shí)施例中同樣可以基于具體的設(shè)計(jì)需求設(shè)置視圖控件在該延長(zhǎng)線上的具體位移方向。仍以Y軸為例,當(dāng)視圖控件為云彩、氣球等元素時(shí),為追求輕質(zhì)物體向上漂浮的設(shè)計(jì)效果,可以配置視圖控件的位移方向與終端的旋轉(zhuǎn)方向相反,例如在圖5a中,當(dāng)終端左側(cè)向上抬起以圍繞Y軸向右旋轉(zhuǎn)時(shí),可以配置視圖控件向圖像窗口左側(cè)移動(dòng);與此相反的,當(dāng)視圖控件為小球、磚塊等元素時(shí),為追求重質(zhì)物體向下滾動(dòng)的設(shè)計(jì)效果,可以配置視圖控件的位移方向與終端的旋轉(zhuǎn)方向一致,例如在圖5b中,當(dāng)終端左側(cè)向上抬起以圍繞Y軸向右旋轉(zhuǎn)時(shí),可以配置視圖控件向圖像窗口右側(cè)移動(dòng)。
對(duì)于位移長(zhǎng)度,終端中也可以預(yù)先配置好旋轉(zhuǎn)角度與位移長(zhǎng)度之間的映射關(guān)系或計(jì)算關(guān)系。此外,終端中還可以配置不同的位移形式,例如做拋物線式的曲線運(yùn)動(dòng),或者做破浪線式的迂回運(yùn)動(dòng),或者基于運(yùn)動(dòng)軌跡上的預(yù)設(shè)離線點(diǎn)做跳躍運(yùn)動(dòng)等。為便于說(shuō)明和理解,本實(shí)施例將以直線運(yùn)動(dòng)為例進(jìn)行說(shuō)明。
103、按照位移方向及位移長(zhǎng)度,顯示視圖控件在圖像窗口中移動(dòng)的動(dòng)態(tài)效果。
本實(shí)施例主要針對(duì)圖像窗口中的視圖控件實(shí)現(xiàn)動(dòng)態(tài)移動(dòng)效果,所述圖像窗口為終端提供的可視化部件,可以由終端的操作系統(tǒng)提供該可視化部件的調(diào)用接口,操作系統(tǒng)的原生應(yīng)用程序或者第三方應(yīng)用程序可以通過(guò)接口調(diào)用的形式展示圖像窗口。所述視圖控件是指圖像窗口中呈現(xiàn)的圖像元素。本實(shí)施例中,視圖控件可以是圖像視圖控件,例如圖6a中的樹(shù)木、云彩、手指等,或者視圖控件也可以是文字視圖控件,例如圖6b中對(duì)話框里顯示的字符等。這些圖像元素是圖像窗口的組成部分之一,與一般意義上以文件形式存儲(chǔ)的照片不同,圖像元素通常以控件的形式存在,在程序開(kāi)發(fā)、運(yùn)行階段可以單獨(dú)進(jìn)行設(shè)計(jì)和控制。本實(shí)施例中,可以對(duì)圖像窗口中可以移動(dòng)的視圖控件進(jìn)行預(yù)先設(shè)定,本實(shí)施例不對(duì)視圖控件的屬性和數(shù)量進(jìn)行限制。
在按照位移方向和位移長(zhǎng)度移動(dòng)視圖控件時(shí),終端需要不斷繪制并呈現(xiàn)許多靜態(tài)形式的圖像窗口的圖像幀,這些圖像幀串聯(lián)起來(lái)便實(shí)現(xiàn)了視圖控件的動(dòng)態(tài)效果。本實(shí)施例中,視圖控件每產(chǎn)生一個(gè)長(zhǎng)度步進(jìn)值的位移變化時(shí),終端繪制并呈現(xiàn)一個(gè)對(duì)應(yīng)的圖像幀。所述長(zhǎng)度步進(jìn)值是指視圖控件移動(dòng)的最小單位長(zhǎng)度,該值可以預(yù)先進(jìn)行設(shè)置,實(shí)際應(yīng)用中可以使用像素點(diǎn)數(shù)量度量長(zhǎng)度步進(jìn)值,例如可以將長(zhǎng)度步進(jìn)值設(shè)置為10個(gè)像素點(diǎn)、5個(gè)像素點(diǎn)等。在對(duì)動(dòng)態(tài)效果流暢度要求較為嚴(yán)格的情況下,長(zhǎng)度步進(jìn)值的最小粒度可以為1個(gè)像素點(diǎn),此時(shí),假設(shè)位移長(zhǎng)度為1000個(gè)像素點(diǎn),那么理論上終端需要繪制1000個(gè)圖像幀以展示完整的動(dòng)態(tài)效果。
需要說(shuō)明的是,在終端旋轉(zhuǎn)的過(guò)程中,圖1所示流程是不斷重復(fù)執(zhí)行的,這是由于:方向傳感器對(duì)角度變化的檢測(cè)是實(shí)時(shí)進(jìn)行的,在終端旋轉(zhuǎn)的過(guò)程中,方向傳感器不斷返回新的旋轉(zhuǎn)角度值。在方向傳感器每獲得一個(gè)新的旋轉(zhuǎn)角度值后,終端就會(huì)執(zhí)行一次圖1所示流程,獲取該旋轉(zhuǎn)角度、確定相應(yīng)的位移方向和位移長(zhǎng)度,并據(jù)此顯示相應(yīng)的動(dòng)態(tài)效果。在終端旋轉(zhuǎn)完畢后,對(duì)應(yīng)該旋轉(zhuǎn)過(guò)程的整體動(dòng)態(tài)效果是由該旋轉(zhuǎn)過(guò)程中每次角度變化所產(chǎn)生的動(dòng)態(tài)效果的累加。與長(zhǎng)度步進(jìn)值類(lèi)似的,方向傳感器也會(huì)按照某一預(yù)先設(shè)定的角度粒度返回旋轉(zhuǎn)角度,該粒度即為角度步進(jìn)值。實(shí)際應(yīng)用中,可以將角度步進(jìn)值設(shè)置為1°,如此,方向傳感器每檢測(cè)到1°的角度變化,終端就會(huì)執(zhí)行一次圖1流程,顯示對(duì)應(yīng)這1°的動(dòng)態(tài)效果。
假設(shè)終端圍繞Y軸旋轉(zhuǎn)了30°,那么在該旋轉(zhuǎn)過(guò)程中,終端不斷接收方向傳感器返回的旋轉(zhuǎn)角度:1°、2°、3°…29°、30°;在每獲得一個(gè)新的旋轉(zhuǎn)角度時(shí),終端執(zhí)行一次圖1流程,將視圖控件向左移動(dòng)10個(gè)像素點(diǎn)的長(zhǎng)度,最終當(dāng)終端完成30°的旋轉(zhuǎn)后,圖像窗口中的視圖控件向左移動(dòng)了300個(gè)像素點(diǎn)。
本步驟中,采用基于角度實(shí)時(shí)反饋的顯示方式,其優(yōu)勢(shì)在于能夠使得動(dòng)態(tài)效果與終端旋轉(zhuǎn)過(guò)程保持高度同步,從而保證交互反饋的即時(shí)性。
本實(shí)施例提供的顯示視圖控件動(dòng)態(tài)效果的方法,能夠通過(guò)檢測(cè)終端相對(duì)預(yù)設(shè)坐標(biāo)軸的旋轉(zhuǎn)角度捕捉到終端在三維空間中的姿態(tài)變化,根據(jù)該姿態(tài)變化確定出圖像窗口中視圖控件的位移方向和位移長(zhǎng)度,并據(jù)此顯示視圖控件在圖像窗口中移動(dòng)的動(dòng)態(tài)效果。與現(xiàn)有技術(shù)中按照預(yù)定程序展示動(dòng)態(tài)效果相比,本實(shí)施例能夠基于終端握持方式的變化調(diào)整圖像窗口中動(dòng)畫(huà)元素的動(dòng)態(tài)效果,從而實(shí)現(xiàn)具有人機(jī)交互功能的圖像展示方式。
進(jìn)一步的,作為對(duì)上述方法的補(bǔ)充,本發(fā)明實(shí)施例還提供了一種顯示視圖控件動(dòng)態(tài)效果的方法,如圖7所示,該方法包括:
701、檢測(cè)終端相對(duì)終端本體上預(yù)設(shè)坐標(biāo)軸的旋轉(zhuǎn)角度。
本實(shí)施例以終端圍繞Y軸旋轉(zhuǎn)為例進(jìn)行說(shuō)明,方向傳感器對(duì)終端的角度變化進(jìn)行實(shí)時(shí)檢測(cè),獲得旋轉(zhuǎn)角度values[0]、values[1]和values[2],終端使用其中的values[2]執(zhí)行圖7后續(xù)步驟。
702、根據(jù)旋轉(zhuǎn)角度的正負(fù),確定視圖控件的位移方向。
本實(shí)施例中,預(yù)設(shè)配置位移方向與預(yù)設(shè)坐標(biāo)軸垂直,即兩者夾角值為90°,或者換言之視圖控件將沿著與Y軸垂直的水平線進(jìn)行移動(dòng)。終端可以根據(jù)旋轉(zhuǎn)角度的正負(fù),確定視圖控件的位移方向。如前所述,Y軸的角度旋轉(zhuǎn)范圍為[-90°,+90°],當(dāng)終端左側(cè)抬起向右旋轉(zhuǎn)時(shí),旋轉(zhuǎn)角度由0°向-90°變化,當(dāng)終端右側(cè)抬起向左旋轉(zhuǎn)時(shí),旋轉(zhuǎn)角度由0°向+90°變化。如果預(yù)先設(shè)置當(dāng)旋轉(zhuǎn)角度為負(fù)數(shù)時(shí)視圖控件向左移動(dòng)、旋轉(zhuǎn)角度為正數(shù)時(shí)視圖控件向右移動(dòng),則可以實(shí)現(xiàn)輕質(zhì)物體向上漂浮的設(shè)計(jì)效果;反之,如果預(yù)先設(shè)置當(dāng)旋轉(zhuǎn)角度為負(fù)數(shù)時(shí)視圖控件向右移動(dòng)、旋轉(zhuǎn)角度為正數(shù)時(shí)視圖控件向左移動(dòng),則可以實(shí)現(xiàn)重質(zhì)物體向下滾動(dòng)的設(shè)計(jì)效果。本實(shí)施例將以前者配置關(guān)系為例進(jìn)行說(shuō)明。
703、根據(jù)旋轉(zhuǎn)角度確定圖像窗口中視圖控件的位移方向和位移長(zhǎng)度。
本步驟中,終端可以在預(yù)設(shè)的映射表中查找與旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度。示例性的,圖8給出了一種映射表的示意圖,在該表中,每一個(gè)旋轉(zhuǎn)角度值對(duì)應(yīng)一個(gè)位移長(zhǎng)度值,該位移長(zhǎng)度的單位為像素點(diǎn)數(shù)量。表中的旋轉(zhuǎn)角度按照預(yù)設(shè)的角度步進(jìn)值設(shè)置,例如當(dāng)角度步進(jìn)值為1°時(shí),映射表中應(yīng)當(dāng)包括從-90°到+90°共180個(gè)(不包括0°)旋轉(zhuǎn)角度與位移長(zhǎng)度的映射關(guān)系。
需要說(shuō)明的是,本實(shí)施例中終端在旋轉(zhuǎn)角度每發(fā)生一個(gè)角度步進(jìn)值就對(duì)視圖控件進(jìn)行一次位移,因此上述映射表中對(duì)應(yīng)每個(gè)旋轉(zhuǎn)角度的位移長(zhǎng)度應(yīng)當(dāng)是在增加最后一個(gè)角度步進(jìn)值后的位移長(zhǎng)度變化量。例如當(dāng)旋轉(zhuǎn)角度-30°對(duì)應(yīng)的位移長(zhǎng)度為200像素點(diǎn)時(shí),其含義為當(dāng)旋轉(zhuǎn)角度從-29°增加到-30°時(shí),將視圖控件向左移動(dòng)200個(gè)像素點(diǎn),而非是指終端從0°旋轉(zhuǎn)到-30°的過(guò)程中總共移動(dòng)的像素點(diǎn)數(shù)量,當(dāng)終端旋轉(zhuǎn)到-30°并停止后,視圖控件向左移動(dòng)的總位移長(zhǎng)度應(yīng)當(dāng)是映射表中1°到30°共30個(gè)旋轉(zhuǎn)角度分別對(duì)應(yīng)的位移長(zhǎng)度之和。
實(shí)際應(yīng)用中,可以通過(guò)對(duì)映射表的修改調(diào)整視圖控件的移動(dòng)速度,具體的:
如圖9a所示,隨著旋轉(zhuǎn)角度數(shù)值(或稱(chēng)為絕對(duì)值)的不斷增大,映射表中每一單位角度變化量(對(duì)應(yīng)一個(gè)角度步進(jìn)值)對(duì)應(yīng)的位移長(zhǎng)度不斷增加,由此形成在斜率不斷增加的映射關(guān)系。此種情況下,隨著終端旋轉(zhuǎn)角度數(shù)值的不斷變大,視圖控件的移動(dòng)速度越來(lái)越快。
與此相反的,如圖9b所示,隨著旋轉(zhuǎn)角度數(shù)值的不斷增大,映射表中每一單位角度變化量(對(duì)應(yīng)一個(gè)角度步進(jìn)值)對(duì)應(yīng)的位移長(zhǎng)度不斷減小,由此形成斜率不斷減小的映射關(guān)系。此種情況下,隨著終端旋轉(zhuǎn)角度數(shù)值的不斷變大,視圖控件的移動(dòng)速度越來(lái)越慢。
在本實(shí)施例的一種實(shí)現(xiàn)方式中,可以將映射表中每一單位角度增量對(duì)應(yīng)的位移長(zhǎng)度設(shè)置為同一個(gè)值,例如圖10所示。由此形成如圖10中斜率恒定的線性映射關(guān)系。此種情況下,視圖控件將進(jìn)行勻速移動(dòng)。
進(jìn)一步的,作為對(duì)圖10所示方式的改進(jìn),在本實(shí)施例的另一種實(shí)現(xiàn)方式中,可以基于如下規(guī)則確定位移長(zhǎng)度的大?。?/p>
其中,a為角度步進(jìn)值,例如1°,A為單方向旋轉(zhuǎn)的角度范圍,本實(shí)施例中為90°,l為對(duì)應(yīng)每一單位角度增量的位移長(zhǎng)度,L為視圖控件在單一方向上能夠移動(dòng)的最大距離。通過(guò)上述規(guī)則,可以將最大距離L平均分配給各個(gè)位移長(zhǎng)度l,使得移動(dòng)距離與角度之間等比例變動(dòng)。
進(jìn)一步的,除了通過(guò)預(yù)置映射表的方式之外,終端還可以基于預(yù)設(shè)的計(jì)算關(guān)系確定對(duì)應(yīng)每一單位角度變化量的位移長(zhǎng)度。具體的,以視圖控件移動(dòng)速度逐漸放緩為例:
Step1、終端在每獲得一個(gè)新的旋轉(zhuǎn)角度后,確定與該旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度衰減量。
位移長(zhǎng)度衰減量是指本次位移長(zhǎng)度相對(duì)上一角度變化量對(duì)應(yīng)的位移長(zhǎng)度所減少的部分。由于需要使視圖控件的移動(dòng)速度逐漸放緩,因此需要保證隨著旋轉(zhuǎn)角度的不斷增加,每一單位角度變化量對(duì)應(yīng)的位移長(zhǎng)度不斷減少,由此需要計(jì)算每一旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度衰減量。
在本實(shí)施例中,可以按照下述公式計(jì)算位移長(zhǎng)度衰減量:
Y為位移長(zhǎng)度衰減量、T為旋轉(zhuǎn)角度、A為初始位移長(zhǎng)度、X為最大位移長(zhǎng)度。其中,初始位移長(zhǎng)度是指當(dāng)終端首次產(chǎn)生一個(gè)角度步進(jìn)值的角度變化量時(shí)應(yīng)當(dāng)移動(dòng)的長(zhǎng)度,例如當(dāng)終端的旋轉(zhuǎn)角度從0°變化到1°時(shí)的位移長(zhǎng)度。由于終端首次產(chǎn)生角度變化量時(shí)沒(méi)有上一旋轉(zhuǎn)角度的位移長(zhǎng)度可以參考,因此對(duì)此端點(diǎn)情況需要人工設(shè)置一個(gè)初始位移長(zhǎng)度,本實(shí)施例不對(duì)初始位移長(zhǎng)度的具體數(shù)值進(jìn)行限制。最大位移長(zhǎng)度為視圖控件在單一方向上能夠移動(dòng)的最大距離,例如視圖控件從初始位置向左最多能夠移動(dòng)M個(gè)像素點(diǎn),或者向右最多能夠移動(dòng)N個(gè)像素點(diǎn),該最大位移長(zhǎng)度等同于前述最大距離L。實(shí)際應(yīng)用中,應(yīng)當(dāng)保證Y小于A,A小于X,X不大于視圖控件初始位置到相應(yīng)圖像窗口邊緣的距離。
在上述公式中角度單位為“度”,長(zhǎng)度單位為“像素點(diǎn)數(shù)量”,在進(jìn)行計(jì)算時(shí)直接將角度或長(zhǎng)度的數(shù)值帶入即可,無(wú)需帶入單位。
Step2、將前一旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度與位移長(zhǎng)度衰減量相減,獲得當(dāng)前旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度。
由于在終端旋轉(zhuǎn)過(guò)程中不斷產(chǎn)生新的旋轉(zhuǎn)角度,并且終端基于每個(gè)新的旋轉(zhuǎn)角度都要計(jì)算對(duì)應(yīng)的位移長(zhǎng)度,因此Step2中在計(jì)算對(duì)應(yīng)當(dāng)前旋轉(zhuǎn)角度的位移長(zhǎng)度時(shí),終端可以直接獲取前一旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度。
較為特殊的,當(dāng)終端首次產(chǎn)生角度變化量時(shí),即當(dāng)旋轉(zhuǎn)角度從0°變化到1°時(shí),并無(wú)前一旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度可以參考使用,因此在Step2中,針對(duì)這一端點(diǎn)情況預(yù)設(shè)有初始位移長(zhǎng)度A,終端將該初始位移長(zhǎng)度A確定為旋轉(zhuǎn)角度為1°時(shí)對(duì)應(yīng)的位移長(zhǎng)度。本實(shí)施例不對(duì)初始位移長(zhǎng)度A的具體數(shù)值進(jìn)行限制,實(shí)際應(yīng)用中,可以根據(jù)經(jīng)驗(yàn)值對(duì)其進(jìn)行設(shè)定,較為理想的,可以將初始位移長(zhǎng)度A設(shè)置為0.4X。
上述方式給出了一種使視圖控件移動(dòng)速度逐漸放緩的位移長(zhǎng)度計(jì)算方式,與此相反的,當(dāng)需要使視圖控件的移動(dòng)速度逐漸提高,可以參考上述公式計(jì)算位移長(zhǎng)度增長(zhǎng)量,并在Step2中將前一旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度與位移長(zhǎng)度增長(zhǎng)量相加,獲得當(dāng)前旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度。
進(jìn)一步的,在本實(shí)施例的另一種實(shí)現(xiàn)方式中,還可以對(duì)產(chǎn)生動(dòng)態(tài)效果的角度范圍進(jìn)行設(shè)置。具體的,可以根據(jù)設(shè)計(jì)需求或用戶(hù)喜好設(shè)定一個(gè)角度變化范圍,例如[-30°,+30°],該范圍由-30°和+30°兩個(gè)角度閾值界定。如果終端旋轉(zhuǎn)的角度超過(guò)該角度閾值,則視圖控件不再進(jìn)一步移動(dòng),停留在完成最后一次位移(對(duì)應(yīng)-30°或+30°的位移長(zhǎng)度)后的位置。具體的,終端在檢測(cè)到旋轉(zhuǎn)角度之后判斷旋轉(zhuǎn)角度是否超過(guò)預(yù)設(shè)的角度閾值,如果判斷結(jié)果為是,則終端直接將位移長(zhǎng)度確定為0,并取消執(zhí)行上述確定位移長(zhǎng)度的步驟。
與上述方式類(lèi)似的,終端也可以在判斷旋轉(zhuǎn)角度未超過(guò)角度閾值時(shí)將位移長(zhǎng)度確定為0,而當(dāng)旋轉(zhuǎn)角度超過(guò)角度閾值時(shí)通過(guò)映射表或公式計(jì)算位移長(zhǎng)度,從而使終端只有在旋轉(zhuǎn)角度超過(guò)一定程度時(shí)才對(duì)視圖控件進(jìn)行移動(dòng),由此避免細(xì)微動(dòng)作導(dǎo)致的誤操作,節(jié)省終端的處理資源。
需要說(shuō)明的是,前述將確定位移方向和確定位移長(zhǎng)度的過(guò)程區(qū)分為步驟702和步驟703僅為便于表述,本實(shí)施例不對(duì)步驟702和步驟703的執(zhí)行順序進(jìn)行限制,實(shí)際應(yīng)用中,終端在執(zhí)行完步驟701后,也可以先執(zhí)行步驟703再執(zhí)行步驟702,或者同時(shí)執(zhí)行步驟702和步驟703。
704、按照位移方向及位移長(zhǎng)度,采用多緩沖機(jī)制對(duì)圖像窗口的圖像幀進(jìn)行顯示。
如前所述,終端需要不斷繪制圖像幀以展示視圖控件移動(dòng)的動(dòng)態(tài)效果。實(shí)際應(yīng)用中,當(dāng)采用傳統(tǒng)的無(wú)緩沖繪圖機(jī)制時(shí),終端直接在圖像窗口上繪制圖像幀。由于繪制過(guò)程需要占用圖像窗口UI(User Interface,簡(jiǎn)稱(chēng)用戶(hù)界面)的主線程,會(huì)對(duì)主線程造成臨時(shí)阻塞,無(wú)法對(duì)用戶(hù)操作進(jìn)行響應(yīng),因此本實(shí)施例可以采用單緩沖繪圖機(jī)制,即創(chuàng)建一個(gè)畫(huà)布(Canvas),通過(guò)獨(dú)立于主線程的另一線程在該畫(huà)布上進(jìn)行圖像幀的繪制。在繪制完成后,再將該畫(huà)布上的內(nèi)容遷移到圖像窗口的繪圖表面上進(jìn)行顯示,由此避免了對(duì)圖像窗口UI主線程的長(zhǎng)期占用,使得主線程能夠及時(shí)響應(yīng)用戶(hù)的操作事件。
進(jìn)一步的,考慮到當(dāng)圖像內(nèi)容較為復(fù)雜時(shí),單緩沖機(jī)制的處理能力可能無(wú)法保證動(dòng)態(tài)效果的流暢性。為避免圖像出現(xiàn)卡頓,在本實(shí)施例的另一種實(shí)現(xiàn)方式中,可以采用多緩沖機(jī)制進(jìn)行繪圖,即創(chuàng)建多個(gè)畫(huà)布,由不同的線程分別負(fù)責(zé)不同畫(huà)布上的圖像幀繪制和圖像幀顯示。當(dāng)一個(gè)畫(huà)布上的圖像幀在圖像窗口中繪制并顯示時(shí),其余畫(huà)布進(jìn)行其他圖像幀的繪制,各個(gè)畫(huà)布輪詢(xún)將繪制的圖像幀遷移到圖像窗口的繪圖表面上進(jìn)行顯示。理論上畫(huà)布數(shù)量越多,終端的顯示性能越優(yōu)越。
進(jìn)一步的,當(dāng)兼顧處理器的線程資源消耗時(shí),可以采用雙緩沖繪圖機(jī)制。終端創(chuàng)建獨(dú)立于圖像窗口繪圖表面的第一畫(huà)布和第二畫(huà)布,然后首先在第一畫(huà)布上繪制一個(gè)圖像幀,繪制完成后將第一畫(huà)布圖像幀遷移到圖像窗口繪圖表面上進(jìn)行顯示。并且在顯示第一畫(huà)布圖像幀的同時(shí)在第二畫(huà)布上繪制下一圖像幀。在第二畫(huà)布繪制完畢后,將第二畫(huà)布圖像幀遷移到圖像窗口繪圖表面上進(jìn)行顯示,并在顯示第二畫(huà)布圖像幀的同時(shí)在第一畫(huà)布上繪制再下一個(gè)圖像幀,如此反復(fù),兩畫(huà)布交替進(jìn)行圖像幀的顯示和繪制。
實(shí)際應(yīng)用中,可以使用JAVA中的SurfaceView組件執(zhí)行步驟704。SurfaceView組件是一種支持多緩沖機(jī)制的動(dòng)態(tài)繪圖組件,一方面可以實(shí)現(xiàn)復(fù)雜而高效的UI動(dòng)態(tài)效果,另一方面又不會(huì)導(dǎo)致用戶(hù)輸入得不到及時(shí)響應(yīng)。終端在獲得位移方向和位移長(zhǎng)度后,按照位移方向?qū)⑽灰崎L(zhǎng)度轉(zhuǎn)換為視圖控件相對(duì)圖像窗口左邊緣的像素點(diǎn)數(shù)量,然后將該像素點(diǎn)數(shù)量賦值給SurfaceView組件中的paddingLeft參數(shù),SurfaceView組件根據(jù)paddingLeft參數(shù)進(jìn)行新圖像幀的繪制。目前,4.1以前版本的SurfaceView組件默認(rèn)支持雙緩沖繪圖機(jī)制,4.2以后版本的SurfaceView組件默認(rèn)支持三緩沖繪圖機(jī)制。實(shí)際應(yīng)用中,可以通過(guò)修改組件代碼最高擴(kuò)展到32個(gè)畫(huà)布。
上述SurfaceView組件僅為示例性說(shuō)明,不作為對(duì)本實(shí)施例適用的操作系統(tǒng)、組件類(lèi)型的具體限制。實(shí)際應(yīng)用中,其他具有多緩沖繪圖機(jī)制的組件、接口、配置文件程序等均可應(yīng)用于本實(shí)施例所提供的方案中。
以上對(duì)本發(fā)明實(shí)施例的方法部分進(jìn)行了說(shuō)明,下面給出本發(fā)明實(shí)施例的幾種應(yīng)用場(chǎng)景:
1、手機(jī)圍繞Y軸旋轉(zhuǎn)
本場(chǎng)景中,配置視圖控件的位移方向垂直于Y軸,當(dāng)旋轉(zhuǎn)角度小于0°時(shí)位移方向朝向圖像窗口左邊、當(dāng)旋轉(zhuǎn)角度大于0°時(shí)位移方向朝向圖像窗口右邊,由此形成輕質(zhì)物體向上漂浮的動(dòng)態(tài)效果。
如圖11a所示,當(dāng)手機(jī)左側(cè)逐漸抬起時(shí),產(chǎn)生小于0°的旋轉(zhuǎn)角度,云彩向左側(cè)進(jìn)行直線移動(dòng);如圖11b所示,當(dāng)手機(jī)右側(cè)逐漸抬起時(shí),產(chǎn)生大于0°的旋轉(zhuǎn)角度,云彩向右側(cè)進(jìn)行直線移動(dòng)。
2、手機(jī)圍繞X軸旋轉(zhuǎn)
本場(chǎng)景中,配置視圖控件的位移方向垂直于X軸,當(dāng)旋轉(zhuǎn)角度小于0°時(shí)位移方向朝向圖像窗口底部、當(dāng)旋轉(zhuǎn)角度大于0°時(shí)位移方向朝向圖像窗口頂部,由此形成重質(zhì)物體向下滾動(dòng)的動(dòng)態(tài)效果。
如圖12a所示,當(dāng)手機(jī)頂部逐漸抬起時(shí),產(chǎn)生小于0°的旋轉(zhuǎn)角度,小球向圖像窗口底部進(jìn)行直線移動(dòng);如圖12b所示,當(dāng)手機(jī)底部逐漸抬起時(shí),產(chǎn)生大于0°的旋轉(zhuǎn)角度,小球向圖像窗口頂部進(jìn)行直線移動(dòng)。
3、手機(jī)圍繞Z軸旋轉(zhuǎn)
本場(chǎng)景中,配置視圖控件的位移方向與旋轉(zhuǎn)方向相反,當(dāng)旋轉(zhuǎn)角度遞增時(shí)位移方向朝向圖像窗口左邊、當(dāng)旋轉(zhuǎn)角度遞減時(shí)位移方向朝向圖像窗口右邊,由此形成視圖控件相對(duì)旋轉(zhuǎn)方向反向運(yùn)動(dòng)的動(dòng)態(tài)效果。
如圖13a所示,當(dāng)手機(jī)放置于水平桌面上并且順時(shí)針旋轉(zhuǎn)時(shí),旋轉(zhuǎn)角度逐漸遞增,云彩向圖像窗口左邊移動(dòng);如圖13b所示,當(dāng)手機(jī)在水平桌面上逆時(shí)針旋轉(zhuǎn)時(shí),旋轉(zhuǎn)角度逐漸遞減,云彩向圖像窗口右邊移動(dòng)。
4、手機(jī)同時(shí)圍繞X軸、Y軸旋轉(zhuǎn)
本場(chǎng)景中,當(dāng)手機(jī)圍繞X軸旋轉(zhuǎn)時(shí),配置視圖控件的位移方向垂直于X軸,當(dāng)旋轉(zhuǎn)角度小于0°時(shí)位移方向朝向圖像窗口頂部、當(dāng)旋轉(zhuǎn)角度大于0°時(shí)位移方向朝向圖像窗口底部,由此形成輕質(zhì)物體向上漂浮的動(dòng)態(tài)效果。當(dāng)手機(jī)圍繞Y軸旋轉(zhuǎn)時(shí),配置視圖控件的位移方向垂直于Y軸,當(dāng)旋轉(zhuǎn)角度小于0°時(shí)位移方向朝向圖像窗口左邊、當(dāng)旋轉(zhuǎn)角度大于0°時(shí)位移方向朝向圖像窗口右邊,由此形成輕質(zhì)物體向上漂浮的動(dòng)態(tài)效果。
當(dāng)手機(jī)左上角逐漸抬起時(shí),X軸上產(chǎn)生小于0°的旋轉(zhuǎn)角度,云彩向圖像窗口頂部進(jìn)行直線移動(dòng),同時(shí)Y軸上產(chǎn)生小于0°的旋轉(zhuǎn)角度,云彩向圖像窗口左邊進(jìn)行直線移動(dòng)。兩個(gè)方向合成后的移動(dòng)軌跡如圖14a所示,云彩朝向圖像窗口左上角移動(dòng)。與此類(lèi)似的,當(dāng)手機(jī)右下角逐漸抬起時(shí),如圖14b所示云彩朝向圖像窗口右下角移動(dòng)。
5、手機(jī)同時(shí)圍繞X軸、Z軸旋轉(zhuǎn)
本場(chǎng)景中,當(dāng)手機(jī)圍繞X軸旋轉(zhuǎn)時(shí),配置視圖控件的位移方向垂直于X軸,當(dāng)旋轉(zhuǎn)角度小于0°時(shí)位移方向朝向圖像窗口頂部、當(dāng)旋轉(zhuǎn)角度大于0°時(shí)位移方向朝向圖像窗口底部,由此形成輕質(zhì)物體向上漂浮的動(dòng)態(tài)效果。當(dāng)手機(jī)圍繞Z軸旋轉(zhuǎn)時(shí),配置視圖控件的位移方向與旋轉(zhuǎn)方向相反,當(dāng)逆時(shí)針旋轉(zhuǎn)時(shí)位移方向朝向圖像窗口右邊、當(dāng)順時(shí)針旋轉(zhuǎn)時(shí)位移方向朝向圖像窗口左邊。
當(dāng)手機(jī)頂部逐漸抬起并且圍繞Z軸逆時(shí)針旋轉(zhuǎn)時(shí),云彩的合成動(dòng)態(tài)效果如圖15a所示;當(dāng)手機(jī)底部逐漸抬起并且圍繞Z軸順時(shí)針旋轉(zhuǎn)時(shí),云彩的合成動(dòng)態(tài)效果如圖15b所示。
6、手機(jī)同時(shí)圍繞Y軸、Z軸旋轉(zhuǎn)
7手機(jī)同時(shí)圍繞X軸、Y軸、Z軸旋轉(zhuǎn)
6、7兩種情況可以參照?qǐng)鼍?給出的合成方式實(shí)現(xiàn),此處不再贅述。
進(jìn)一步的,作為對(duì)上述方法的實(shí)現(xiàn),本發(fā)明實(shí)施例還提供了一種顯示視圖控件動(dòng)態(tài)效果的裝置。該裝置可以位于終端內(nèi)部,也可以集成于終端外部,并與終端建立有數(shù)據(jù)交互關(guān)系。如圖16所示,該裝置包括:檢測(cè)單元161、確定單元162、顯示單元163,其中:
檢測(cè)單元161,用于檢測(cè)終端相對(duì)終端本體上預(yù)設(shè)坐標(biāo)軸的旋轉(zhuǎn)角度;
確定單元162,用于根據(jù)旋轉(zhuǎn)角度確定圖像窗口中視圖控件的位移方向和位移長(zhǎng)度,圖像窗口為終端提供的可視化部件;
顯示單元163,用于按照位移方向及位移長(zhǎng)度,顯示視圖控件在圖像窗口中移動(dòng)的動(dòng)態(tài)效果。
進(jìn)一步的,位移方向與預(yù)設(shè)坐標(biāo)軸垂直;
如圖17所示,確定單元162,包括:
第一確定模塊1621,用于根據(jù)旋轉(zhuǎn)角度的正負(fù),確定視圖控件的位移方向。
進(jìn)一步的,如圖17所示,確定單元162包括第二確定模塊1622,用于:
確定與旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度衰減量;
將前一旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度與位移長(zhǎng)度衰減量相減,獲得當(dāng)前旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度。
進(jìn)一步的,第二確定模塊1622用于當(dāng)首次產(chǎn)生角度變化時(shí),將預(yù)設(shè)的初始位移長(zhǎng)度確定為位移長(zhǎng)度。
進(jìn)一步的,第二確定模塊1622用于按照下述公式計(jì)算位移長(zhǎng)度衰減量:
Y為位移長(zhǎng)度衰減量、T為旋轉(zhuǎn)角度、A為初始位移長(zhǎng)度、X為最大位移長(zhǎng)度,其中,A小于X,Y小于A。
進(jìn)一步的,確定單元162用于在預(yù)設(shè)的映射表中查找與旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度。
進(jìn)一步的,檢測(cè)單元161檢測(cè)的旋轉(zhuǎn)角度的數(shù)值與確定單元162確定的位移長(zhǎng)度之間呈線性映射關(guān)系。
進(jìn)一步的,確定單元162用于若旋轉(zhuǎn)角度超過(guò)預(yù)設(shè)的角度閾值,則將位移長(zhǎng)度確定為0。
進(jìn)一步的,顯示單元163,用于采用多緩沖機(jī)制對(duì)圖像窗口的圖像幀進(jìn)行顯示。
進(jìn)一步的,顯示單元163采用雙緩沖機(jī)制;
顯示單元163用于:
在顯示第一畫(huà)布圖像幀的同時(shí)在第二畫(huà)布上繪制下一圖像幀;
在第二畫(huà)布繪制完畢后,顯示第二畫(huà)布圖像幀并同時(shí)在第一畫(huà)布上繪制再下一個(gè)圖像幀,兩畫(huà)布交替進(jìn)行圖像幀的顯示和繪制。
進(jìn)一步的,作為對(duì)上述方法的實(shí)現(xiàn),本發(fā)明實(shí)施例還提供了一種顯示視圖控件動(dòng)態(tài)效果的裝置。該裝置可以位于終端內(nèi)部,也可以集成于終端外部,并與終端建立有數(shù)據(jù)交互關(guān)系。如圖18所示,該裝置包括:方向傳感器181、處理器182、顯示器183、存儲(chǔ)器184以及總線185,其中:
方向傳感器181,被配置為檢測(cè)終端相對(duì)終端本體上預(yù)設(shè)坐標(biāo)軸的旋轉(zhuǎn)角度;
處理器182,被配置為根據(jù)旋轉(zhuǎn)角度確定圖像窗口中視圖控件的位移方向和位移長(zhǎng)度,圖像窗口為終端提供的可視化部件;
顯示器183,被配置為按照位移方向及位移長(zhǎng)度,顯示視圖控件在圖像窗口中移動(dòng)的動(dòng)態(tài)效果;
存儲(chǔ)器184,被配置為存儲(chǔ)處理器182的可執(zhí)行指令;
總線185,被配置為耦接方向傳感器181、處理器182、顯示器183及存儲(chǔ)器184。
進(jìn)一步的,處理器182被配置為根據(jù)旋轉(zhuǎn)角度的正負(fù),確定視圖控件的位移方向。
進(jìn)一步的,處理器182被配置為:
確定與旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度衰減量;
將前一旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度與位移長(zhǎng)度衰減量相減,獲得當(dāng)前旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度。
進(jìn)一步的,處理器182被配置為:
當(dāng)首次產(chǎn)生角度變化時(shí),將預(yù)設(shè)的初始位移長(zhǎng)度確定為位移長(zhǎng)度。
進(jìn)一步的,處理器182被配置為:
按照下述公式計(jì)算位移長(zhǎng)度衰減量:
Y為位移長(zhǎng)度衰減量、T為旋轉(zhuǎn)角度、A為初始位移長(zhǎng)度、X為最大位移長(zhǎng)度,其中,A小于X,Y小于A。
進(jìn)一步的,處理器182被配置為:
在預(yù)設(shè)的映射表中查找與旋轉(zhuǎn)角度對(duì)應(yīng)的位移長(zhǎng)度。
進(jìn)一步的,處理器182被配置為旋轉(zhuǎn)角度的數(shù)值與位移長(zhǎng)度之間呈線性映射關(guān)系。
進(jìn)一步的,處理器182被配置為:
若旋轉(zhuǎn)角度超過(guò)預(yù)設(shè)的角度閾值,則將位移長(zhǎng)度確定為0。
進(jìn)一步的,顯示器183被配置為:
采用多緩沖機(jī)制對(duì)圖像窗口的圖像幀進(jìn)行顯示。
進(jìn)一步的,顯示器183被配置為采用雙緩沖機(jī)制;
顯示器183被配置為:
在顯示第一畫(huà)布圖像幀的同時(shí)在第二畫(huà)布上繪制下一圖像幀;
在第二畫(huà)布繪制完畢后,顯示第二畫(huà)布圖像幀并同時(shí)在第一畫(huà)布上繪制再下一個(gè)圖像幀,兩畫(huà)布交替進(jìn)行圖像幀的顯示和繪制。
本發(fā)明實(shí)施例提供的顯示視圖控件動(dòng)態(tài)效果的裝置,能夠通過(guò)檢測(cè)終端相對(duì)預(yù)設(shè)坐標(biāo)軸的旋轉(zhuǎn)角度捕捉到終端在三維空間中的姿態(tài)變化,根據(jù)該姿態(tài)變化確定出圖像窗口中視圖控件的位移方向和位移長(zhǎng)度,并據(jù)此顯示視圖控件在圖像窗口中移動(dòng)的動(dòng)態(tài)效果。與現(xiàn)有技術(shù)中按照預(yù)定程序展示動(dòng)態(tài)效果相比,本發(fā)明實(shí)施例能夠基于終端握持方式的變化調(diào)整圖像窗口中動(dòng)畫(huà)元素的動(dòng)態(tài)效果,從而實(shí)現(xiàn)具有人機(jī)交互功能的圖像展示方式。
在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見(jiàn)其他實(shí)施例的相關(guān)描述。
可以理解的是,上述方法及裝置中的相關(guān)特征可以相互參考。另外,上述實(shí)施例中的“第一”、“第二”等是用于區(qū)分各實(shí)施例,而并不代表各實(shí)施例的優(yōu)劣。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類(lèi)系統(tǒng)所要求的結(jié)構(gòu)是顯而易見(jiàn)的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
在此處所提供的說(shuō)明書(shū)中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書(shū)的理解。
類(lèi)似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書(shū)所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書(shū)由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書(shū)中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的發(fā)明名稱(chēng)(如確定網(wǎng)站內(nèi)鏈接等級(jí)的裝置)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱(chēng)。