欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種手持設(shè)備的橫豎屏切換漸變控制方法

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

發(fā)明內(nèi)容
本發(fā)明需要解決的技術(shù)問題是,如何提供一種手持設(shè)備的橫豎屏切換漸變控制方法,能配合用戶旋轉(zhuǎn)手持設(shè)備的動作在設(shè)備屏幕上給出一個完美、自然的銜接動畫。本發(fā)明的技術(shù)問題這樣解決構(gòu)建一種手持設(shè)備的橫豎屏切換漸變控制方法,其特征在于,包括以下步驟I. 2)在手持設(shè)備屏幕按設(shè)定次數(shù)依序計算并逐次顯示二層疊加圖像上層圖像是帶透明度A I的全黑圖、下層圖像是帶清晰度的切換方向前的界面圖像;所述計算包括按設(shè)定次數(shù)逐次增加所述透明度Al,從開始的全透明A I = 0到最后的不透明A I = I ;所述計算還包括混合處理重新設(shè)置本次顯示對應(yīng)下層圖像每一像素點(diǎn)的像素值和亮度使它們分別等于上次顯示對應(yīng)下層圖像該像素點(diǎn)周邊四個或八個像素點(diǎn)的像素值和亮度的平均值;1.3)凍結(jié)屏幕,獲取到切換方向后的界面圖像;防止在切換過程中,被用戶觸摸或點(diǎn)擊屏幕觸發(fā)其他工作指令;I. 4)將所述切換方向后的界面圖像替換所述切換方向前的界面圖像,按指定次數(shù)依序進(jìn)行所述計算并存儲,再逆序逐次進(jìn)行顯示直至到達(dá)所述指定次數(shù);I. 5)顯示切換方向后的界面圖像,解凍屏幕;接受用戶基于觸摸屏的觸摸或點(diǎn)擊指令。按照本發(fā)明提供的控制方法,還包括步驟I. I):接收到橫豎屏切換消息判斷是否是重力感應(yīng)方式,是則進(jìn)入步驟I. 2)。按照本發(fā)明提供的控制方法,所述步驟I. I)還包括判斷不是重力感應(yīng)方式,則顯示切換方向后的界面圖像,跳過步驟I. 2) I. 5)直接結(jié)束。按照本發(fā)明提供的控制方法,每次顯示間隔時間是10-20豪秒。按照本發(fā)明提供的控制方法,所述設(shè)定次數(shù)和指定次數(shù)是20-40次,設(shè)定次數(shù)和指定次數(shù)優(yōu)選相同。按照本發(fā)明提供的控制方法,所述周邊四個分別是上、下、左、右四個方向最接近的像素點(diǎn)。
按照本發(fā)明提供的控制方法,所述周邊四個分別是四個斜對角方向最接近的像素點(diǎn)ο
按照本發(fā)明提供的控制方法,所述八個像素點(diǎn)是上、下、左、右和四個斜對角方向最接近的像素點(diǎn)。
按照本發(fā)明提供的控制方法,所述像素值包括但不限制于是RGB值。
按照本發(fā)明提供的控制方法,所述步驟1.4)包括在所述二層疊加圖像之下再疊加切換方向后的界面圖像作為最底層圖像;所述步驟1. 5)包括隱藏所述二層疊加圖像顯示所述最底層圖像。
按照本發(fā)明提供的控制方法,本發(fā)明各次顯示刷新采用雙顯存輪流調(diào)用方式,該雙顯存是邏輯內(nèi)存,所述輪流調(diào)用是在雙顯存之間切換當(dāng)前顯存地址。
本發(fā)明提供的手持設(shè)備的橫豎屏切換漸變控制方法,能根據(jù)用戶旋轉(zhuǎn)手機(jī)的動作顯示清晰到模糊、模糊再到清晰的界面,較現(xiàn)有技術(shù)具有以下優(yōu)點(diǎn)
1、能完美銜接用戶動作,給用戶以自然的實(shí)體感應(yīng);
2、凍結(jié)屏幕,屏蔽切換過程中的觸摸屏指令;
3、對像素矩陣進(jìn)行逐次相同的像素值和亮度平均混合計算,計算簡單、處理和顯示流暢;
4、雙顯存處理,使動畫切換更流暢,動態(tài)連續(xù)顯示效果更好。


下面結(jié)合附圖和具體實(shí)施例進(jìn)一步對本發(fā)明進(jìn)行詳細(xì)說明
圖1是本發(fā)明橫豎屏切換漸變控制流程示意圖2是本發(fā)明模糊處理原理示意圖3是本發(fā)明具體實(shí)施例的手機(jī)中橫豎屏切換流程示意圖4是本發(fā)明具體實(shí)施例的手機(jī)中安卓(Android)平臺下Surface服務(wù)示意圖5是創(chuàng)建Surface服務(wù)的流程示意圖6是Surface顯示處理流程示意圖;
圖7是Surface顯示緩沖示意圖8是Surface顯示原理示意圖。
具體實(shí)施方式
首先,說明本發(fā)明控制方法和原理
(一 )控制程序
如圖1所示,本發(fā)明的橫豎屏切換漸變控制流程,具體包括以下步驟
101)根據(jù)重力感應(yīng)判斷屏幕方向是否變化?是,進(jìn)入下一步,否則返回步驟 101);
102)根據(jù)原始界面圖像播放從清晰到模糊的動畫;
103)凍結(jié)屏幕,界面布局、獲取到切換方向后的界面圖像;
104)根據(jù)獲取到的界面圖像播放從模糊到清晰的動畫,解凍屏幕。
(二)動畫原理2. I)亮度漸變原理就是在顯示層對象layer的draw方法的時候繪制一個RGB =黑色(0,0,0)的圖形,但是它有一個透明度Al,就是這個RGB A I = (0,0,0,A I)當(dāng)A I變成I的時候,不透明是全黑最暗;變成0的時候是全透明的,最亮。從亮到暗即A I的值從0到I逐漸變大從暗到亮即A I的值從I到0逐漸變小。2. 2)清晰度模糊原理如圖2所示,圖中像素矩陣?yán)锩娴南袼攸c(diǎn)5,它是由周邊的像素點(diǎn)1,2,3,4的像素值混合而來的(也可以取其他四個周邊的像素點(diǎn)或八個周邊的像素點(diǎn))5A II = (lA2+2A2+3A2+4A2)/45R = (lR+2R+3R+4R)/45G = (lG+2G+3G+4G)/45B = (lB+2B+3B+4B)/4其中A II是亮度,R是紅色,G是綠色,B是藍(lán)色,1-5是圖2所示像素陣列中的各
像素點(diǎn)。第二,結(jié)合本發(fā)明方法在手機(jī)中的應(yīng)用進(jìn)一步詳細(xì)說明如圖3所示,本發(fā)明具體實(shí)施例的智能手機(jī)中橫豎屏切換控制流程,具體包括以下步驟301)操作系統(tǒng)接收到橫豎屏切換消息;302)判斷橫豎屏切換消息是否是使用重力感應(yīng)方式?是進(jìn)入下一步,否則直接進(jìn)入步驟307);303)通過Show方法顯示出控制亮度的上層圖像和控制模糊度的下層圖像;上層是不斷降低透明度A 1(0—1)的全黑圖像,下層是不斷增加混合處理次數(shù)的原始界面圖304)判斷是否到達(dá)設(shè)定次數(shù)?是進(jìn)入下一步,否則返回步驟303);305)操作系統(tǒng)凍結(jié)屏幕和窗口 ;306)界面布局,獲取到切換方向后的界面圖像并作為最底層圖像;調(diào)用播放旋轉(zhuǎn)動畫子程序;307)通過Show方法顯示出控制亮度的上層圖像和控制模糊度的下層圖像;上層是不斷增加透明度A 1(1 — 0)的全黑圖像,下層是事先存儲的不斷減少混合處理次數(shù)的切換方向后的界面圖像;308)判斷是否到達(dá)指定次數(shù)?是進(jìn)入下一步,否則返回步驟307);309)隱藏控制亮度的上層圖像和控制模糊度的下層圖像,顯示被覆蓋的最底層圖310)操作系統(tǒng)發(fā)送解凍屏幕消息,解凍屏幕。第三,結(jié)合本發(fā)明方法在手機(jī)中應(yīng)用的具體實(shí)施例在Android平臺下的實(shí)現(xiàn)再進(jìn)一步詳細(xì)說明該實(shí)施例漸變分為兩個步驟,一個是從清晰到模糊,另一個是從模糊到清晰,這些效果都是通過surface服務(wù)來實(shí)現(xiàn)的。
從清晰到模糊是在凍結(jié)屏幕前調(diào)用了函數(shù)FirstRotate (),從模糊要清晰是在解凍后解鎖觸發(fā)過程RotateThread調(diào)用。
如圖4所示,RotateThread過程是一個無限循環(huán)處理surface變清晰的處理,它之前有把鎖控制該surface的觸發(fā)。在解凍后解鎖讓RotateThread中的鎖解開后surface 從模糊到清晰做變換,最后清晰后影藏該surface。
實(shí)現(xiàn)控制surface漸變處理具體包括
( 一 )創(chuàng)建 surface 對象
Surface的創(chuàng)建需要調(diào)用surfaceflinger對象里面的方法來創(chuàng)建,如圖5所示,創(chuàng)建Surface的過程基本上分為兩步
a)建立 SurfaceSession 對象
第一步通常只執(zhí)行一次,目的是創(chuàng)建一個SurfaceComposerClient的實(shí)例,JAVA層通過JNI調(diào)用本地代碼,本地代碼創(chuàng)建一個SurfaceComposerClient的實(shí)例,SurfaceComposerClient 通過 ISurfaceComposer 接口調(diào)用 SurfaceFlinger 的 createConnection, SurfaceFlinger 返回一個 ISurfaceFlingerClient 接口給 SurfaceComposerClient,在 createConnection 的過禾呈中,SurfaceFlinger 創(chuàng)建了用于管理緩沖區(qū)切換的SiaredClient,最后,本地層把SurfaceComposerClient的實(shí)例返回給 JAVA 層,完成 Surfacekssion 的建立。
b)利用 SurfaceSession 對象創(chuàng)建 Surface
JAVA層通過JNI調(diào)用本地代碼SurfaceJnit (),本地代碼首先取得第一步倉Il 建白勺 SurfaceComposerClient 實(shí)通過 SurfaceComposerClient, i周用 ISurfaceFlingerClient 接口的 createSurface 方法,進(jìn)入 SurfaceFlinger, SurfaceFlinger根據(jù)參數(shù),創(chuàng)建不同類型的Layer,然后調(diào)用Layer的setBuffers () 方法,為該Layer創(chuàng)建了兩個緩沖區(qū),然后返回該Layer的ISurface接口, SurfaceComposerClient 使用這個 ISurface接口創(chuàng)建一個 SurfaceControl 實(shí)例,并把這個 SurfaceControl 返回給 JAVA 層。
( 二 ) Surface對象的顯示過程處理
如圖6所示,開始在Surface畫圖前,Surface, java會先調(diào)用IockCanvas ()來得到要進(jìn)行畫圖操作的Canvas,IockCanvas會進(jìn)一步調(diào)用本地層的Surface_lockCanvas, 本地代碼利用JAVA層傳入的SurfaceControl對象,通過getSurface ()取得本地層的 Surface對象,接著調(diào)用該Surface對象的IockO方法,IockO返回了改Surface的信息, 其中包括了可用緩沖區(qū)的首地址vaddr,該vaddr在Android的2D圖形庫Skia中,創(chuàng)建了一yjv bitmap, ^ Skia Canvas ^ API Canvas. setBitmapDevice (bitmap), ^C 該bitmap綁定到Canvas中,最后把這個Canvas返回給JAVA層,這樣JAVA層就可以在該 Canvas上進(jìn)行畫圖操作,而這些畫圖操作最終都會畫在以vaddr為首地址的緩沖區(qū)中。
在Surface對象的IockO方法中
dequeueBuffer (&backBuffer)獲取 backBuffer
SharedBufferClient- > dequeue ()獲得當(dāng)前空閑緩沖區(qū)的編號
通過緩沖區(qū)編號獲得真正的GraphicBuffer :backBuffer
如果還沒有對Layer中的buffer進(jìn)行映射(Mapper), getBufferLocked通過 ISurface接口重新重新映射獲取frontBuffer根據(jù)兩個Buffer的更新區(qū)域,把frontBuffer的內(nèi)容拷貝到backBuffer中,這樣保證了兩個Buffer中顯示內(nèi)容的同步backBuffer- > IockO 獲得 backBuffer 緩沖區(qū)的首地址 vaddr通過info參數(shù)返回vaddr(三)釋放Surface對象對應(yīng)的顯示緩沖區(qū)如圖7所示,畫圖完成后,要想把Surface的內(nèi)容顯示到屏幕上,需要把Canvas中綁定的緩沖區(qū)釋放,并且把該緩沖區(qū)從變成可投遞(因為默認(rèn)只有兩個buffer,所以實(shí)際上就是變成了 frontBuffer), SurfaceFlinger的工作線程會在適當(dāng)?shù)乃⑿聲r刻,把系統(tǒng)中所有的frontBuffer混合在一起,然后通過OpenGL刷新到屏幕上。Surface對象對應(yīng)一個layer對象,如上圖創(chuàng)建surface后在底層有了個Layer 對象來具體實(shí)現(xiàn)繪制,layer的draw方法將surface需要畫的東西數(shù)據(jù)準(zhǔn)備好后通過 eglSwapBuffer將圖像顯示到屏幕上去。清晰到模糊和模糊到清晰的動畫因為在android系統(tǒng)中每個窗口都對應(yīng)著一個layer, layer里面的draw方法就是實(shí)現(xiàn)窗口的繪制。實(shí)現(xiàn)清晰到模糊或者模糊到清晰具體的方法都是在原來的窗口上面蓋上一層模糊的layer, layer里面實(shí)現(xiàn)draw方法去繪制一層模糊的圖形,從清晰到模糊或者從模糊到清晰都是控制draw里面的繪制而達(dá)到的。模糊layer的具體實(shí)現(xiàn)關(guān)鍵在于draw里面的繪制控制模糊有兩種方式疊加,一種是控制layer的透明度,另外一種是控制layer的模糊度。這兩種效果結(jié)合起來使用可以在清晰到模糊的時候,一邊變模糊一邊變暗;在模糊到清晰的時候,一邊變清晰一邊變亮,這樣就可以實(shí)現(xiàn)很好的過場效果。>實(shí)現(xiàn)亮度變暗或者變亮就是在layer的draw的時候繪制一個RGB =黑色(0,0,0)的圖形,但是它有一個透明度A I,就是這個RGB A I= (0,0,0, A I)當(dāng)A I變成I的時候是全黑,變成0的時候是全透明的從亮到暗即A I的值從0到I逐漸變大
從暗到亮即A I的值從I到0逐漸變小
>實(shí)現(xiàn)模糊的方法是
I.獲取當(dāng)前l(fā)ayer下面的圖片
2.將該圖片進(jìn)行模糊處理
3.將模糊處理后的圖片draw出來
通過函數(shù) glReadPixels (X, Y, w, h, mReadFormat, mReadType, pixels)
可以獲得界面的像素點(diǎn),存放在Pixels里面
我們接著根據(jù)Pixels里面的像素做處理,讓他實(shí)現(xiàn)模糊的效果。
這個是調(diào)用函數(shù)status_t blurFilter (
GGLSurface const * image,int kernelSizeUser,int repeat)實(shí)現(xiàn)的對象image就是之前獲取到的圖片,將圖片模糊化后直接拿到image就是模糊化后的效果圖。具體的實(shí)現(xiàn)原理是將image這個像素矩陣?yán)锩婷總€像素周邊的像素進(jìn)行混合獲取到一個新的像素例如圖2中的像素點(diǎn)5,它是由周邊的像素點(diǎn)1,2,3,4的像素值混合而來的,如果這個范圍越廣的話它就會變得越模糊,就是函數(shù)blurFilter里面最后一個參數(shù)混合次數(shù) repeat,當(dāng)它的值越大圖像越模糊,它的值越小越清晰。5A II = (lA2+2A2+3A2+4A2)/45R = (lR+2R+3R+4R)/45G = (1G+2G+3G+4G)/45B = (lB+2B+3B+4B)/4從模糊到清晰Alpha值變小,repeat值也變小;從清晰到模糊Alpha值變大,repeat值也變大。以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明權(quán)利要求范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明權(quán)利要求的涵蓋范圍。
權(quán)利要求
1. 一種手持設(shè)備的橫豎屏切換漸變控制方法,其特征在于,包括以下步驟1.2)在手持設(shè)備屏幕按設(shè)定次數(shù)依序計算并逐次顯示二層疊加圖像上層圖像是帶透明度A I的全黑圖、下層圖像是帶清晰度的切換方向前的界面圖像;所述計算包括按設(shè)定次數(shù)逐次增加所述透明度AI,從開始的全透明A I = O到最后的不透明A I = 1 ;所述計算還包括混合處理重新設(shè)置本次顯示對應(yīng)下層圖像每一像素點(diǎn)的像素值和亮度使它們分別等于上次顯示對應(yīng)下層圖像該像素點(diǎn)周邊四個或八個像素點(diǎn)的像素值和亮度的平均值;1. 3)凍結(jié)屏幕,獲取到切換方向后的界面圖像;1.4)將所述切換方向后的界面圖像替換所述切換方向前的界面圖像,按指定次數(shù)依序進(jìn)行所述計算并存儲,再逆序逐次進(jìn)行顯示直至到達(dá)所述指定次數(shù);1.5)顯示切換方向后的界面圖像,解凍屏幕。
2.根據(jù)權(quán)利要求1所述控制方法,其特征在于,還包括步驟1.1)接收到橫豎屏切換消息判斷是否是重力感應(yīng)方式,是則進(jìn)入步驟1. 2)。
3.根據(jù)權(quán)利要求2所述控制方法,其特征在于,所述步驟1.1)還包括判斷不是重力感應(yīng)方式,則顯示切換方向后的界面圖像,跳過步驟1. 2) 1. 5)直接結(jié)束。
4.根據(jù)權(quán)利要求1所述控制方法,其特征在于,每次顯示間隔時間是10-20豪秒。
5.根據(jù)權(quán)利要求1所述控制方法,其特征在于,所述設(shè)定次數(shù)和指定次數(shù)是20-40次。
6.根據(jù)權(quán)利要求1所述控制方法,其特征在于,所述周邊四個分別是上、下、左、右四個方向最接近的像素點(diǎn)。
7.根據(jù)權(quán)利要求1所述控制方法,其特征在于,所述周邊四個分別是四個斜對角方向最接近的像素點(diǎn)。
8.根據(jù)權(quán)利要求1所述控制方法,其特征在于,所述八個像素點(diǎn)是上、下、左、右和四個斜對角方向最接近的像素點(diǎn)。
9.根據(jù)權(quán)利要求1所述控制方法,其特征在于,所述像素值是RGB值。
10.根據(jù)權(quán)利要求1所述控制方法,其特征在于,所述步驟1.4)包括在所述二層疊加圖像之下再疊加切換方向后的界面圖像作為最底層圖像;所述步驟1. 5)包括隱藏所述二層疊加圖像顯示所述最底層圖像。
全文摘要
本發(fā)明涉及一種手持設(shè)備的橫豎屏切換漸變控制方法,包括按設(shè)定次數(shù)依序計算并逐次顯示透明度A I從=0到1的上層全黑圖像和下層不斷模糊的切換方向前的界面圖像;凍結(jié)屏幕,獲取到切換方向后的界面圖像;按指定次數(shù)進(jìn)行計算、存儲并逆序逐次顯示透明度AI從=1到0的上層全黑圖像和存儲的下層不斷清晰的切換方向后的界面圖像;顯示切換方向后的界面圖像,解凍屏幕;所述計算處理包括混合周邊四個或八個像素點(diǎn)的像素值和亮度求平均值。這種控制方法,能完美銜接用戶旋轉(zhuǎn)動作,給用戶逼真的自然體驗。
文檔編號H04M1/725GK102541441SQ20111037074
公開日2012年7月4日 申請日期2011年11月18日 優(yōu)先權(quán)日2011年11月18日
發(fā)明者曾元清 申請人:廣東歐珀移動通信有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
库尔勒市| 广宗县| 永丰县| 综艺| 临朐县| 仁寿县| 华安县| 安庆市| 安阳市| 寻甸| 达孜县| 大石桥市| 循化| 井研县| 靖州| 洪洞县| 揭东县| 西宁市| 衡阳市| 兰考县| 正阳县| 上杭县| 朔州市| 汝城县| 巴马| 大同市| 蛟河市| 随州市| 新巴尔虎左旗| 西充县| 溧阳市| 寻乌县| 吉林市| 肃南| 公安县| 山阴县| 邵武市| 寿光市| 邻水| 涿鹿县| 安阳市|