freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android手機(jī)系統(tǒng)的3d桌面主題開發(fā)畢業(yè)論文-文庫吧

2025-07-24 15:39 本頁面


【正文】 理十分復(fù)雜,對觸摸事件響應(yīng)機(jī)制更是復(fù)雜。因此,一般開發(fā)此類應(yīng)用程序都必須下載 Android Launcher 源碼。 通過在 Android 官網(wǎng)上下載 Android Launcher 源碼包,并解壓到 myeclipse 工程目錄下,引入工程并添加相應(yīng)的 jar 包,消除錯誤后,便可以進(jìn)行開發(fā) (工程截圖 如圖 )。 ① 尹松強(qiáng) 傅鸝 .java 反射機(jī)制探 究 [J], 2020 年 (第 7 卷第 11 期 ):P85P85 String class_name = + style。 workspaceProxy = (WorkspaceProxy) (class_name) .getConstructor().newInstance(this)。 基于 Android手機(jī)系統(tǒng)的 3D桌面主題開發(fā) 8 頁 圖 工程截圖 在開發(fā) Android 主題前,必須對 Android Launcher 有一個初步的認(rèn)識。 界面模型 圖 Launcher 界面模型 CellLayout(由 N 個 cellLayout 組成的workspace) 狀態(tài)欄 垃圾桶 基于 Android手機(jī)系統(tǒng)的 3D桌面主題開發(fā) 9 頁 圖 HomeScreen 基本結(jié)構(gòu)圖 由于 Launcher 需要管理各種圖標(biāo)等,而 Android 自帶的視圖不足以實(shí)現(xiàn)如此復(fù)雜的界面。因此, Launcher 中的界面元素大都是自定義視圖。所以在開發(fā) Launcher之前必須更深入地了解其界面模型(如圖 )。 Launcher 界面 模型 的 根視圖 是 DragLayer(繼承自 FrameLayout)。而 在 根視圖 上workspace 占了絕大部分的空間 。 HomeScreen 基本結(jié)構(gòu)圖(如圖 )描述了繪制整個 Launcher 界面模型的類關(guān)系圖。 觸摸事件處理 由于 Launcher 接收到的觸摸 事件比較多 (例如單擊、長按、滑動等),處理邏輯也比較復(fù)雜,所以 Launcher 觸摸 事件處理 機(jī)制 采用 根視圖( DragLayer)統(tǒng)一分發(fā)處理。詳細(xì)處理規(guī)則為首先父視 圖中的 onInterceptTouchEvent(MotionEvent)方法 攔截所有的 觸摸 事件,經(jīng)過判斷后分發(fā)給 子視圖 。判斷的規(guī)則如下: 事件首先會傳遞到 onInterceptTouchEvent()方法 如果 父視圖 的 onInterceptTouchEvent(MotionEvent)方法 在接收到 事件處理完成之后 返回 false,那么后續(xù)的, 等事件將繼續(xù)會先傳遞給該 父視圖 ,之后才和 事件 一起 傳遞給 下一級 的目標(biāo) 子視圖 的. Workspace (ViewGroup) . CellLayout (ViewGroup) (FrameLayout) SlidingDrawer (FrameLayout) . CellLayout (ViewGroup) . CellLayout (ViewGroup) . HandlerView (ImageView) . AllAppsGirdView (GirdView) 基于 Android手機(jī)系統(tǒng)的 3D桌面主題開發(fā) 10頁 onTouchEvent(MotionEvent)處理。 如果該 父視圖 的 onInterceptTouchEvent(MotionEvent)在接收到 事件處理完成之后返回 true,那么后續(xù)的, 等事件將不再傳遞給 該父視圖的onInterceptTouchEvent(MotionEvent),而是和 事件 一起 傳遞給該 父視圖 的 onTouchEvent(MotionEvent)處理, 而 目標(biāo) 子視圖 將接收不到任何事件。 如果最終需要處理事件的 視圖 的 onTouchEvent(MotionEvent)返回 false,那么該觸摸 事件將被傳遞至其上一層次的 視圖 的 onTouchEvent(MotionEvent)處理。 如果最終需要處理事件的 視圖 的 onTouchEvent(MotionEvent)返回 true,那么后續(xù)事件將可以繼續(xù)傳遞給該 視圖 的 onTouchEvent(MotionEvent)處理。 Launcher 開發(fā) 通過上面的介紹,對 Launcher 有了初步的了解。那如何進(jìn)行 Launcher 開發(fā)呢?一般Launcher 開發(fā)都是基于改善和修改以下幾個方面: 轉(zhuǎn)屏方式; 布局方式; 事件處理方式; 應(yīng)用程序列表的展現(xiàn)方式; 本論文主要基于轉(zhuǎn)屏方式的應(yīng)用以及改善,改變系統(tǒng)默認(rèn)的滑屏方式,以 3D 轉(zhuǎn)屏方式取而代之,體現(xiàn)了較好的用戶體驗。 Launcher 轉(zhuǎn)屏方式主要由 Workspace 類里決定和處理。 Workspace 類接收了 Launcher傳遞過來的各種觸摸事件,當(dāng) Workspace 接收到觸摸事件時,首先交由onInterceptTouchEvent(MotionEvent)處理,處理規(guī)則如下: 如果接收到的是 事件,那么就會把當(dāng)前的觸摸坐標(biāo)記錄為前一次觸摸坐標(biāo)。觸摸狀態(tài)改為 RESET。 如果接收到的是 事件,那么就計算當(dāng)前觸摸坐標(biāo)與前一次觸摸坐標(biāo)是否超出了某個值。如果超出了,則把觸 摸狀態(tài)改為 SCROLLING。否則觸摸狀態(tài)保持不變。 如果接收到的是 事件,那么就把觸摸狀態(tài)改為 RESET,并更新壁紙。 最后,如果觸摸狀態(tài)為 SCROLLING,則把當(dāng)前及后續(xù)事件傳遞給onTouchEvent(MotionEvent)處理;否則, onInterceptTouchEvent(MotionEvent)繼續(xù)處理后續(xù)事件。 因此,當(dāng)用戶滑動屏幕的前后坐標(biāo)差超過一定值時,所有事件都會傳遞給onTouchEvent(MotionEvent)處理。 onTouchEvent(MotionEvent)方法處理事件規(guī)則如下: 基于 Android手機(jī)系統(tǒng)的 3D桌面主題開發(fā) 11頁 如果接收到的是 事件,那么就會把當(dāng)前的觸摸坐標(biāo)記錄為前一次觸摸坐標(biāo)。 如果接收到的是 事件,那么就把當(dāng)前的觸摸坐標(biāo)記錄為前一次觸摸坐標(biāo)以及保持觸摸狀態(tài)不變,并按照某種方式進(jìn)行轉(zhuǎn)動屏幕。 如果接收到的是 事件,那么就把觸摸狀態(tài)改為 RESET,并繪制當(dāng)前滑動到達(dá)的子視圖。 最后,返回 true,即把當(dāng)前及后 續(xù)事件傳遞給本方法處理。 所以,通過以上分析,可以得知: 通過改變 Workspace 的 onTouchEvent(MotionEvent)方法處理 事件的方式,就可以改變 Launcher 的轉(zhuǎn)屏方式 。為此,定義一個主題樣式接口,如代碼 。 代碼 Opengl ES 標(biāo)準(zhǔn) Opengl 標(biāo)準(zhǔn)簡介 /**主題樣式接口 */ public interface WorkspaceProxy { void dispatchDraw(Canvas canvas)。/** 繪制屏幕 */ boolean onInterceptTouchEvent(MotionEvent motionEvent)。 /**攔截所有的觸摸事件 */ boolean onTouchEvent(MotionEvent motionEvent)。 /**處理傳遞過來的所有觸摸事件 */ void destroy()。/**釋放資源 */ } 基于 Android手機(jī)系統(tǒng)的 3D桌面主題開發(fā) 12頁 圖 OpenGL 和 OpenGL ES 之間的關(guān)系圖 OpenGL ES(OpenGL for Embedded Systems)是 OpenGL 三維圖形 API 的子集, 定義了一個在移動平臺上能夠支持 OpenGL 最基本功能的精簡標(biāo)準(zhǔn),以適應(yīng)如手機(jī), PDA或其它消費(fèi)者移動終端的顯示系統(tǒng) 。該 API 由 Khronos 集團(tuán)定義推廣, Khronos 是一個圖形軟硬件行業(yè)協(xié)會,該協(xié)會主要關(guān)注圖形和多媒體方面的開放標(biāo)準(zhǔn)。 OpenGL ES 管道 大部分圖形系統(tǒng)都可以比作工廠中的裝配線或者稱為管道 (Pipeline)。前一道的輸出作為下道工序的輸入。主 CPU 發(fā)出一個繪圖指令,對頂點(diǎn)數(shù)組進(jìn)行指定的坐標(biāo)變換或 光照處理。頂點(diǎn)處理完成后,通過 Rasterizer 來生成像素信息,稱為 Fragments。對于 Fragment 在經(jīng)過 Texture Processing, Color Sum ,Fog 等處理并將最終處理結(jié)果存放在內(nèi)存中(稱為 FrameBuffer),最后在屏幕上把圖像顯示出來。 圖 OpenGL ES 管道的結(jié)構(gòu)圖 投影方式 在 OpenGL ES 中支持兩種投影方式:正交投影和透視投影 ① 。 所謂的正交投影是平行投影的一種,觀察者的實(shí)現(xiàn)是平行的,不產(chǎn)生真實(shí)世界遠(yuǎn)大近小的透視效果。在正交投影中,可視的空間區(qū)域為長方體 (正交投影產(chǎn)生的效果如圖 )。 ① 吳亞峰 蘇亞光 .Android 3D 游戲開發(fā)技術(shù)詳解與典型案例 [M].北京 :電子工業(yè)出版社 .2020:P103– P113 基于 Android手機(jī)系統(tǒng)的 3D桌面主題開發(fā) 13頁 圖 :正交投影 而透視投影屬于非平行投影,可視的空間區(qū)域為梯臺。觀察者的實(shí)現(xiàn)在遠(yuǎn)處是相交的,視線相交即為滅點(diǎn)。通過透視投影,可以產(chǎn)生現(xiàn)實(shí)世界中的近大遠(yuǎn)小的效果。因此使用透視投影可以得到更加真實(shí)的 3D感受 (透視投影產(chǎn)生 的效果如圖 )。 圖 :透視投影 在本論文的工程中,使用透視投影,具體代碼如代碼 。 基于 Android手機(jī)系統(tǒng)的 3D桌面主題開發(fā) 14頁 代碼 光照效果 光照使物體看起來更立體。如果沒有光照,絕大多數(shù)物體看上去甚至不像三維物體。因此,光照對于三維物體來說十分重要。 在 OpenGL ES 中,分別有兩種光源產(chǎn)生光照效果:定向光和定位光。定向光對應(yīng)的是光源在無窮遠(yuǎn)處的光,定向光在空間中的所有位置方向都是相同的。而定位光對應(yīng)的是光源在某一具體位置的光。 同時,在設(shè)置光照效果 時,需要設(shè)置光源的一些特性,如顏色。 OpenGL ES 允許把與顏色相關(guān)的 3 個不同參數(shù) GL_AMBIENT、 GL_DIFFUSE、 GL_SPECULAR 與任何特定的光源相關(guān)聯(lián) ① 。 ambient 即環(huán)境光,表示一個特定的光源在場景中所添加的環(huán)境光的 RGBA 強(qiáng)度。在默認(rèn)情況下,不存在環(huán)境光。 diffuse 即散射光,散射光來自于某個方向。因此,如果散射光從正面照射物體表面,它看起來就顯得更亮一些。反之,如果它斜著從物體表面掠過,則看起來就顯得暗一些。但是當(dāng)散射光撞擊物體表面時,它就會向四面八方均勻地發(fā)散。不管從哪 個方向看,散射光看上去總是一樣亮。來自某個特定位置或方向的任何光很可能具有散射成分。 specular 即鏡面光,鏡面光來自一個特定的方向,并且傾向于從表面向某個特定的方向反射。鏡面光肉眼看起來是物體上最亮的地方。當(dāng)然這與物體本身也有關(guān)系,如果是類似鏡子的、光澤的金屬等,則光線為全反射,整個物體都很明亮,而對于像石膏雕像地毯等,則幾乎不存在鏡面成分。 在本論文的工程中,光照效果設(shè)置的代碼如代碼 。 ① 吳亞峰 蘇亞光 .Android 3D 游戲開發(fā)技術(shù)詳解與典型案例 [M].北京 :電子工業(yè)出版社 .2020:P119– P121 public void onSurfaceChanged(GL10 gl, int width, int height) { ?? 省略部分代碼 /*********** 計算投影參數(shù) ******************/ (gl, , ratio, , )。 // 投影矩陣參數(shù) :可視體 ?? 省略部分代碼 } /** * 初始化燈光效果 */ private void initLight(GL10 gl) { 基于 Android手機(jī)系統(tǒng)的 3D桌面主題開發(fā) 15頁 代碼 法向量 物體每個頂點(diǎn)的法向量決定了光照時的反射情況,如果沒有為頂點(diǎn)設(shè)置法向量,光照系統(tǒng)也是不能正常工作的。物體每個頂點(diǎn)的法向量是指處于三維物體表面處的法線方向,其用一個向量來表示。 OpenGL ES 中向量用一個三元組來表示,格式為 (x, y, z)① 。 但由于一個三維坐標(biāo)系中的點(diǎn)有可能在多個平面中,因此會有兩種計算方法來計算該點(diǎn)的法向量,分別是面法向量和點(diǎn)平均法向量。 面法向量是指當(dāng)立體物體中一個頂點(diǎn)位于某個三角形面上時,為其分配屬于面
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1