版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 本科畢業(yè)設(shè)計(jì)</b></p><p><b> ?。?0 屆)</b></p><p> 基于andrid平臺opengl圖形圖像接口應(yīng)用研究</p><p> 所在學(xué)院 </p><p> 專業(yè)班級
2、 信息與計(jì)算科學(xué) </p><p> 學(xué)生姓名 學(xué)號 </p><p> 指導(dǎo)教師 職稱 </p><p> 完成日期 年 月 </p><p> 【摘要】Android作為Google
3、公司推出的專為智能終端定制的操作系統(tǒng),已經(jīng)成為目前智能手機(jī)中增長最快的操作系統(tǒng). 并且必將對手持終端操作系統(tǒng)的發(fā)展產(chǎn)生重要而深遠(yuǎn)的影響。OpenGL是目前用于開發(fā)可移植的、可交互的2D和3D圖形應(yīng)用程序的首選環(huán)境,也是目前應(yīng)用最廣泛的計(jì)算機(jī)圖形標(biāo)準(zhǔn)。本文對android系統(tǒng)的特點(diǎn)平臺如何編寫應(yīng)用軟件做了詳細(xì)的介紹,并運(yùn)用了opengl圖形圖像技術(shù)制作了一個(gè)帶有各種圖像特效的手機(jī)日歷程序。</p><p> 【
4、關(guān)鍵詞】;android平臺;opengl圖像接口:動(dòng)畫:智能手機(jī)</p><p> 【ABSTRACT】Android as Google company launched which designed for intelligent terminal customization of operating system, has become the fastest growth in the smartph
5、one operating system. And it will produce important and far-reaching effects for the hand-held terminals operating system development . OpenGL is used in development of portable and interactive 2D and 3D graphics applic
6、ations preferred environment at present.It is also the most widely used computer graphics standard. In this paper,it</p><p> 【KEYWORDS】andrid platform;Opengl graphics image interface;animation:。smartphone&
7、lt;/p><p><b> 目 錄</b></p><p> 摘 要(宋體,加粗,小二號字,居中)錯(cuò)誤!未定義書簽。</p><p> Abstract錯(cuò)誤!未定義書簽。</p><p> 目 錄(宋體,加粗,小二號字,居中)I</p><p> 1 Android系統(tǒng)簡介1<
8、;/p><p> 1.1 Android來源(宋體四號字加粗)1</p><p> 1.2 Android硬件要求1</p><p> 1.3 Android核心模塊2</p><p> 2 Android與Linux的關(guān)系2</p><p> 2.1 Android與Linux的關(guān)系2</p&g
9、t;<p> 3 Android平臺介紹2</p><p> 3.1 Android系統(tǒng)架構(gòu)2</p><p> 3.2應(yīng)用與框架3</p><p> 4.2.1應(yīng)用程序框架(Application Framework)3</p><p> 4.2.2應(yīng)用程序(Application)3</p>
10、<p> 3.3庫與運(yùn)行環(huán)境4</p><p><b> 3.4運(yùn)行環(huán)境4</b></p><p><b> 3.5內(nèi)核5</b></p><p> 4 Android應(yīng)用程序模塊詳解5</p><p><b> 4.1任務(wù)5</b></p
11、><p> 4.2啟動(dòng)模式以及啟動(dòng)標(biāo)記6</p><p><b> 4.3進(jìn)程6</b></p><p><b> 4.4線程7</b></p><p> 5 android 應(yīng)用程序開發(fā)簡介8</p><p> 5.1 Activity 介紹8&l
12、t;/p><p> 5.1.1 activity的作用8</p><p> 5.1.2 Activity的生命周期8</p><p> 5.2 View簡介以及動(dòng)畫實(shí)現(xiàn)原理10</p><p> 5.2.1 View簡介10</p><p> 5.2.2 動(dòng)畫的原理以及在android平臺的實(shí)現(xiàn)方
13、法11</p><p> 6 Android 日歷應(yīng)用模塊代碼簡介12</p><p> 6.1軟件的需求分析以及功能分析12</p><p> 6.2 各個(gè)界面的簡介12</p><p> 6.2.1主界面12</p><p> 6.2.2 編輯界面13</p><p&g
14、t; 6.2.3 刪除消息界面14</p><p> 6.2.4 設(shè)置界面14</p><p> 6.2.5日歷界面15</p><p> 6.3主要功能的實(shí)現(xiàn)15</p><p> 6.3.1 日歷部分的數(shù)據(jù)處理功能16</p><p> 6.3.2提醒的保存與讀取19</p>
15、;<p> 6.3.3定時(shí)提醒功能的實(shí)現(xiàn)21</p><p> 6.4動(dòng)畫的實(shí)現(xiàn)。23</p><p> 1 Android系統(tǒng)簡介</p><p> 1.1 Android來源</p><p> Android一詞的本義指“機(jī)器人”,同時(shí)也是Google于2007年11月5日宣布的基于Linux平臺的開源手機(jī)操作
16、系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)軟件。</p><p> Android 是由Google與開放手機(jī)聯(lián)盟(Open Handset Alliance,OHA)合作開發(fā)的,聯(lián)盟包括Google、HTC(宏達(dá)電)、PHILIPS、T-Mobile、高通、魅族、摩托羅拉、三星、LG以及中國移動(dòng)在內(nèi)的34家企業(yè)。這個(gè)聯(lián)盟并不包括把持Symbia
17、n的諾基亞,以及憑借著iPhone風(fēng)光正在的蘋果公司,當(dāng)然微軟沒有加入,獨(dú)樹一幟的加拿大RIM和他們的Blackberry也被擋在門外。</p><p> Android是基于Linux內(nèi)核的操作系統(tǒng),是Google公司在2007年11月5日公布的手機(jī)操作系統(tǒng),早期又原名為"Android"的公司開發(fā),谷歌在2005年進(jìn)行收購"Android.Inc",Google繼續(xù)進(jìn)
18、行對Android系統(tǒng)開發(fā)運(yùn)營,它采用了軟件堆層(software stack,又名以軟件疊層)的架構(gòu),主要分為三部分。底層Linux內(nèi)核只提供基本功能;其他的應(yīng)用軟件則由各公司自行開發(fā),部分程序以Java編寫。2011年初數(shù)據(jù)顯示,僅正式推出三年的操作系統(tǒng)Android已經(jīng)超越稱霸十年的塞班系統(tǒng),采用Android系統(tǒng)主要廠商包括美國摩托羅拉(MOTOROLA)、韓國的三星(SAMSUNG)、英國索尼愛立信(Sony Ericsson
19、)另外還有中國廠商如:中國臺灣HTC、聯(lián)想、華為、中興等,使之躍居全球最受歡迎的智能手機(jī)平臺,Android系統(tǒng)不但應(yīng)用于智能手機(jī),也在平板電腦市場急速擴(kuò)張。 </p><p> 1.2 Android硬件要求</p><p> 首先Android作為一個(gè)使用Linux內(nèi)核的智能手機(jī)操作系統(tǒng)CPU 至少為ARM9 200MHz才能帶動(dòng)Dalvik這個(gè)Java級虛擬機(jī),目前G1使用
20、的是ARM11和ARM9組成的雙核CPU,主頻達(dá)到了520MHz。運(yùn)行內(nèi)存方面Linux雖然有優(yōu)勢,但是Android桌面、UI等都工作在Java VM之上需要的占用十分大,在T-Mobile G1達(dá)到了192MB容量,比使用本地C/C++編寫的程序更占用資源,同時(shí)Android程序生命周期的特殊性,GC(Garbage Collection)不會頻繁的回收資源,使用的內(nèi)存還是比較大的。</p><p> 在3
21、D硬件加速方面,可以由廠商自己的定制,作為一個(gè)可選的組件來支持OpenGL ES,最新已經(jīng)支持到了2.0并非傳統(tǒng)的1.1,廠商還可以定制Wi-Fi網(wǎng)卡、各種感應(yīng)器等硬件。</p><p> 1.3 Android核心模塊</p><p> Android作為一個(gè)移動(dòng)設(shè)備的平臺,其軟件層次結(jié)構(gòu)包括了一個(gè)操作系統(tǒng)(OS),中間件(MiddleWare)和應(yīng)用程序(Application)。
22、Android的軟件層次結(jié)構(gòu)自下而上分為以下幾個(gè)層次:操作系統(tǒng)層(OS)、各種庫(Libraries)和Android 運(yùn)行環(huán)境(RunTime)、應(yīng)用程序框架(Application Framework)、應(yīng)用程序(Application)</p><p> 2 Android與Linux的關(guān)系</p><p> 2.1 Android與Linux的關(guān)系</p><
23、;p> Android是在Linux2.6的內(nèi)核基礎(chǔ)之上運(yùn)行的,提供核心系統(tǒng)服務(wù):安全、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)組、驅(qū)動(dòng)模型。內(nèi)核部分還相當(dāng)于一個(gè)介于硬件層和系統(tǒng)中其他軟件組之間的一個(gè)抽象層次。但是嚴(yán)格來說它不算是Linux操作系統(tǒng)。</p><p> Android系統(tǒng)的系統(tǒng)層面的底層是Linux,中間加上了一個(gè)叫做Dalvik的JAVA虛擬機(jī),表面層上面是Android運(yùn)行庫。每個(gè)Android應(yīng)用
24、都運(yùn)行在自己的進(jìn)程上,享有Dalvik虛擬機(jī)為它分配的專有實(shí)例。為了支持多個(gè)虛擬機(jī)在同一個(gè)設(shè)備上高效運(yùn)行,Dalvik被改寫過。</p><p> Dalvik虛擬機(jī)執(zhí)行的是Dalvik格式的可執(zhí)行文件(.dex)——該格式經(jīng)過優(yōu)化,以降低內(nèi)存耗用到最低。Java編譯器將Java源文件轉(zhuǎn)為class文件,class文件又被內(nèi)置的dx工具轉(zhuǎn)化為dex格式文件,這種文件在Dalvik虛擬機(jī)上注冊并運(yùn)行。</p
25、><p> Android系統(tǒng)的應(yīng)用軟件都是運(yùn)行在Dalvik之上的JAVA軟件,而Dalvik是運(yùn)行在Linux中的,在一些底層功能——比如線程和低內(nèi)存管理方面,Dalvik虛擬機(jī)是依賴Linux內(nèi)核的。只能說Android是運(yùn)行在Linux之上的操作系統(tǒng)了,它本身不能算是Linux的某個(gè)版本 。</p><p> 3 Android平臺介紹</p><p>
26、3.1 Android系統(tǒng)架構(gòu)</p><p> Android系統(tǒng)架構(gòu)包括::</p><p> 應(yīng)用程序框架(Application framework)——復(fù)用與覆蓋</p><p> Dalvik虛擬機(jī)(Dalvik virtual machine)——針對移動(dòng)設(shè)備的優(yōu)化</p><p> 內(nèi)嵌瀏覽器(Integrated b
27、rowser)——基于開源的webkit引擎</p><p> 優(yōu)化的圖形(Optimized graphics)——2D與3D圖形庫(硬件加速可選)</p><p> SQLite結(jié)構(gòu)化存儲</p><p> 多媒體支持——常用的音頻,視頻和靜止圖像格式(MPEG4,H.264,Mp3,AAC,AMR,JPG,PNG,GIF)</p><
28、p> GSM電話功能——取決于硬件</p><p> 藍(lán)牙、EDGE、3G與WiFi功能——取決于硬件</p><p> 相機(jī)、GPS、羅盤與加速計(jì)功能——取決于硬件</p><p> 豐富的開發(fā)環(huán)境:手機(jī)模擬器,調(diào)試工具,內(nèi)存與性能profiling,Eclipse插件</p><p><b> 3.2應(yīng)用與框架&
29、lt;/b></p><p> 4.2.1應(yīng)用程序框架(Application Framework)</p><p> Android 應(yīng)用程序由一個(gè)或多個(gè)組件組成,Android的應(yīng)用程序框架為應(yīng)用程序?qū)拥拈_發(fā)者提供APIs,它實(shí)際上是一個(gè)應(yīng)用程序的框架。由于上層的應(yīng)用程序是以JAVA構(gòu)建的,因此本層次提供的首先包含了UI程序中所需要的各種控件:例如: Views (視圖組件)
30、包括 lists(列表), grids(柵格), text boxes(文本框), buttons(按鈕)等。甚至一個(gè)嵌入式的Web瀏覽器。 一個(gè)Andoid的應(yīng)用程序可以利用應(yīng)用程序框架中的以下幾個(gè)部分:</p><p> Activity (活動(dòng))</p><p> Broadcast Intent Receiver (廣播意圖接收者)</p><p>
31、; Service (服務(wù))</p><p> Content Provider (內(nèi)容提供者)</p><p> 4.2.2應(yīng)用程序(Application)</p><p> Android的應(yīng)用程序主要是用戶界面(User Interface)方面的,通常以JAVA程序編寫,其中還可以包含各種資源文件(放置在res目錄中)JAVA程序及相關(guān)資源經(jīng)過編譯
32、后,將生成一個(gè)APK包。Android本身提供了主屏幕(Home),聯(lián)系人(Contact),電話(Phone),瀏覽器(Browers)等眾多的核心應(yīng)用。同時(shí)應(yīng)用程序的開發(fā)者還可以使用應(yīng)用程序框架層的API實(shí)現(xiàn)自己的程序。這也是Android開源的巨大潛力的體現(xiàn)。</p><p> 應(yīng)用程序 Android會附帶一些核心的應(yīng)用程序, 包括一個(gè)email客戶端, 短信程序, 日歷, 地圖, 瀏覽器, 通訊錄等。
33、</p><p> 所有的應(yīng)用程序都是由Java語言完成的。</p><p> 應(yīng)用程序框架 開發(fā)人員可以跟那些核心應(yīng)用一樣, 擁有訪問框架APIs的全部權(quán)限. 應(yīng)用的系結(jié)構(gòu)設(shè)計(jì)簡化了各組件之間的重用;任何應(yīng)用都可以分發(fā)自己的組件, 任何應(yīng)用也可以使用這些分發(fā)的組件(應(yīng)用的使用方法需遵循框架的安全性約束)。這個(gè)機(jī)制對用戶來說同樣適用, 他們也可以替換組件。</p><
34、;p> 應(yīng)用程序是無界限的,可以再平等條件下創(chuàng)建,還可以輕松地嵌入web,可以并行運(yùn)行。</p><p><b> 3.3庫與運(yùn)行環(huán)境</b></p><p> Android 包含一套C/C++庫, 被用于Android 系統(tǒng)中的各種組件中. 這些功能通過Android 應(yīng)用框架展現(xiàn)給開發(fā)人員. 下面列出一些核心:</p><p>
35、; System C library - 實(shí)現(xiàn)了BSD-derived 的標(biāo)準(zhǔn)C系統(tǒng)庫(libc), 也是系統(tǒng)中最為底層的庫,用于嵌入式的基于Linux的設(shè)備,C庫是通過Linux的系統(tǒng)調(diào)用來實(shí)現(xiàn)的。</p><p> Media Framework - 基于PacketVideo的 OpenCORE; 從功能上該庫一共分為兩大部分,一個(gè)部分是音頻,視頻的回放(PlayBack),另一個(gè)部分則是音頻,視頻的記
36、錄(Recorder)。同樣包括靜態(tài)圖片文件, 包括MPEG4, H.264, MP3, AAC, AMR, JPG, 和 PNG 等。</p><p> Surface Manager - 用于管理不同應(yīng)用對圖形顯示子系統(tǒng)和2D和3D圖形層的訪問</p><p> WebKit - 一個(gè)時(shí)尚的web瀏覽器引擎, 為Android瀏覽器和內(nèi)嵌的web view提供實(shí)現(xiàn)</p>
37、;<p> SGL - 隱藏的2D圖形引擎</p><p> 3D libraries - 基于OpenGL ES 1.0 APIs實(shí)現(xiàn)的庫; 該庫用于3D圖形加速或提供高優(yōu)化的3D軟件光柵器</p><p> FreeType - 位圖和向量模式的字體繪制</p><p> SQLite - 一個(gè)強(qiáng)大的, 輕量的關(guān)系型數(shù)據(jù)庫引擎, 用于所有的
38、應(yīng)用Android 運(yùn)行時(shí) Android包含一組核心庫, 提供了Java語言核心庫內(nèi)的大部分功能.</p><p><b> 3.4運(yùn)行環(huán)境</b></p><p> Android 運(yùn)行環(huán)境主要指的虛擬機(jī)技術(shù)——Dalvik。Dalvik 虛擬機(jī)依賴Linux kernel 來實(shí)現(xiàn)一些潛在功能, 例如線程和底層內(nèi)存管理。Dalvik虛擬機(jī)和一般JAVA虛擬機(jī)(
39、Java VM)不同,它執(zhí)行的不是JAVA標(biāo)準(zhǔn)的字節(jié)碼(bytecode )而是Dalvik可執(zhí)行格式(.dex)中執(zhí)行文件,該格式的文件經(jīng)過優(yōu)化占用很小的內(nèi)存。在執(zhí)行的過程中,每一個(gè)應(yīng)用程序即一個(gè)進(jìn)程(Linux的一個(gè)Process)。 二者最大的區(qū)別在于Java VM是以基于棧的虛擬機(jī)(Stack-based),而Dalvik是基于寄存器的虛擬機(jī)(Register-based)。顯然,后者最大的好處在于可以根據(jù)硬件實(shí)現(xiàn)更大的優(yōu)化,這
40、更適合移動(dòng)設(shè)備的特點(diǎn)。每個(gè) Android 應(yīng)用程序都在 Dalvik VM 的一個(gè)實(shí)例中運(yùn)行,這個(gè)實(shí)例駐留在一個(gè)由 Linux 內(nèi)核管理的進(jìn)程中。</p><p><b> 3.5內(nèi)核</b></p><p> Android使用Linux2.6作為操作系統(tǒng),Linux2.6是一種標(biāo)準(zhǔn)的技術(shù),Linux也是一個(gè)開放的操作系統(tǒng)。Android對操作系統(tǒng)的使用包括核
41、心和驅(qū)動(dòng)程序兩部分,Android的Linux核心為標(biāo)準(zhǔn)的Linux2.6內(nèi)核,Android更多的是需要一些與移動(dòng)設(shè)備相關(guān)的驅(qū)動(dòng)程序。主要的驅(qū)動(dòng)如下所示:</p><p> 顯示驅(qū)動(dòng)(Display Driver):常用基于Linux的幀緩沖(Frame Buffer)驅(qū)動(dòng)。</p><p> Flash內(nèi)存驅(qū)動(dòng)(Flash Memory Driver)</p><
42、;p> 照相機(jī)驅(qū)動(dòng)(Camera Driver):常用基于Linux的v4l(Video for )驅(qū)動(dòng)。</p><p> 音頻驅(qū)動(dòng)(Audio Driver):常用基于ALSA(Advanced Linux Sound Architecture,高級Linux聲音體系)驅(qū)動(dòng)。</p><p> WiFi驅(qū)動(dòng)(Camera Driver):基于IEEE 802.11標(biāo)準(zhǔn)
43、的驅(qū)動(dòng)程序</p><p> 鍵盤驅(qū)動(dòng)(KeyBoard Driver)</p><p> 藍(lán)牙驅(qū)動(dòng)(Bluetooth Driver)</p><p> Binder IPC驅(qū)動(dòng): Andoid一個(gè)特殊的驅(qū)動(dòng)程序,具有單獨(dú)的設(shè)備節(jié)點(diǎn),提供進(jìn)程間通訊的功能。</p><p> Power Management(能源管理)</p&
44、gt;<p> 4 Android應(yīng)用程序模塊詳解</p><p><b> 4.1任務(wù)</b></p><p> 當(dāng)用戶看到的“應(yīng)用”,無論實(shí)際是如何處理的,它都是一個(gè)任務(wù)。如果你僅僅通過一些活動(dòng)來創(chuàng)建一個(gè).apk包,其中有一個(gè)肯定是上層入口(通過動(dòng)作的intent-filter 以及分類android.intent.category.LAUNC
45、HER),然后你的.apk包就創(chuàng)建了一個(gè)單獨(dú)任務(wù),無論你啟動(dòng)哪個(gè)活動(dòng)都會是這個(gè)任務(wù)的一部分。</p><p> 4.2啟動(dòng)模式以及啟動(dòng)標(biāo)記</p><p> 你控制活動(dòng)和任務(wù)通信的最主要的方法是通過設(shè)置啟動(dòng)模式的屬性以及意圖相應(yīng)的標(biāo)記。這兩個(gè)參數(shù)能以不同的組合來共同控制活動(dòng)的啟動(dòng)結(jié)果,這在相應(yīng)的文檔里有描述。這里我們只描述一些通用的用法以及幾種不同的組合方式。</p>&
46、lt;p> 你最通常使用的模式是singleTop(除了默認(rèn)為standard模式)。這不會對任務(wù)產(chǎn)生什么影響;僅僅是防止在棧頂多次啟動(dòng)同一個(gè)活動(dòng)。</p><p> singleTask模式對任務(wù)有一些影響:它能使得活動(dòng)總是在新的任務(wù)里被打開(或者將已經(jīng)打開的任務(wù)切換到前臺來)。使用這個(gè)模式需要加倍小心該進(jìn)程是如何和系統(tǒng)其他部分交互的,它可能影響所有的活動(dòng)。這個(gè)模式最好被用于應(yīng)用程序入口活動(dòng)的標(biāo)記中。
47、(支持MAIN活動(dòng)和LAUNCHER分類)。</p><p> singleInstance啟動(dòng)模式更加特殊,該模式只能當(dāng)整個(gè)應(yīng)用只有一個(gè)活動(dòng)時(shí)使用。</p><p> 有一種情況你會經(jīng)常遇到,其它實(shí)體(如搜索管理器SearchManager 或者 通知管理器NotificationManager)會啟動(dòng)你的活動(dòng)。這種情況下,你需要使用 Intent.FLAG_ACTIVITY_NEW
48、_TASK 標(biāo)記,因?yàn)榛顒?dòng)在任務(wù)(這個(gè)應(yīng)用/任務(wù)還沒有被啟動(dòng))之外被啟動(dòng)。就像之前描述的一樣, 這種情況下標(biāo)準(zhǔn)特性就是當(dāng)前和任務(wù)和新的活動(dòng)的親和性匹配的任務(wù)將會切換到前臺,然后在最頂端啟動(dòng)一個(gè)新的活動(dòng)。當(dāng)然,你也可以實(shí)現(xiàn)其它類型的特性。</p><p> 一個(gè)常用的做法就是將Intent.FLAG_ACTIVITY_CLEAR_TOP 和NEW_TASK一起使用。這樣做,如果你的任務(wù)已經(jīng)處于運(yùn)行中,任務(wù)將會被切
49、換到前臺來, 在棧里的所有的活動(dòng)除了根活動(dòng),都將被清空,根活動(dòng)的onNewIntent(Intent) 方法傳入意圖參數(shù)后被調(diào)用。當(dāng)使用這種方法的時(shí)候 singleTop 或者 singleTask啟動(dòng)模式經(jīng)常被使用,這樣當(dāng)前實(shí)例會被置入一個(gè)新的意圖,而不是銷毀原先的任務(wù)然后啟動(dòng)一個(gè)新的實(shí)例。</p><p> 另外你可以使用的一個(gè)方法是設(shè)置活動(dòng)的任務(wù)親和力為空字串(表示沒有親和力),然后設(shè)置finishOnB
50、ackground屬性。 如果你想讓用戶給你提供一個(gè)單獨(dú)的活動(dòng)描述的通知,倒不如返回到應(yīng)用的任務(wù)里,這個(gè)比較管用。要指定這個(gè)屬性,不管用戶使用BACK還是HOME,活動(dòng)都會結(jié)束;如果這個(gè)屬性沒有指定,按HOME鍵將會導(dǎo)致活動(dòng)以及任務(wù)還留在系統(tǒng)里,并且沒有辦法返回到該任務(wù)里。</p><p><b> 4.3進(jìn)程</b></p><p> 在Android中,進(jìn)程是
51、應(yīng)用程序的完整實(shí)現(xiàn),而不是用戶通常了解的那樣。他們主要用途很簡單:</p><p> 提高穩(wěn)定性和安全性,將不信任或者不穩(wěn)定的代碼移動(dòng)到其他進(jìn)程。</p><p> 可將多個(gè).apk包運(yùn)行在同一個(gè)進(jìn)程里減少系統(tǒng)開銷。</p><p> 幫助系統(tǒng)管理資源,將重要的代碼放在一個(gè)單獨(dú)的進(jìn)程里,這樣就可以單獨(dú)銷毀應(yīng)用程序的其他部分。</p><p&
52、gt; 像前面描述的一樣,進(jìn)程的屬性被用來控制那些有特殊應(yīng)用組件運(yùn)行的進(jìn)程。注意這個(gè)屬性不能違反系統(tǒng)安全: 如果兩個(gè).apk包不能共享同一個(gè)用戶ID,卻試圖運(yùn)行在通一個(gè)進(jìn)程里,這種情況是不被允許的,事實(shí)上系統(tǒng)將會創(chuàng)建兩個(gè)不同的進(jìn)程。</p><p><b> 4.4線程</b></p><p> 每個(gè)進(jìn)程包含一個(gè)或多個(gè)線程。多數(shù)情況下,Android 避免在進(jìn)程
53、里創(chuàng)建多余的線程,除非它創(chuàng)建它自己的線程,我們應(yīng)保持應(yīng)用程序的單線程性。 一個(gè)重要的結(jié)論就是所有呼叫實(shí)例, 廣播接收器, 以及 服務(wù)的實(shí)例都是由這個(gè)進(jìn)程里運(yùn)行的主線程創(chuàng)建的。</p><p> 注意新的線程不是為活動(dòng),廣播接收器,服務(wù)或者內(nèi)容提供器實(shí)例創(chuàng)建:這些應(yīng)用程序的組件在進(jìn)程里被實(shí)例化(除非另有說明,都在同一個(gè)進(jìn)程處理),實(shí)際上是進(jìn)程的主線程。這說明當(dāng)系統(tǒng)調(diào)用時(shí)這些組件(包括服務(wù))不需要進(jìn)程遠(yuǎn)距離或者封鎖
54、操作(就像網(wǎng)絡(luò)呼叫或者計(jì)算循環(huán)),因?yàn)檫@將阻止進(jìn)程中的所有其他組件。你可以使用標(biāo)準(zhǔn)的線程 類或者Android的HandlerThread 類去對其它線程執(zhí)行遠(yuǎn)程操作。</p><p> 這里有一些關(guān)于創(chuàng)建線程規(guī)則的例外:</p><p> 呼叫IBinder或者IBinder實(shí)現(xiàn)的接口,如果該呼叫來自其他進(jìn)程,你可以通過線程發(fā)送的IBinder或者本地進(jìn)程中的線程池呼叫它們,從進(jìn)程的
55、主線程呼叫是不可以的。特殊情況下,,呼叫一個(gè)服務(wù) 的IBinder可以這樣處理。(雖然在服務(wù)里呼叫方法在主線程里已經(jīng)完成。)這意味著IBinder接口的實(shí)現(xiàn)必須要有一種線程安全的方法,這樣任意線程才能同時(shí)訪問它。</p><p> 呼叫由正在被調(diào)用的線程或者主線程以及IBinder派發(fā)的內(nèi)容提供器 的主方法。被指定的方法在內(nèi)容提供器的類里有記錄。這意味著實(shí)現(xiàn)這些方法必須要有一種線程安全的模式,這樣任意其它線程同
56、時(shí)可以訪問它。</p><p> 呼叫視圖以及由視圖里正在運(yùn)行的線程組成的子類。通常情況下,這會被作為進(jìn)程的主線程,如果你創(chuàng)建一個(gè)線程并顯示一個(gè)窗口,那么繼承的窗口視圖將從那個(gè)線程里啟動(dòng)。</p><p> 5 android 應(yīng)用程序開發(fā)簡介</p><p> 5.1 Activity 介紹</p><p> 5.1.1
57、 activity的作用</p><p> Activity 是android程序的4大組件之一。</p><p> Activity是Android程序的表現(xiàn)層。程序的每一個(gè)顯示屏幕就是一個(gè)Activity。</p><p> Activity類的繼承關(guān)系:</p><p> Activity是Context類的子類。&l
58、t;/p><p> 5.1.2 Activity的生命周期</p><p> 手機(jī)最重要也是最基礎(chǔ)的功能是打電話,也就意味著電話來的時(shí)候可能隨時(shí)要把現(xiàn)在的程序暫停,如果電量不足的時(shí)候也可能隨時(shí)把現(xiàn)在的程序關(guān)閉;因此Android程序和電腦上的程序有所不同,具體到Activity,Activity的生命周期不是自身控制的,而是Android系統(tǒng)控制的。</p><p&g
59、t; 在Android中Activity有四種基本的狀態(tài):</p><p><b> Ø Running</b></p><p> 位于屏幕最前端時(shí),此時(shí)處于可見狀態(tài),和用戶可交互的狀態(tài)。</p><p><b> Ø Paused</b></p><p&
60、gt; 當(dāng)Activity被另一個(gè)透明的或者非全屏的Activity覆蓋時(shí)的狀態(tài)叫做Paused狀態(tài)。雖然可見但不可交互。</p><p><b> Ø Stop</b></p><p> 當(dāng)Activity被另外一個(gè)Activity覆蓋,界面不可見時(shí)處于Stop狀態(tài)。</p><p><b> Ø
61、; Killed</b></p><p> Activity被系統(tǒng)殺死或者根本沒啟動(dòng)時(shí)就處于Killed狀態(tài)。</p><p> Activity的生命周期:</p><p><b> Activity棧</b></p><p> Android通過Activity棧的方式來管理Activi
62、ty。</p><p> 正在運(yùn)行的Activity處在棧的最頂端,它是運(yùn)行狀態(tài)的。</p><p> 當(dāng)有新的Activity進(jìn)入屏幕最上端時(shí),原來的Activity就會被壓入第二層。如果他的屏幕沒有被完 全遮蓋,那么他處于Paused狀態(tài),如果他被遮蓋那么處于Stop狀態(tài)。</p><p> 不管處于任何一層,都可能在系統(tǒng)覺得資源不足時(shí)被強(qiáng)行關(guān)閉,當(dāng)然關(guān)閉
63、時(shí)棧底的程序最先被關(guān)閉。</p><p> 譬如:當(dāng)你在程序中調(diào)用 Activity.finish()方法時(shí),結(jié)果和用戶按下 BACK 鍵一樣:他告訴 Activity Manager該Activity實(shí)例可以被“回收”。隨后 Activity Manager 激活處于棧第二層的 Activity 并重 新入棧
64、,把原 Activity 壓入到棧的第二層,從 Running 狀態(tài)轉(zhuǎn)到 Paused 狀態(tài)。</p><p> 5.2 View簡介以及動(dòng)畫實(shí)現(xiàn)原理</p><p> 5.2.1 View簡介</p><p> view是android.view.View基礎(chǔ)類的對象。它是一個(gè)存儲有屏幕上特定的一
65、矩形內(nèi)布局和內(nèi)容屬性的數(shù)據(jù)結(jié)構(gòu)。Activity只提供給我們一個(gè)框架,相當(dāng)于的一畫板,他不能獨(dú)立完成屏幕的顯示。一個(gè)View對象處理測距和布局,繪圖,焦點(diǎn)變換,滾動(dòng)條,還有屏幕區(qū)域自己表現(xiàn)的按鍵和手勢。viewgroup是android.view.viewgroup類的對象。viewgroup是特殊的view對象,它的功能是去裝載和管理一組下層的view和其他viewgroup。在Android平臺上,用view樹和viewgroup節(jié)
66、點(diǎn)來定義一個(gè)Activity的UI。如同圖2一樣。這個(gè)樹可以如你需要那樣簡單或者復(fù)雜,并且你可以使用Android的預(yù)定義widget和layout或者你自定義的view類型來構(gòu)建它。</p><p> 我們可以通過繼承view,并重寫view的onDraw方法,運(yùn)用canvas(畫布)已經(jīng)paint(畫筆),通過canvas的drawRect(畫矩形)、drawBitmap(畫圖片)等方法來實(shí)現(xiàn)自定義的圖像顯
67、示。</p><p> 5.2.2 動(dòng)畫的原理以及在android平臺的實(shí)現(xiàn)方法</p><p> 所有的動(dòng)畫,包括Flash動(dòng)畫都是一個(gè)原理——快速連續(xù)播放靜止的圖片,給人眼產(chǎn)生的錯(cuò)覺就是畫面會連續(xù)動(dòng)起來。那些靜止的圖片叫幀;播放速度越快,動(dòng)畫越流暢。電影膠片的播放速度就是24幀/秒。</p><p> Android 平臺提供了兩類動(dòng)畫,一類是 Twee
68、n 動(dòng)畫,即通過對場景里的對象不斷做圖像變換(平移、縮放、旋轉(zhuǎn))產(chǎn)生動(dòng)畫效果;第二類是 Frame 動(dòng)畫,即順序播放事先做好的圖像,跟電影類似。本文分析了 Tween 動(dòng)畫的實(shí)現(xiàn)原理。</p><p> 從邏輯上講,android 系統(tǒng)動(dòng)畫實(shí)現(xiàn)需要如下幾步:</p><p> view 創(chuàng)建動(dòng)畫對象,設(shè)置動(dòng)畫屬性,調(diào)用 invalidate 刷新屏幕,啟動(dòng)動(dòng)畫; </p>
69、<p> invalidate 方法觸發(fā)了 onDraw 函數(shù); </p><p> 在 onDraw 函數(shù)中: </p><p> 調(diào)用動(dòng)畫的 getTransformation 方法,得到當(dāng)前時(shí)間點(diǎn)的矩陣 </p><p> 將該矩陣設(shè)置成 Canvas 的當(dāng)前矩陣 </p><p> 調(diào)用 canvas 的 dra
70、wBitmap 方法,繪制屏幕。 </p><p> 判斷 getTransformation 的返回值,若為真,調(diào)用 invalidate 方法,刷新屏幕進(jìn)入下一楨;若為假,說明動(dòng)畫完成。 </p><p> 所以,可以通過繼承View運(yùn)用系統(tǒng)的動(dòng)畫的原理完成自己自定義的動(dòng)畫,自定義動(dòng)畫實(shí)現(xiàn)的具體過程:</p><p><b> 開啟線程;<
71、/b></p><p> 判斷狀態(tài),若為真,則進(jìn)行3,否則就暫停線程,結(jié)束動(dòng)畫;</p><p> 則給消息隊(duì)列傳遞一個(gè)消息(不能直接調(diào)用invalidate 方法,因?yàn)椴皇侵鱑I線程,會出現(xiàn)異常)通知view調(diào)用onDraw方法刷新屏幕,暫停一段時(shí)間(一般為100ms 這樣動(dòng)畫的速度就是10幀/s),更新狀態(tài),繼續(xù)2;</p><p> 我們可以根據(jù)自
72、定義的狀態(tài)變量來知道當(dāng)前動(dòng)畫的狀態(tài),并根據(jù)動(dòng)畫的狀態(tài)進(jìn)行坐標(biāo)變換以及矩陣變換,繪制出不同的中間圖像,實(shí)現(xiàn)各種各樣的動(dòng)畫。</p><p> 6 Android 日歷應(yīng)用模塊代碼簡介</p><p> 6.1軟件的需求分析以及功能分析</p><p> 此軟件用于android智能手機(jī),智能手機(jī)同傳統(tǒng)手機(jī)外觀和操作方式類似,無論是觸屏的、全鍵盤的,或者帶攝像
73、頭、立體聲的,從外觀上并不能看出有什么不同來。智能手機(jī)的優(yōu)勢在于其功能的可擴(kuò)展性,傳統(tǒng)手機(jī)使用的是生產(chǎn)廠商自行開發(fā)的封閉式操作系統(tǒng),所能實(shí)現(xiàn)的功能非常有限。智能手機(jī)由于可以安裝第三方軟件,因此其功能可以不斷擴(kuò)展。智能手機(jī)與多功能手機(jī)相對,本身并不意味著這個(gè)手機(jī)有多“聰明”,但是程序開發(fā)者可以利用智能手機(jī)實(shí)現(xiàn)極其豐富的功能。</p><p> 我們平時(shí)用的手機(jī)的日歷軟件功能單一、界面簡單,在手機(jī)軟件日益豐富的今天
74、,功能強(qiáng)大、界面美觀、操作簡單的手機(jī)軟件越來越受到人們的喜愛。傳統(tǒng)的日歷軟件僅僅就顯示時(shí)間日期的功能,不能滿足用戶的需求。手機(jī)一般都有鬧鈴的功能,也有記錄行程等類似的功能,但是這些功能都是分布在不同軟件,不方便用戶操作,也不便于管理,所以日歷軟件可以加入這些功能,將所有功能用一個(gè)軟件來實(shí)現(xiàn),來方便用戶操作以及管理。 </p><p> 6.2 各個(gè)界面的簡介</p><p><b&
75、gt; 6.2.1主界面</b></p><p> 由ceshi.java以及noteview.java實(shí)現(xiàn),ceshi.java是一個(gè)Activity類,noteview.java是一個(gè)繼承于view的類,用來顯示界面已經(jīng)完成一些界面特效。主界面有2個(gè)界面都是由noteview.java實(shí)現(xiàn)的。</p><p> 這是一個(gè)手機(jī)模擬器的界面左邊部分顯示界面,右邊部分是一些
76、按鍵。</p><p> 這是主界面的的另外一個(gè)界面,主界面是給用戶查看自己記錄的一下消息,主界面的2個(gè)分界面可以通過滑動(dòng)和或者點(diǎn)擊按鈕來完成切換。</p><p> 6.2.2 編輯界面</p><p> 由edit1.java以及Editview.java來實(shí)現(xiàn),eidt1.javashi是一個(gè)Activity類并通過加載edit2.xml的ScrollV
77、iew來實(shí)現(xiàn)主界面,Editview.java是一個(gè)繼承于view的類,用來顯示其他部分的界面。</p><p> 還有其他一些編輯的界面就不一一截取了。該界面給用戶編輯自己要記錄并提醒自己的提醒以及時(shí)間,本軟件會根據(jù)用戶定義的時(shí)間以及響應(yīng)方式來提醒用戶。</p><p> 6.2.3 刪除消息界面</p><p> 由delete.java已經(jīng)deleteV
78、iew.java來實(shí)現(xiàn), deleteView.java繼承于View并完成界面顯示。</p><p> 刪除界面可以給用戶詳細(xì)查看自己定義的消息,并提供提供手動(dòng)刪除,以及重新編輯接口,方便用戶管理自己記錄的提醒。</p><p> 6.2.4 設(shè)置界面</p><p> 由set.java以及setView.java實(shí)現(xiàn)。</p><p&
79、gt; 主界面給用戶來設(shè)置是否開啟提醒功能,另外一個(gè)界面給用戶設(shè)置提醒顯示的顏色,是用戶能根據(jù)自己喜好選擇顯示的顏色。</p><p><b> 日歷界面</b></p><p> 由Celander.java以及cView.java實(shí)現(xiàn)。</p><p> 該界面用來給用戶查看日歷以及提醒。</p><p>&
80、lt;b> 主要功能的實(shí)現(xiàn)</b></p><p> 6.3.1 日歷部分的數(shù)據(jù)處理功能</p><p> 這部分功能主要由dateService.java來實(shí)現(xiàn),該類提供了一些函數(shù)來進(jìn)行數(shù)據(jù)處理。</p><p> 該函數(shù)用來計(jì)算輸入的時(shí)間距離1900年1月1日有多少天。</p><p> public int
81、days(int year, int mouth, int day) {</p><p> int num = 0, i;</p><p> if (year < 1900 || mouth <= 0 || day <= 0)</p><p> return -1;</p><p> for (i = 1900; i
82、 < year; i++) {</p><p> if (isyear(i) == 1) {</p><p> num += 366;</p><p><b> } else {</b></p><p> num += 365;</p><p><b> }</b&
83、gt;</p><p><b> }</b></p><p> for (i = 1; i < mouth; i++) {</p><p> if (i == 2) {</p><p> if (isyear(year) == 1) {</p><p> num += 29;<
84、;/p><p><b> } else</b></p><p> num += 28;</p><p><b> } else {</b></p><p> num += moudat[i - 1];</p><p><b> }</b></
85、p><p><b> }</b></p><p> num += day - 1;</p><p> return num;</p><p><b> }</b></p><p> 該函數(shù)把距離1900年1月1日整形的天數(shù)換算成時(shí)間</p><p&g
86、t; public int[] day_date(int num) {</p><p> int a[] = new int[3];</p><p> int tmp = num, i = 1900;</p><p> while (tmp > 365 + isyear(i)) {</p><p> tmp -= 365 +
87、isyear(i);</p><p><b> i++;</b></p><p><b> }</b></p><p><b> a[0] = i;</b></p><p> for (i = 1; i <= 12; i++) {</p><p
88、> if (tmp < mouNum(a[0], i)) {</p><p><b> break;</b></p><p><b> }</b></p><p> tmp -= mouNum(a[0], i);</p><p><b> }</b><
89、;/p><p><b> a[1] = i;</b></p><p> a[2] = tmp + 1;</p><p><b> return a;</b></p><p><b> }</b></p><p> 該函數(shù)用來比較2個(gè)數(shù)組大小<
90、/p><p> public int compare(int[] a, int[] b, int length)// 前面數(shù)組大返回1 小返回-1 相等返回0</p><p><b> {</b></p><p><b> int i;</b></p><p> for (i = 0; i &l
91、t; length; i++) {</p><p> if (a[i] > b[i])</p><p><b> return 1;</b></p><p> else if (a[i] < b[i])</p><p> return -1;</p><p><b>
92、 }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> 該函數(shù)用于每次用戶切換了月 之后更新cView類的數(shù)據(jù)</p><p> public void update() {</p><p&
93、gt; int i, j, tmp, num;</p><p> for (i = 0; i < number; i++) {</p><p> for (j = 0; j < week; j++) {</p><p> yes[i * week + j] = now[i * week + j];</p><p><
94、b> }</b></p><p><b> }</b></p><p> len_y = len_n;</p><p> for (i = 0; i < daydat.length / 2 - 1; i++) {</p><p> if (year >= daydat[i * 2]
95、 && year < daydat[i * 2 + 2]) {</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> tmp = i;<
96、/b></p><p> num = days(year, mouth, tmp);</p><p> num = (num + daydat[tmp * 2 + 1]) % 7;</p><p> // /更新日歷月份的頭部</p><p> int tmp_m, tmp_y, tmp_d, tmp_now = 0;// tm
97、p_now 標(biāo)記是否已經(jīng)找到高亮區(qū)域</p><p> Date dat = new Date();</p><p> int[] now_dat = new int[] { dat.getYear() + 1900, dat.getMonth() + 1,</p><p> dat.getDate() };</p><p> int
98、[] tmp_dat;</p><p> if (mouth == 1) {</p><p> tmp_m = 12;</p><p> tmp_y = year - 1;</p><p><b> } else {</b></p><p> tmp_m = mouth - 1;<
99、/p><p> tmp_y = year;</p><p><b> }</b></p><p> tmp_d = date.mouNum(tmp_y, tmp_m);</p><p> for (i = num - 1; i >= 0; i--) {</p><p> if (yea
100、r == 1991 && mouth == 1) {</p><p> now[i] = 0;</p><p><b> } else {</b></p><p> now[i] = tmp_d - num + 1 + i;</p><p> if (tmp_now == 0)// 沒找到高亮區(qū)域
101、</p><p><b> {</b></p><p> tmp_dat = new int[] { tmp_y, tmp_m, tmp_d - num + 1 + i };</p><p> if (date.compare(now_dat, tmp_dat, 3) == 0) {</p><p> now_i
102、 = 0;</p><p> now_j = i;</p><p> now_tmp = 0;</p><p> tmp_now = 1;</p><p><b> }</b></p><p><b> }</b></p><p><b
103、> }</b></p><p><b> }</b></p><p> // /更新日歷的中部和尾部</p><p> int tmp_2 = date.mouNum(year, mouth);</p><p> int tmp_1 = (tmp_2 + num) % 7;</p>
104、<p> if (tmp_1 == 0)</p><p> len_n = (tmp_2 + num) / 7;</p><p><b> else</b></p><p> len_n = (tmp_2 + num) / 7 + 1;</p><p> for (i = 1; i <= t
105、mp_2; i++) {</p><p> now[num - 1 + i] = i;</p><p> if (tmp_now == 0)// 沒找到高亮區(qū)域</p><p><b> {</b></p><p> tmp_dat = new int[] { year, mouth, i };</p>
106、;<p> if (date.compare(now_dat, tmp_dat, 3) == 0) {</p><p> now_i = (num - 1 + i) / week;</p><p> now_j = (num - 1 + i) % week;</p><p> now_tmp = 1;</p><p>
107、 tmp_now = 1;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> for (i = tmp_1; i < 7; i++) {</p><p>
108、now[tmp_2 + num - tmp_1 + i] = i - tmp_1 + 1;</p><p> if (tmp_now == 0)// 沒找到高亮區(qū)域</p><p><b> {</b></p><p> if (mouth == 12) {</p><p> tmp_y = year + 1;&
109、lt;/p><p> tmp_m = 1;</p><p><b> } else {</b></p><p> tmp_y = year;</p><p> tmp_m = mouth+1;</p><p><b> }</b></p><p>
110、; tmp_dat = new int[] { tmp_y, tmp_m, i - tmp_1 + 1 };</p><p> if (date.compare(now_dat, tmp_dat, 3) == 0) {</p><p> now_i = len_n - 1;</p><p> now_j = (tmp_2 + num - tmp_1 + i)
111、 % week;</p><p> now_tmp = 0;</p><p> tmp_now = 1;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>&
112、lt;p> if (tmp_now == 0)// 最后如果沒找到?jīng)]找到高亮區(qū)域</p><p><b> {</b></p><p> now_i = -1;</p><p> now_j = -1;</p><p><b> }</b></p><p>&
113、lt;b> }</b></p><p><b> 提醒的保存與讀取</b></p><p> 這部分功能主要由FileDeal.java實(shí)現(xiàn)。FileDeal繼承于FileService, FileService提供了2個(gè)方法,一個(gè)是save 用來把字符型數(shù)據(jù)通過IO流以文件方式保存,另外一個(gè)方法read,通過IO流來讀取文件,并將數(shù)據(jù)轉(zhuǎn)換成字
114、符型。</p><p> public void save(String fileName, String fileContent) throws Exception {</p><p> FileOutputStream file = this.context.openFileOutput(fileName,</p><p> Context.MODE_PR
115、IVATE);</p><p> file.write(fileContent.getBytes());</p><p> file.close();</p><p><b> }</b></p><p> public String read(String fileName) throws Exception
116、{</p><p> FileInputStream file = this.context.openFileInput(fileName);</p><p> ByteArrayOutputStream byteArray = new ByteArrayOutputStream();</p><p> byte[] buffer = new byte[102
117、4];</p><p> int len = 0;</p><p> while ((len = file.read(buffer)) > 0) {</p><p> byteArray.write(buffer, 0, len);</p><p><b> }</b></p><p&g
118、t; file.close();</p><p> return byteArray.toString();</p><p><b> }</b></p><p> FileDeal load的方法把父類的read方法讀取出來的字符型數(shù)據(jù)換算成自定義的數(shù)據(jù),而save方法則把自定義的數(shù)據(jù)變換成字符型并通過父類的save保存至文件中。&l
119、t;/p><p> public boolean save() {</p><p> String s = "";</p><p> if (length >= 0 && length <= length_file) {</p><p><b> int i, j;</b&g
120、t;</p><p> s += length + "\n";</p><p> for (i = 0; i < length; i++) {</p><p> for (j = 0; j < length_note; j++) {</p><p> s += data[i][j] + " &
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于andrid平臺opengl圖形圖像接口應(yīng)用研究【開題報(bào)告】
- 基于linuxqt圖形圖像課程設(shè)計(jì)
- 圖形圖像課程設(shè)計(jì)---圖像銳化
- 圖形圖像廣告平面設(shè)計(jì)畢業(yè)論文
- 圖形圖像廣告平面設(shè)計(jì)畢業(yè)論文
- 圖形圖像論文處理
- 圖形圖像處理圖像分割
- 基于智能可視定制平臺CVIDraw的圖形圖像Web發(fā)布的研究.pdf
- 基于二維條形碼的圖形圖像處理與應(yīng)用研究.pdf
- 圖形圖像處理技術(shù)在數(shù)控編程中的應(yīng)用研究.pdf
- 專題十五圖形圖像專題
- 圖形圖像處理matlab
- 基于圖形圖像技術(shù)的鞋類造型仿真設(shè)計(jì)的研究.pdf
- 在役管線圖形圖像處理及故障分類應(yīng)用研究.pdf
- 四元數(shù)及其在圖形圖像處理中的應(yīng)用研究.pdf
- 基于圖形圖像知識的圖案創(chuàng)作思維模擬及應(yīng)用.pdf
- 圖形圖像處理課程設(shè)計(jì)報(bào)告
- 圖形圖像界面中的圖標(biāo)設(shè)計(jì).pdf
- 激光直寫機(jī)圖形圖像軟件設(shè)計(jì)
- 單元七圖形圖像處理
評論
0/150
提交評論