亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android的動態(tài)壁紙的設(shè)計

        2019-12-09 02:06:28王曉東
        智富時代 2019年10期
        關(guān)鍵詞:設(shè)計

        【摘 要】本文介紹了手機動態(tài)壁紙的設(shè)計方法,以及實現(xiàn)的過程。運行的目標平臺為Android,使用OpenGL ES3.0渲染技術(shù)。

        【關(guān)鍵詞】Android;動態(tài)壁紙;設(shè)計

        一、引言

        隨著移動互聯(lián)網(wǎng)的快速發(fā)展,單一的圖片壁紙已經(jīng)不能滿足用戶的需求,動態(tài)壁紙用動態(tài)的影像替換了原始古板的靜態(tài)壁紙,并且不影響圖標的顯示和應用程序的使用。通過動態(tài)壁紙讓桌面顯得更加酷炫、個性,增加手機的魅力。本項目采用的動態(tài)壁紙為3D水族館,在該壁紙中有許多自由游動的魚,地面有不斷一張一合的珍珠貝和不斷閃爍的珍珠。還有幾處不斷冒出氣泡,并且這些氣泡隨高度增加而不斷變大。用戶可以單擊地面給魚喂食,也可以左右滑動屏幕,使壁紙跟隨滑動。使用3ds Max對模型進行設(shè)計與貼圖,所有相關(guān)圖片資源統(tǒng)一放在一個項目文件夾中。采用OpenGL ES3.0渲染技術(shù),使得場景中有很強的立體感,以及非常逼真的光影效果。

        二、類的設(shè)計

        在水族館壁紙的制作中設(shè)計了很多類,主要有以下五個方面。(1)壁紙實現(xiàn)類,具體又有壁紙服務(wù)類和自定義場景渲染器類。前者是水族館壁紙的基礎(chǔ)類,通過繼承GLWallpaperService類,重寫onCreateEngine方法等來實現(xiàn)壁紙功能;后者是水族館壁紙的核心類,在本類中首先設(shè)置使用渲染技術(shù),然后創(chuàng)建需要繪制的所有對象,設(shè)置繪制方式,加載各類物體模型以及所需紋理,設(shè)置攝像機位置,使用投影矩陣,初始化光源位置等。

        (2)繪制類,具體包括群魚控制類、單條魚類、單個魚群類、喂食類、魚食類、氣泡控制類以及珍珠貝類等。群魚控制類定義了群魚列表,存放所有的單條魚對象,創(chuàng)建并啟動魚的移動線程,最后遍歷列表對魚進行繪制。單條魚類定義了魚的所有屬性,包括位置、速度、外力、質(zhì)量以及旋轉(zhuǎn)角度等,單個魚群類定義了魚群中每條魚的所有相關(guān)屬性。喂食類是食物的控制類,其中的startFeed方法由攝像機與觸控點確定一條與場景地面高度交叉的拾取射線,并計算出交點的坐標。魚食類的作用是創(chuàng)建并啟動線程,繪制魚食。

        (3)線程類,具體包括群魚游動線程類、魚食移動線程類和氣泡移動線程類等。群魚游動線程類的作用是通過遍歷群魚列表判斷兩條魚之間的距離,若距離小于閾值,則兩條魚之間產(chǎn)生力的作用。還可以進行碰撞檢測,修改外力、速度和位置等屬性值。魚食移動線程類的主要作用是判斷魚群中的魚與相對位置的距離,若大于閾值就會對該魚產(chǎn)生向心力,并對魚群進行碰撞檢測。氣泡移動線程類的作用是遍歷氣泡列表,判斷氣泡移動方向,然后調(diào)用氣泡對象中的bubbleMove方法,實現(xiàn)氣泡的移動。

        (4)工具常量類,具體包括常量類、向量類、屏幕拾取類和存儲矩陣狀態(tài)類等。常量類是整個壁紙中用到的所有靜態(tài)常量的集合,向量類包含了相關(guān)向量算法、獲取力的大小等方法。屏幕拾取類通過拾取計算獲得觸控點在攝像機坐標系中的坐標,再乘以攝像機矩陣的逆矩陣,即可得到該點在世界坐標系中的坐標。

        (5)輔助繪制類,具體包括背景圖輔助繪制類、氣泡輔助繪制類和珍珠貝輔助繪制類等。以背景圖輔助繪制類為例,它給出背景圖的頂點坐標和紋理坐標,并生成緩沖送進渲染管線,用來繪制背景圖。

        三、類的實現(xiàn)

        以自定義場景渲染器類為例,介紹動態(tài)壁紙相關(guān)類的實現(xiàn)。首先清除深度緩沖與顏色緩沖,進行現(xiàn)場保護,依次繪制背景圖、魚食、單條魚魚群以及珍珠貝。相關(guān)代碼如下:

        GLE30.glClear(GLES30.GL_DEPTH_BUFFER_BIT| GLES30.GL_COLOR_BUFFER_BIT);

        if(bg!=null){bg.drawSelf(back);}

        if(singlefood!=null){singlefood.drawSelf();}

        if(fishControl!=null){fishControl.drawSelf();}

        …………

        重寫onSurfaceChanged方法,設(shè)置視窗的尺寸和位置,計算寬高比,產(chǎn)生投影矩陣以及攝像機參數(shù)位置矩陣。相關(guān)代碼如下:

        GLES30.glViewport(0,0,width,height);

        float ratio=(float)width/height;

        …………

        重寫onSurfaceCreated方法,初始化光源位置,加載紋理,加載BNModel模型,創(chuàng)建魚群、珍珠貝等對象,開啟深度檢測等。相關(guān)代碼如下:

        MatrixState.setInitStack();

        MatrixState.setLightLocation(0,9,13);

        dpm=initTexture(MySurfaceView,this,getResources(),”dpm.png”);

        back=initTexture(MySurfaceView,this,getResources(),”background.png”);

        …………

        重寫initTexture方法,通過輸入流從assets中加載圖片,生成紋理ID,設(shè)置紋理的拉伸方式,設(shè)置紋理采樣方式,最后釋放Bitmap。相關(guān)代碼如下:

        GLES30.glGenTextures(1,textures,0);

        int textureId=textures[0];

        GLES30.glBindTexture(GLES30.GL_TEXTURE_2D,textureId);

        back=initTexture(MySurfaceView,this,getResources(),”background.png”);

        …………

        bitmapTmp.recycle();

        四、結(jié)語

        在軟件設(shè)計過程中,重點是著色器的應用,以及魚游動過程中魚與魚之間作用力的變化規(guī)律等。動態(tài)壁紙的界面和風格還可以繼續(xù)改進,使其更加完美。例如水族館背景壁紙、魚的骨骼動畫及紋理圖、珍珠貝的紋理圖都可以進一步完善,從而達到更加理想的效果。本項目將明暗紋理和法向量的計算放在了片元著色器上進行,這樣的處理方式占用資源過多??梢钥紤]將片元著色器中這部分計算任務(wù)轉(zhuǎn)移到頂點著色器中進行,預期會顯著減少壁紙在運行時對手機GPU資源的消耗。

        【參考文獻】

        [1] 吳亞峰. Android應用案例開發(fā)大全(第4版)[M].北京:人民郵電出版社, 2018.

        作者簡介:王曉東(1971—),男,漢族,湖北十堰人,副教授,主要研究方向:軟件開發(fā)。

        猜你喜歡
        設(shè)計
        何為設(shè)計的守護之道?
        《豐收的喜悅展示設(shè)計》
        流行色(2020年1期)2020-04-28 11:16:38
        瞞天過?!律O(shè)計萌到家
        設(shè)計秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計叫而專
        Coco薇(2017年5期)2017-06-05 08:53:16
        設(shè)計之味
        舒適廣告(2008年9期)2008-09-22 10:02:48
        国产精品人妻一码二码尿失禁 | 亚洲αv在线精品糸列| 55夜色66夜色国产精品视频 | 九月色婷婷免费| 亚洲中文字幕视频第一二区| 久久婷婷五月综合97色直播 | 国产精品入口牛牛影视| 女优免费中文字幕在线| 熟女一区二区中文字幕| 国产熟妇另类久久久久| 美女视频一区| 亚洲精品一区二区视频| 电驱蚊液可以插一晚上吗| 欧美大成色www永久网站婷| 欧美视频第一页| 亚洲日本国产一区二区三区| 日日噜噜夜夜狠狠久久丁香五月 | 亚洲国产成人片在线观看 | 蜜桃夜夜爽天天爽三区麻豆av| 国产又大又黑又粗免费视频| 亚洲精品国产精品国自产观看| 无码伊人久久大蕉中文无码| 国产精品黑丝美腿美臀| 自愉自愉产区二十四区| 亚洲伊人久久一次| 国产一区二区三区特黄| www国产亚洲精品久久麻豆| 越南女子杂交内射bbwbbw| 无码专区无码专区视频网址| 东北老熟女被弄的嗷嗷叫高潮| 亚洲av鲁丝一区二区三区黄| 99re免费在线视频| 日本一区中文字幕在线播放| 亚洲a∨无码精品色午夜| 天天干成人网| 日韩有码中文字幕第一页| 日韩精品熟女中文字幕| 老熟妇乱子伦av| 久久久久久AV无码成人| 人妻少妇精品视频一区二区三| 久久精品成人无码观看不卡|