亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種手持設(shè)備的橫豎屏切換旋轉(zhuǎn)控制方法

文檔序號(hào):6438793閱讀:211來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種手持設(shè)備的橫豎屏切換旋轉(zhuǎn)控制方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)人機(jī)交互,具體涉及一種手持設(shè)備的橫豎屏切換旋轉(zhuǎn)控制方法,尤其是應(yīng)用在使用智能手機(jī)上。
背景技術(shù)
目前,現(xiàn)有移動(dòng)終端的智能手機(jī)只有橫豎屏切換功能并沒(méi)有橫豎屏切換中顯示切換動(dòng)畫(huà)的功能。在屏幕方向改變情況下,有一個(gè)切換的動(dòng)畫(huà)效果,尤其是在重力感應(yīng)的情況下有一個(gè)自然旋轉(zhuǎn)動(dòng)畫(huà)配合用戶(hù)旋轉(zhuǎn)手機(jī)的動(dòng)作,才不會(huì)讓用戶(hù)感覺(jué)到界面生硬的效果, 能給用戶(hù)無(wú)限美好體驗(yàn)。但是,目前的手機(jī)或其他手持設(shè)備在橫豎屏切換時(shí)都沒(méi)有一個(gè)完美的銜接動(dòng)畫(huà),或者還沒(méi)有這種技術(shù)被公開(kāi)。

發(fā)明內(nèi)容
本發(fā)明需要解決的技術(shù)問(wèn)題是,如何提供一種手持設(shè)備的橫豎屏切換旋轉(zhuǎn)控制方法,能配合用戶(hù)旋轉(zhuǎn)手持設(shè)備的動(dòng)作在設(shè)備屏幕上給出一個(gè)完美、自然的銜接動(dòng)畫(huà)。本發(fā)明的技術(shù)問(wèn)題這樣解決構(gòu)建一種手持設(shè)備的橫豎屏切換旋轉(zhuǎn)控制方法,其特征在于,包括以下步驟1. 2)根據(jù)重力感應(yīng)獲取旋轉(zhuǎn)的方向和切換方向后的角度Φπι ;1. 3)凍結(jié)屏幕,獲取到切換方向后的界面圖像;1. 4)還原所述界面圖像到切換前的角度Φ0顯示,再計(jì)算所述界面圖像的當(dāng)前角度Φ 并顯示直至當(dāng)前角度Φ 等于角度Φπι,其中Φ = Φ0+(Φη-Φ0) * Ai, Ai = (m-(m-i) * (m-i)/m)/m, m是總的旋轉(zhuǎn)顯示次數(shù),i是當(dāng)前旋轉(zhuǎn)顯示次數(shù),1彡i彡m,m、i 是自然數(shù),Ai是加速百分比,Φ0、Φ 和Φπι同旋轉(zhuǎn)方向;所述顯示是手持設(shè)備屏幕不動(dòng),所述界面圖像在所述屏幕表面繞屏幕中心點(diǎn)旋轉(zhuǎn),所述屏幕只顯示旋轉(zhuǎn)的所述界面圖像在所述屏幕內(nèi)的部分;1. 5)解凍屏幕。按照本發(fā)明提供的控制方法,還包括步驟1. 1)接收到橫豎屏切換消息判斷是否是重力感應(yīng)方式,是則進(jìn)入步驟1. 2)。按照本發(fā)明提供的控制方法,所述步驟1. 1)還包括判斷不是重力感應(yīng)方式,則顯示切換方向后的界面圖像,跳過(guò)步驟1. 2) 1. 5)直接結(jié)束。按照本發(fā)明提供的控制方法,根據(jù)重力感應(yīng)判斷Φπι與Φ0重合,跳過(guò)步驟 1.3) 1.5)直接結(jié)束。按照本發(fā)明提供的控制方法,切換前的角度Φ0 = 0°,切換方向后的角度Φπι = 90° ,180° 或 270° 。按照本發(fā)明提供的控制方法,若Φπι = 90°、!Ii = N,則當(dāng)Φπι= 180°,m = 2N,其中N是大于2的自然數(shù)。按照本發(fā)明提供的控制方法,若Φπι = 90°、m = N,則當(dāng)Φπι = 270°,m = 3N,其中N是大于2的自然數(shù)。按照本發(fā)明提供的控制方法,N優(yōu)選15。按照本發(fā)明提供的控制方法,所述步驟1. 4)中采用雙顯存,分別存儲(chǔ)當(dāng)前旋轉(zhuǎn)的界面圖像和下一次旋轉(zhuǎn)的界面圖像,輪流調(diào)用。按照本發(fā)明提供的控制方法,所述雙顯存是邏輯內(nèi)存,所述輪流調(diào)用是在雙顯存之間切換當(dāng)前顯存地址。本發(fā)明提供的手持設(shè)備的橫豎屏切換旋轉(zhuǎn)控制方法,能根據(jù)用戶(hù)旋轉(zhuǎn)手機(jī)的動(dòng)作顯示動(dòng)態(tài)旋轉(zhuǎn)的界面,較現(xiàn)有技術(shù)具有以下優(yōu)點(diǎn)1、能完美銜接用戶(hù)動(dòng)作,給用戶(hù)以自然的實(shí)體感應(yīng);2、凍結(jié)屏幕,使界面內(nèi)的圖標(biāo)等不會(huì)隨界面改變而改變大小和布局,從而造成旋轉(zhuǎn)過(guò)程中內(nèi)部圖像混亂的視覺(jué),使圖像自然旋轉(zhuǎn);3、90°、180°、270°或其他旋轉(zhuǎn),速度都一致,給用戶(hù)類(lèi)同的體驗(yàn);4、雙顯存處理,使動(dòng)畫(huà)切換更流暢,動(dòng)態(tài)連續(xù)顯示效果更好。


下面結(jié)合附圖和具體實(shí)施例進(jìn)一步對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明圖1是本發(fā)明橫豎屏切換旋轉(zhuǎn)控制流程示意圖;圖2是函數(shù)y = 1-χ * χ的圖形坐標(biāo)示意圖;圖3是本發(fā)明具體實(shí)施例的手機(jī)中橫豎屏切換流程示意圖;圖4是圖3中旋轉(zhuǎn)動(dòng)畫(huà)子流程示意圖;圖5是本發(fā)明具體實(shí)施例的手機(jī)中安卓(Android)平臺(tái)下SurfaceFlinger服務(wù)的框架結(jié)構(gòu)示意圖;圖6是圖5所示SurfaceFlinger服務(wù)的處理流程示意圖;圖7是本發(fā)明具體實(shí)施例手機(jī)中安卓(Android)平臺(tái)下將圖像顯示到屏幕上的數(shù)據(jù)結(jié)構(gòu)關(guān)系示意圖;圖8是圖5所示SurfaceFinger客戶(hù)端和服務(wù)端對(duì)象關(guān)系示意圖;圖9是客戶(hù)端與SurfaceFlinger連接示意圖;圖10是客戶(hù)對(duì)象交互示意圖;圖11是服務(wù)端交互示意圖;圖12是客戶(hù)端交互示意圖。
具體實(shí)施例方式首先,說(shuō)明本發(fā)明控制方法和原理(一 )控制程序如圖1所示,本發(fā)明的橫豎屏切換旋轉(zhuǎn)控制流程,具體包括以下步驟101)根據(jù)重力感應(yīng)判斷屏幕方向是否變化?是,進(jìn)入下一步,否則返回步驟 101);102)凍結(jié)屏幕;103)界面布局,獲取到切換方向后界面的圖像;
104)根據(jù)獲取到的圖像以及切換的角度和方向播放旋轉(zhuǎn)動(dòng)畫(huà);該播放旋轉(zhuǎn)動(dòng)畫(huà)子流程具體如圖3所示;105)解凍屏幕(顯示屏幕切換后圖像)。(二)動(dòng)畫(huà)原理2. 1)判斷屏幕方向是否改變每次屏幕方向改變的時(shí)候會(huì)記錄當(dāng)前的方向,當(dāng)下一次屏幕方向變化的時(shí)候可以與上一次的方向做對(duì)比,可以知道是否旋轉(zhuǎn)了屏幕,也可以知道旋轉(zhuǎn)的方向,是90° 0° (右側(cè)到中間),270° 360° (左側(cè)到中間),180° 360° (右側(cè)到左側(cè)),-90° 0° (中間到左側(cè)),450° 360° (中間到右側(cè)),450° 270° (左側(cè)到右側(cè))2.2)根據(jù)改變的方向播放相應(yīng)的旋轉(zhuǎn)動(dòng)畫(huà)從上面2. 1)可以看出旋轉(zhuǎn)有旋轉(zhuǎn)90°,有的旋轉(zhuǎn)180°,為了讓90°和180°旋轉(zhuǎn)的速度一致就讓180°的旋轉(zhuǎn)次數(shù)是90°旋轉(zhuǎn)次數(shù)的兩倍。這里規(guī)定90°旋轉(zhuǎn)次數(shù)為 15次,180°旋轉(zhuǎn)次數(shù)為30次。該旋轉(zhuǎn)采用加速旋轉(zhuǎn)算法當(dāng)前度數(shù)=開(kāi)始度數(shù)+(結(jié)束度數(shù)-開(kāi)始度數(shù))*加速百分比加速百分比是隨著次數(shù)的增大而增大,范圍在0 1之間,開(kāi)始的時(shí)候等于0,即當(dāng)前度數(shù)=開(kāi)始度數(shù)當(dāng)加速百分比=1時(shí)候當(dāng)前度數(shù)=結(jié)束度數(shù)加速百分比=(總的旋轉(zhuǎn)次數(shù)_(總的旋轉(zhuǎn)次數(shù)_當(dāng)前旋轉(zhuǎn)次數(shù))* (總的旋轉(zhuǎn)次數(shù)_當(dāng)前旋轉(zhuǎn)次數(shù))/總的旋轉(zhuǎn)次數(shù))/總的旋轉(zhuǎn)次數(shù)當(dāng)前旋轉(zhuǎn)次數(shù)每次加1加速百分比是利用了函數(shù)y = 1-χ * χ改造而來(lái)的變量χ的范圍在1 0之間,當(dāng)這樣函數(shù)y的范圍就在0 1之間如圖2所示,函數(shù)y = 1-χ女χ這種拋物線當(dāng)χ > 0,隨著χ值越大,它的斜率也越大,速度就越快。第二,結(jié)合本發(fā)明方法在手機(jī)中的應(yīng)用進(jìn)一步詳細(xì)說(shuō)明如圖3所示,本發(fā)明具體實(shí)施例的手機(jī)中橫豎屏切換控制流程,具體包括以下步驟301)操作系統(tǒng)接收到橫豎屏切換消息;
302)操作系統(tǒng)凍結(jié)屏幕和窗口 ;303)界面布局,獲取到切換方向后界面的圖像;304)操作系統(tǒng)發(fā)送解凍屏幕消息;305)判斷橫豎屏切換消息是否是使用重力感應(yīng)方式?是進(jìn)入下一步,否則直接進(jìn)入步驟307);306)調(diào)用播放旋轉(zhuǎn)動(dòng)畫(huà)子程序;307)解凍屏幕(顯示屏幕切換后圖像)。其中,步驟306)中的播放旋轉(zhuǎn)動(dòng)畫(huà)子程序,具體步驟如圖4所示,包括以下步驟401)根據(jù)重力感應(yīng)結(jié)果和程序定義初始化開(kāi)始的度數(shù)、結(jié)束的度數(shù)和旋轉(zhuǎn)的次數(shù) (=0);
5
402)判斷當(dāng)前旋轉(zhuǎn)次數(shù)<總的旋轉(zhuǎn)次數(shù)?是進(jìn)入下一步,否則進(jìn)入步驟4);403)計(jì)算應(yīng)該旋轉(zhuǎn)的當(dāng)前度數(shù);404)根據(jù)當(dāng)前度數(shù)顯示對(duì)應(yīng)畫(huà)面;405)旋轉(zhuǎn)次數(shù)加1,返回步驟402);406)旋轉(zhuǎn)結(jié)束。第三,結(jié)合本發(fā)明方法在手機(jī)中應(yīng)用的具體實(shí)施例在Android平臺(tái)下的實(shí)現(xiàn)再進(jìn)一步詳細(xì)說(shuō)明,包括三大部分,其中第一部分)判斷旋轉(zhuǎn)動(dòng)畫(huà)播放的時(shí)機(jī)旋轉(zhuǎn)動(dòng)畫(huà)的播放是在手機(jī)屏幕切換的時(shí)候播放的,但不包括手機(jī)鍵盤(pán)打開(kāi)時(shí)的橫豎屏切換狀態(tài)。手機(jī)橫豎屏切換包括重力感應(yīng)器和手機(jī)側(cè)滑鍵,通過(guò)分別接受重力感應(yīng)器響應(yīng)和側(cè)滑鍵的消息來(lái)觸發(fā)橫豎屏切換事件。通過(guò)排除側(cè)滑鍵切換的方式來(lái)決定橫豎屏切換的時(shí)機(jī)。第二部分)觸發(fā)旋轉(zhuǎn)動(dòng)畫(huà)當(dāng)界面布局完后,會(huì)通知界面去解凍屏幕,在解凍屏幕的時(shí)候先判斷當(dāng)前觸發(fā)屏幕切換的是采用重力感應(yīng)器方式還是側(cè)滑鍵切換方式,如果是側(cè)滑鍵切換就直接解凍屏幕讓界面瞬間切換成屏幕切換后的界面;如果是通過(guò)重力感應(yīng)器響應(yīng),橫豎屏切換就需要觸發(fā)旋轉(zhuǎn)動(dòng)畫(huà)了。第三部分)旋轉(zhuǎn)動(dòng)畫(huà)具體實(shí)現(xiàn)該效果的實(shí)現(xiàn)關(guān)鍵重點(diǎn)在于如何獲取到切換后界面的圖像,這個(gè)處理涉及到底層的顯存數(shù)據(jù)讀取。這部分處理都在surface服務(wù)端SurfaceFlinger里面處理的。 SurfaceFlinger作用是將所有系統(tǒng)中的surface層疊加起來(lái)最后繪制到屏幕上面。該SurfaceFl inger的基本組成框架,如圖5所示,包括以下部分或模塊mClientsMap 管理客戶(hù)端與服務(wù)端的連接。ISurface, IsurfaceComposer :AIDL 調(diào)用接口實(shí)例mLayerMap 服務(wù)端的Surface的管理對(duì)象。mCurrentState. IayersSortedByZ 以 Surface 的 Z-order 序歹Ij 歹Ij 的 Layer 數(shù)組。graphicPlane緩沖區(qū)輸出管理OpenGL ES 圖形計(jì)算,圖像合成等圖形庫(kù)。gralloc. xxx. so這是個(gè)跟平臺(tái)相關(guān)的圖形緩沖區(qū)管理器。pmem Device 提供共享內(nèi)存,在這里只是在gralloc. xxx. so可見(jiàn),在上層被 gralloc. xxx. so 抽象了。該SurfaceFlinger的處理流程,如圖6所示,根據(jù)事件進(jìn)行顯示數(shù)據(jù)處理,而最后的postFramebuffer就是將圖像顯示到屏幕上面去。在 postFramebuffer 的時(shí)候使用至Ij DisplayHardware, DisplayHardware 就是具體將圖像顯示到屏幕上的具體實(shí)現(xiàn),首先SurfaceFlinger需要操作到屏幕,需要建立一個(gè)屏幕硬件緩沖區(qū)管理框架。Android在設(shè)計(jì)支持時(shí),考慮多個(gè)屏幕的情況,引 Λ 7 graphicPlane 白勺才 。 $ SurfaceFlinger —f graphicPlane · , graphicPlane對(duì)象都對(duì)應(yīng)一個(gè)DisplayHardware.在當(dāng)前的Android (2.1)版本的設(shè)計(jì)中,系統(tǒng)支持一個(gè) graphicPlane,所以也就支持一個(gè) DisplayHardware0 SurfaceFlinger, Hardware硬件緩沖區(qū)的數(shù)據(jù)結(jié)構(gòu)關(guān)系圖,如圖7所示。圖7中g(shù)raphic momory是用來(lái)顯示用的memory,android系統(tǒng)為了提升界面的顯示速度,本發(fā)明采用了雙顯存機(jī)制,就是一個(gè)顯存用來(lái)顯示界面的圖像,另一個(gè)顯存負(fù)責(zé)準(zhǔn)備需要顯示的數(shù)據(jù),這兩個(gè)顯存來(lái)回切換效率比只有一個(gè)顯存顯示的效率快的多。在 DisplayHardware 中的 filp 就是用來(lái)切換兩塊顯存的,eglSwapBuffers (dpy, surface)就是具體實(shí)現(xiàn)顯存切換的,我們就在eglSwapBuffers (dpy,surface)之前去提前獲取了切換后的界面數(shù)據(jù),并在eglSwapBuffers (dpy,surface)之前去播放旋轉(zhuǎn)動(dòng)畫(huà)。播放旋轉(zhuǎn)動(dòng)畫(huà)是通過(guò)獲取到的顯存buffer數(shù)據(jù)通過(guò)opengl的繪制方法 glRotatef去旋轉(zhuǎn)圖像,做完旋轉(zhuǎn)動(dòng)畫(huà)后就立即執(zhí)行eglSwapBuffers (dpy,surface)顯示界面切換后的圖像,這樣就很好地解決了問(wèn)題,并把效果呈現(xiàn)出來(lái)。底層的旋轉(zhuǎn)效果實(shí)現(xiàn)了,我們要結(jié)合上面描述的出發(fā)旋轉(zhuǎn)動(dòng)畫(huà)時(shí)機(jī)控制底層播放旋轉(zhuǎn)動(dòng)畫(huà),這里面又涉及到如何從上層控制下層的過(guò)程。Surface采用了客戶(hù)/服務(wù)器(CS) 模式從上層向下層傳遞數(shù)據(jù)相當(dāng)于跨進(jìn)程操作,具體如圖8-10,利用客戶(hù)端和服務(wù)端對(duì)象關(guān)系、客戶(hù)端與SurfaceFlinger連接關(guān)系和它們之間的交互,通過(guò)圖11和12中的流程可以將數(shù)據(jù)從客戶(hù)端傳遞到surfaceflinger這端了,這樣就可以控制底層的動(dòng)畫(huà)處理邏輯。以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明權(quán)利要求范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明權(quán)利要求的涵蓋范圍。
權(quán)利要求
1. 一種手持設(shè)備的橫豎屏切換旋轉(zhuǎn)控制方法,其特征在于,包括以下步驟1.2)根據(jù)重力感應(yīng)獲取旋轉(zhuǎn)的方向和切換方向后的角度Φπι;1. 3)凍結(jié)屏幕,獲取到切換方向后的界面圖像;1.4)還原所述界面圖像到切換前的角度Φ0顯示,再計(jì)算所述界面圖像的當(dāng)前角度Φ 并顯示直至當(dāng)前角度Φ 等于角度Φπι,其中Φ = Φ0+(Φη-Φ0) * Ai, Ai = (m-(m-i) * (m-i)/m)/m, m是總的旋轉(zhuǎn)顯示次數(shù),i是當(dāng)前旋轉(zhuǎn)顯示次數(shù),1彡i彡m,i、m 是自然數(shù),Ai是加速百分比,Φ0、Φ 和Φπι同旋轉(zhuǎn)方向;所述顯示是手持設(shè)備屏幕不動(dòng),所述界面圖像在所述屏幕表面繞屏幕中心點(diǎn)旋轉(zhuǎn),所述屏幕只顯示旋轉(zhuǎn)的所述界面圖像在所述屏幕內(nèi)的部分; 1.5)解凍屏幕。
2.根據(jù)權(quán)利要求1所述控制方法,其特征在于,還包括步驟1.1)接收到橫豎屏切換消息判斷是否是重力感應(yīng)方式,是則進(jìn)入步驟1. 2)。
3.根據(jù)權(quán)利要求2所述控制方法,其特征在于,所述步驟1.1)還包括判斷不是重力感應(yīng)方式,則顯示切換方向后的界面圖像,跳過(guò)步驟1. 2) 1. 5)直接結(jié)束。
4.根據(jù)權(quán)利要求1所述控制方法,其特征在于,根據(jù)重力感應(yīng)判斷Φπι與Φ0重合,跳過(guò)步驟1.3) 1.5)直接結(jié)束。
5.根據(jù)權(quán)利要求1所述控制方法,其特征在于,切換前的角度Φ0= 0°,切換方向后的角度 Φπι = 90°、180° 或 270°。
6.根據(jù)權(quán)利要求1所述控制方法,其特征在于,若Φπι= 90°、m = N,則當(dāng)Φπι = 180°,m= 2Ν,其中N是大于2的自然數(shù)。
7.根據(jù)權(quán)利要求1所述控制方法,其特征在于,若Φπι= 90°、m = N,則當(dāng)Φπι = 270°,m= 3Ν,其中N是大于2的自然數(shù)。
8.根據(jù)權(quán)利要求6或7所述控制方法,其特征在于,N= 15。
9.根據(jù)權(quán)利要求1所述控制方法,其特征在于,所述步驟1.4)中采用雙顯存,分別存儲(chǔ)當(dāng)前旋轉(zhuǎn)的界面圖像和下一次旋轉(zhuǎn)的界面圖像,輪流調(diào)用。
10.根據(jù)權(quán)利要求8所述控制方法,其特征在于,所述雙顯存是邏輯內(nèi)存,所述輪流調(diào)用是在雙顯存之間切換當(dāng)前顯存地址。
全文摘要
本發(fā)明涉及一種手持設(shè)備的橫豎屏切換旋轉(zhuǎn)控制方法,包括根據(jù)重力感應(yīng)獲取旋轉(zhuǎn)的方向和切換后的角度Фm;凍結(jié)屏幕,獲取到切換方向后的界面圖像;計(jì)算所述界面圖像的當(dāng)前角度Фi并顯示直至Фi=Фm,其中Фi=Ф0+(Фn-Ф0)*Ai,Ai=(m-(m-i)*(m-i)/m)/m,m是總的旋轉(zhuǎn)顯示次數(shù),i是當(dāng)前旋轉(zhuǎn)顯示次數(shù),1≤i≤m,m、i是自然數(shù),Ai是加速百分比,初始角度Ф0、Фi和Фm同旋轉(zhuǎn)方向;所述顯示是手持設(shè)備屏幕不動(dòng),所述界面圖像在所述屏幕表面繞屏幕中心點(diǎn)旋轉(zhuǎn),所述屏幕只顯示旋轉(zhuǎn)的所述界面圖像在所述屏幕內(nèi)的部分;解凍屏幕。這種控制方法,能完美銜接用戶(hù)旋轉(zhuǎn)動(dòng)作,給用戶(hù)逼真的自然體驗(yàn)。
文檔編號(hào)G06F3/048GK102520842SQ20111036890
公開(kāi)日2012年6月27日 申請(qǐng)日期2011年11月18日 優(yōu)先權(quán)日2011年11月18日
發(fā)明者曾元清 申請(qǐng)人:廣東歐珀移動(dòng)通信有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1