




已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
設(shè)計(jì)說明書設(shè)計(jì)說明書 目 錄 引言引言 1 發(fā)展趨勢(shì) 2 Android 系統(tǒng)框架研究 3 Android 架構(gòu)分析 4 類庫 5 Android 運(yùn)行時(shí)組 7 Android 解剖分析 8 Android 程序結(jié)構(gòu)解析 9 游戲功能介游戲功能介 9 9 功能介紹 10 功能背景 10 功能簡(jiǎn)介 11 游戲策劃及準(zhǔn)備工作游戲策劃及準(zhǔn)備工作 12 12 游戲的策劃 12 Android 平臺(tái)下游戲的準(zhǔn)備工作 13 Android 平臺(tái)下游戲的框架 13 各類的簡(jiǎn)要介紹 14 系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn) 14 14 設(shè)計(jì)結(jié)構(gòu) 14 設(shè)計(jì)思想 15 總結(jié)總結(jié) 33 參考文獻(xiàn)參考文獻(xiàn) 34 基于基于 AndroidAndroid 平臺(tái)的快樂數(shù)獨(dú)平臺(tái)的快樂數(shù)獨(dú) 引引言言 目前隨著移動(dòng)設(shè)備越來越普及以及移動(dòng)設(shè)備的硬件的提升 移動(dòng)設(shè)備的功能 越來越完善 移動(dòng)設(shè)備的系統(tǒng)平臺(tái)也日漸火熱起來 目前國內(nèi)最常見的移動(dòng)開 發(fā)平臺(tái)有 Symbian iPhone Windows Phone 以及當(dāng)下正在逐步興起的 Android 目前為止國內(nèi)已經(jīng)有很多 Android 系統(tǒng)的用戶 截止 2010 年第二季 度 Android 系統(tǒng)的國內(nèi)市場(chǎng)占有率已經(jīng)過 10 在西歐以及北美智能手機(jī)市場(chǎng) 占有率也在 20 左右 可見 Android 系統(tǒng)正在崛起之中 但是對(duì)于 Android 系 統(tǒng)的應(yīng)用和開發(fā)在國內(nèi)仍然屬于起步和探索階段 急需要大量的相關(guān)技術(shù)和人 員的投入 下面首先介紹一下 Android 系統(tǒng) Android 是基于 Linux 內(nèi)核的軟件平臺(tái)和 操作系統(tǒng) 是 Google 在 2007 年 11 月 5 日公布的手機(jī)系統(tǒng)平臺(tái) 早期由 Google 開發(fā) 后由 Open Handset Alliance 開發(fā) 它采用了軟件堆層 Software stack 又名以軟件疊層 的架構(gòu) 主要分為三部分 低層以 Linux 核心工作為基礎(chǔ) 只提供基本功能 其他的應(yīng)用軟件則由各公司自行開 發(fā) 以 Java 作為編寫程式的一部分 本文對(duì)目前應(yīng)用的 Symbian WindowsMobile MacOSX 和 RIM 等平臺(tái)的現(xiàn)狀進(jìn)行了分析與比較 進(jìn) 而研究分析了 Android 平臺(tái)的系統(tǒng)架構(gòu)和組件模型 接著解析了 Android 中的 重要 API 和應(yīng)用構(gòu)成 以 Intent 和生命周期的機(jī)制 在此基礎(chǔ)上 基于 1 Android 平臺(tái)設(shè)計(jì)和開發(fā)校園資訊軟件 本系統(tǒng)界面友好 操作便捷 具有良 好的可擴(kuò)展性和可維護(hù)性 系統(tǒng)經(jīng)過測(cè)試 可以穩(wěn)定運(yùn)行 能夠滿足手機(jī)用戶的 基本需求 發(fā)展趨勢(shì)發(fā)展趨勢(shì) 隨著 3G 應(yīng)用的不斷開發(fā)推廣 用戶會(huì)越來越需要更加個(gè)性化 優(yōu)質(zhì)化的多 媒體數(shù)據(jù)服務(wù) 用戶希望能夠隨時(shí) 隨地?zé)o縫利用 3G 網(wǎng)絡(luò)進(jìn)行辦公 網(wǎng)上交易 游戲娛樂 欣賞影視節(jié)目 收聽和下載音樂等 根據(jù)觀察 在不久的將來 移 動(dòng)手機(jī)終端將會(huì)在以下若干方面具有新的發(fā)展 首先 提供智能提醒服務(wù) 手機(jī)能夠與用戶實(shí)現(xiàn)密切配合 并監(jiān)控用戶的個(gè) 性化設(shè)置 保持在本地或者云端 當(dāng)重要時(shí)間點(diǎn)或關(guān)鍵事物需要用戶注意時(shí) 手機(jī)會(huì)向用戶發(fā)出 提醒 服務(wù) 服務(wù)包括日程提醒 交通狀況 最佳行車路 線 最佳泊位 優(yōu)惠活動(dòng) 實(shí)時(shí)新聞 體育賽事 天氣情況 股市行情 好友 活動(dòng) 親友生日等 其次 提供虛擬現(xiàn)實(shí)體驗(yàn) 手機(jī)可以借助傳感器 周邊設(shè)備了解到您的身邊 環(huán)境 并根據(jù)收集到的信息 智能的為您提供有用的信息 如在網(wǎng)絡(luò)世界養(yǎng)的 寵物 可以借助音頻設(shè)備表達(dá)叫聲 借助馬達(dá)和位置傳感器等傳遞其跳 躍等 行為信息 也可以在用戶購物時(shí) 提供相關(guān)的同類產(chǎn)品價(jià)格參考 提醒用戶附 近的那個(gè)賣場(chǎng)更物美價(jià)廉 根據(jù)實(shí)際場(chǎng)景 為用戶及時(shí)提供正在操控的產(chǎn)品的 使用方法提醒 接著 發(fā)揮物聯(lián)網(wǎng)的優(yōu)勢(shì) 借助無處不在的傳感器 可以感知并分享到周圍 世界的海量信息 這些信息將在 云端 得到整合 幫助用戶及時(shí) 準(zhǔn)確的獲 得氣息信息 交通路況 另外借助物聯(lián)網(wǎng) 用戶間可以方便 快速的分享資源 協(xié)助和交互 如進(jìn)行端到端的多人游戲 照片分享 書籍分享 音樂分享等 然后 作為經(jīng)濟(jì)工具 在交通或者信息不發(fā)達(dá)的情況下 幫助用戶找到最佳 的市場(chǎng) 獲得有價(jià)值的幫助信息 幫助用戶從事的經(jīng)濟(jì)活動(dòng)的收益率 最后 更加智能 安全的設(shè)備 隨著智能手機(jī)的不斷普及和更加智能 手機(jī) 軟件的更新 升級(jí)將會(huì)變得越發(fā)簡(jiǎn)單 并會(huì)為用戶提供工具或信息 讓用戶有 能力和權(quán)力決策那些內(nèi)容可以瀏覽 下載或分享 在安全性上也將更加出色 能夠十分有效的幫助用戶進(jìn)行獲取到的內(nèi)容的管理 保護(hù)用戶的個(gè)人隱私和基 2 于手機(jī)的金融活動(dòng)如電子錢包 在線支付 在線貿(mào)易等 Android 系統(tǒng)架構(gòu)研究系統(tǒng)架構(gòu)研究 Android 是一個(gè)包含操作系統(tǒng) 中介架構(gòu)層及應(yīng)用程序所產(chǎn)生出來的軟件堆 棧架構(gòu) 由下而上 其核心為嵌入式 Linux2 6 作業(yè)系統(tǒng) 向上搭配 Google 為 Android 開發(fā)的類庫及 Android 運(yùn)行時(shí) 再配合應(yīng)用程序架構(gòu) 來開發(fā)各種不 同的應(yīng)用程序 Android 的功能特征 l 應(yīng)用程序架構(gòu) 在應(yīng)用程序架構(gòu)內(nèi)已經(jīng)具備多種不同的基礎(chǔ)組件 在開發(fā)應(yīng) 用程序時(shí) 就可以直接調(diào)用這些組件來使用 可以節(jié)省開發(fā)應(yīng)用程序的心力及 時(shí)間 2 Dalvik 虛擬機(jī)器 在 Android 平臺(tái)上所使用 Java 虛擬機(jī) 不是 Sim 公司的 標(biāo)準(zhǔn) Java 虛擬機(jī) 而是使用 Google 自主開發(fā)的代號(hào)為 Dalvik 的虛擬機(jī) 它在 保證 API 方面的兼容的同時(shí) 針對(duì)移動(dòng)手機(jī)進(jìn)行了大幅優(yōu)化 占用資源更小 運(yùn)行效率更高 3 集成的瀏覽器 集成的瀏覽器是 Android 內(nèi)建的瀏覽器 是以 WebKit 的瀏覽 引擎為基礎(chǔ)所開發(fā)成的 WedKit 是一個(gè)開源瀏覽器網(wǎng)頁排版引擎 目前使用 WebKit 引擎的瀏覽器主要有 Safari Midori Epiphany 等 配合 Android 手 機(jī)的功能 可以在瀏覽網(wǎng)頁時(shí) 達(dá)到更好的效果 例如 局部性的縮放網(wǎng)頁上的 資訊 觸控式的操作等效果 4 優(yōu)化的繪圖能力 在程序里可以用到的繪圖功能分為 2D 與 3D 兩個(gè)方面 在 2D 方面 Android 提供了一套特有的類庫 SGL 而在 3D 方面則是使用 OpenGLES1 0 openGL for Embedded systems 規(guī)范的類庫 它們是一種非常快 的圖形引擎 并且支持硬件加速 5 SQLite 數(shù)據(jù)庫 SQLite 提供結(jié)構(gòu)化的數(shù)據(jù)存取 SQLite 是一款輕型的數(shù)據(jù) 庫 它的設(shè)計(jì)目標(biāo)是嵌入式的 目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它 它占 用的資源非常低 它能夠支持 Windows Linux U nix 等主流的操作系統(tǒng) 同時(shí) 能夠跟很多程序語言相結(jié)合 比如 php Java 等 還有 ODBC 接口 同樣比起 Mysql PostgreSQL 來講 它的處理速度比它們都快 它無需安裝和管理配置 它是一個(gè)儲(chǔ)存在單一磁盤文件中的完整數(shù)據(jù)庫 體積小只有 250KB 但支持?jǐn)?shù)據(jù) 3 庫大小至 2TB 它雖然很小巧 但是支持的 SQL 語句毫不遜色于其它開源數(shù)據(jù) 庫 同時(shí)它還支持事務(wù)功能和并發(fā)處理等等 SQLite 也是一套開放性的關(guān)聯(lián)式 資料庫 其特點(diǎn)在于輕量性方面的設(shè)計(jì)結(jié)構(gòu) 更適合在手機(jī)上使用 6 多媒體的支持能力 主要用于播放媒體文件 這同時(shí)包括對(duì)音頻 如播放 MP3 或其他音樂文件等 和視頻 如播放從網(wǎng)上下載的視頻 的支持 并支持 播放 URI 地址 Note URI 即是統(tǒng)一資源識(shí)別地址 模式 在網(wǎng)絡(luò)上直接播放的流媒 體 另外支持各種通用的靜態(tài)圖像格式 例如 JPG PNG GIF 等格式 7 GSM 技術(shù) Global System for Mobile Communications 即全球移動(dòng)通訊系 統(tǒng) 俗稱 全球通 是一種起源于歐洲的移動(dòng)通信技術(shù)標(biāo)準(zhǔn) 是第二代移動(dòng)通 信技術(shù) 其開發(fā)目的是讓全球各地可以共同使用一個(gè)移動(dòng)電話網(wǎng)絡(luò)標(biāo)準(zhǔn) 讓用 戶使用一部手機(jī)就能行遍全球 GSM 技術(shù)是屬于手機(jī)硬件方面的展現(xiàn) 也是在 開發(fā) Android 應(yīng)用程序時(shí)可以突出的特點(diǎn)之一 8 藍(lán)牙 EDGE 3G 及 Wi Fi 藍(lán)牙是一種新型 開放 低成本 短距離的無線 連接技術(shù) 可取代短距離的電纜 實(shí)現(xiàn)話音和數(shù)據(jù)的無線傳輸 EDGE Enhanced Data Rate for GSM Evolution 即增強(qiáng)型數(shù)據(jù)速率 GSM 演進(jìn)技術(shù) EDGE 是 一種從 GSM 到 3G 的過渡技術(shù) 它主要是在 GSM 系統(tǒng)中采用了一種新的調(diào)制方法 即最先進(jìn)的多時(shí)隙操作和 SPSK 調(diào)制技術(shù) 由于 8PSK 可將現(xiàn)有 GSM 網(wǎng)絡(luò)采用的 GMSK 調(diào)制技術(shù)的信號(hào)空間從 2 擴(kuò)展到 8 從而使每個(gè)符號(hào)所包含的信息是原來 的 4 倍 Wi Fi WirelessFidelity 即無線保真技術(shù) 與藍(lán)牙技術(shù)一樣 同屬 于在辦公室和家庭中使用的短距離無線技術(shù) 該技術(shù)使用的是 2 4GHz 附近的頻 段 該頻段目前尚屬?zèng)]用許可的無線頻段 其目前可使用的標(biāo)準(zhǔn)有兩個(gè) 分別 是 IEEE802 lla 和 IEEE802 11b 這些通訊能力也是屬于手機(jī)硬件方面的展現(xiàn) 也是在開發(fā) Android 應(yīng)用程序時(shí)可以突出的特點(diǎn)之一 9 GPS Global Positioning System 即全球定位系統(tǒng) 它是一個(gè)由覆蓋全球 的 24 顆衛(wèi)星組成的衛(wèi)星系統(tǒng) 這個(gè)系統(tǒng)可以保證在任意時(shí)刻和任何地點(diǎn)都可以 同時(shí)觀測(cè)到 4 顆衛(wèi)星 以保證衛(wèi)星可以采集到該觀測(cè)點(diǎn)的經(jīng)緯度和高度 以便 實(shí)現(xiàn)導(dǎo)航 定位 授時(shí)等功能 這項(xiàng)技術(shù)可以用來引導(dǎo)飛機(jī) 船舶 車輛以及 個(gè)人 這個(gè)同樣也是屬于手機(jī)硬體方面的體現(xiàn) 也是在開發(fā) Android 應(yīng)用程序 是可以突出的特點(diǎn)之一 4 AndroidAndroid 架構(gòu)分析架構(gòu)分析 在 Android SDK 中 定義了讓開發(fā)者使用與核心應(yīng)用程序相同 API 的權(quán)限 應(yīng)用程序框架是為了要簡(jiǎn)化組件的重新利用而設(shè)計(jì)的 應(yīng)用程序可以發(fā)布功能 為其它應(yīng)用程序所使用 但是 這要受限于應(yīng)用程序架構(gòu)的安全機(jī)制 使用者 以用同樣的機(jī)制來新增 置換組件 目前所有的應(yīng)用程序是由服務(wù)及系統(tǒng)來組 成 包含有 l 一套強(qiáng)大和可擴(kuò)展的視圖系統(tǒng) 用來建構(gòu)一個(gè)應(yīng)用程序的基本組件 包了在 開發(fā)系統(tǒng)畫面時(shí) 常用的列表 網(wǎng)格 文本框 按鈕等控制項(xiàng) 甚至是內(nèi)嵌的 Web 瀏覽器 2 內(nèi)容提供者 使應(yīng)用程序可以訪問另一個(gè)應(yīng)用程序的數(shù)據(jù) 如聯(lián)系人數(shù)庫 或者共享它們自己的數(shù)據(jù) 3 資源管理器 提供各種非程序代碼的資源讓應(yīng)用程序去使用 例如 本字符串 圖形文件或排版相關(guān)的布局文件 4 通知管理器 提供應(yīng)用程序在狀態(tài)欄中顯示應(yīng)用程序自定義的提示信息 5 活動(dòng)管理器 管理所有應(yīng)用程序的生命周期及提供常用的導(dǎo)航回退功能 例 如 啟動(dòng)應(yīng)用程序要用到的資源準(zhǔn)備及關(guān)閉應(yīng)用程序時(shí)釋放內(nèi)存及相關(guān)資源等工 作 6 視窗管理器 用來管理所有啟動(dòng)程序的視窗 7 位置管理器 用來管理地圖服務(wù)的相關(guān)功能 5 8 電話管理器 用來管理用戶撥打與接聽電話的相關(guān)功能 9 包管理器 管理所有安裝在 Android 系統(tǒng)內(nèi)的包 類庫類庫 在 Android 中包含一些 C C 的類庫 這些類庫能被 Android 系統(tǒng)中不同的 組件來使用 開發(fā)者可以通過應(yīng)用程序框架使用這些功能 部分核心類庫列表 如下 1 surface Manager 主要的功能是讓開發(fā)者可以去存取 顯示系統(tǒng)及管理的功 能 在 顯示 與 存取操作 間的對(duì)應(yīng) 互動(dòng)以及實(shí)現(xiàn)無接縫的 2D 3D 多應(yīng)用程 序之間的整合 例如 在 2D 2D 顯示上的合成 疊合動(dòng)作 2 3Dlibraries 主要是依 openGLES1 0 規(guī)范所定義的 3D 繪圖引擎 該庫使用 硬件加速 當(dāng)硬件可用時(shí) 可以將硬件的 3D 功能做最佳化的處理顯示 3 SGL 主要是處理有關(guān)顯示 2D 方面的繪圖引擎 4 Media Frame work 主要是以 packetVideo 公司的 OpenCORE 為基礎(chǔ)所發(fā)展的 多媒體類庫 該庫支持回放和錄制大量流行的音視頻格式和靜態(tài)圖片 例如 MPEG4 H 264 MP3 AAC AMR JPG PNG GIF 等格式 5 Free Type 主要是用來顯示點(diǎn)陣圖和處理向量字形的 6 SSL secureSocketsuyer 中文名為 安全套接層協(xié)議層 它是網(wǎng)景公司 提出的基于 WEB 應(yīng)用的安全協(xié)議 當(dāng)前版本為 3 0 SSL 協(xié)議指定了一種在應(yīng)用 程序協(xié)議 如 HTTP Telenet NMTP 和 FTP 等 和 TCP IP 協(xié)議之間提供數(shù)據(jù)安全 性分層的機(jī)制 它為 TCP IP 連接提供數(shù)據(jù)加密 服務(wù)器認(rèn)證 消息完整性以及 可選的客戶機(jī)認(rèn)證 它已被廣泛地用于 Web 瀏覽器與服務(wù)器之間的身份認(rèn)證和 加密數(shù)據(jù)傳輸 SSL 協(xié)議位于 TCP 膽協(xié)議與各種應(yīng)用層協(xié)議之間 為數(shù)據(jù)通訊 提供安全支持 SSL 協(xié)議可分為兩層 SSL 記錄協(xié)議 SSL Record Proto col 它 建立在可靠的傳輸協(xié)議 如 TCP 之上 為高層協(xié)議提供數(shù)據(jù)封裝 壓縮 加密 等基本功能的支持 SSL 握手協(xié)議 SSL Hand shake proto col 它建立在 SSL 記錄協(xié)議之上 用于在實(shí)際的數(shù)據(jù)傳輸開始前 通訊雙方進(jìn)行身份認(rèn)證 協(xié)商 加密算法 交換加密密鑰等 SSL 協(xié)議提供的服務(wù)主要有 認(rèn)證用戶和服務(wù)器 確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器 加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取 維護(hù)數(shù)據(jù)的完整性 確保數(shù)據(jù)在傳輸過程中不被改變 6 7 SQLite SQLite 是一套開放性的關(guān)聯(lián)式資料庫 能夠被所有應(yīng)用程序使用的 輕量級(jí)的關(guān)系數(shù)據(jù)庫引擎 8 web Kit 是一個(gè)先進(jìn)的網(wǎng)頁瀏覽器引擎 被用來構(gòu)建 Android 瀏覽器和內(nèi)嵌 的 web 視圖 也可以讓開發(fā)者利用這個(gè)引擎來做不同的應(yīng)用 9 lib c 就是一個(gè) BSD 標(biāo)準(zhǔn) C 類庫 但是 針對(duì) Linux 嵌入式裝置進(jìn)行過最佳 化的調(diào)整 AndroidAndroid 運(yùn)行時(shí)組件運(yùn)行時(shí)組件 雖然 Android 是用 Java 語言來開發(fā) 撰寫應(yīng)用程序 但卻不使用 Java 運(yùn)行時(shí) 組件來執(zhí)行 Java 程序 而是使用了由 Google 自行研發(fā)的 Android 運(yùn)行時(shí)組件 來執(zhí)行程序 Android 運(yùn)行時(shí)組件包括兩個(gè)重要的部分 一個(gè)是核心類庫 另 一個(gè)是 Dalvik 虛擬機(jī) 2 3 Android 應(yīng)用的構(gòu)成和工作機(jī)制 對(duì)于一個(gè) Android 應(yīng)用程序來說 是由 Activity IntentReceiver Service Content Provider 四部分組成 但并 不是每一個(gè) Android 應(yīng)用程序都必須由這四部分組成 在應(yīng)用程序中使用時(shí) 需要在配置文件 AndroidManifest xml 中進(jìn)行配置 這個(gè)配置文件是每個(gè) Android 應(yīng)用程序所必需的 用于定義應(yīng)用程序的組件 組件的功能以及必要 條件等 Android 應(yīng)用的構(gòu)成和工作流程如圖 2 2 圖 2 2 Android 的構(gòu)成和工作流程 AndroidAndroid 應(yīng)用程序結(jié)構(gòu)剖析應(yīng)用程序結(jié)構(gòu)剖析 7 AndroidAndroid 的的 APIAPI Android API 主要包含了以下幾個(gè)部分 1 AndroidManifest xml AndroidManifest xml 是系統(tǒng)的控制文件 它告訴系統(tǒng)如何處理所創(chuàng)建的所有 應(yīng)用組件 尤其是活動(dòng) Activity 服務(wù) Service 意圖接收器 Intent Receiver 和內(nèi)容提供者 Content Provider 舉例來說 控制文件就是把活 動(dòng)和要接收的意圖 Intents 連接在一起的 膠水 2 活動(dòng) 活動(dòng)就是一個(gè)有生命周期的對(duì)象 一個(gè)活動(dòng)就是完成某些工作的代碼塊 這 部分工作還可能包括對(duì)用戶 UI 界面的顯示 不過這不是必須的 有些活動(dòng)從不 顯示 UI 界面 3 視圖 視圖可以將其自身繪制到屏幕上 Android 的用戶界面由一系列的視圖樹構(gòu) 成 接口都是由一組以樹的形式出現(xiàn)的視圖組成的 開發(fā)者可以通過創(chuàng)建一個(gè) 新的視圖的方法來使用自定義的圖形處理技術(shù) 比如開發(fā)游戲 或者是使用了不 常用的用戶圖形窗口界面 4 意圖 意圖是一個(gè)簡(jiǎn)單的消息對(duì)象 它表示程序想做某事的 意圖 比如應(yīng)用程序 想要顯示一個(gè)網(wǎng)頁 那么它可以通過創(chuàng)建一個(gè) Intent 實(shí)例并將其傳遞給系統(tǒng)來 表示意圖瀏覽這個(gè) URI 系統(tǒng)將定位到能處理這一 Intent 的代碼 在當(dāng)前情況 下就是瀏覽器 并運(yùn)行之 意圖也可以用于廣播系統(tǒng)范圍內(nèi)的有效事件 例如 通知事件 5 服務(wù) 服務(wù)是運(yùn)行在后臺(tái)的一段代碼 它可以運(yùn)行在它自己的進(jìn)程 也可以運(yùn)行在 其他應(yīng)用程序的進(jìn)程里 這取決于自身的需要 其它的組件可以綁定到一個(gè)服 務(wù)上來 通過遠(yuǎn)程過程調(diào)用 RPC 來調(diào)用這個(gè)方法 例如媒體播放器的服務(wù) 當(dāng) 用戶退出媒體選擇的界面時(shí) 仍然希望音樂依然可以繼續(xù)播放 這時(shí)就可用服 務(wù)來保證當(dāng)用戶界面關(guān)閉時(shí)音樂還繼續(xù)播放著 6 通知 8 通知將以小圖標(biāo)的形式呈現(xiàn)在狀態(tài)欄里 用戶通過與圖標(biāo)的交互來接收消息 最常見的通知包括短信息 通話記錄和語音郵件 但是應(yīng)用程序也可以創(chuàng)建它 們自己的通知事件 7 內(nèi)容提供者 內(nèi)容提供者是用來提供對(duì)設(shè)備上數(shù)據(jù)進(jìn)行訪問 典型的例子就是使用內(nèi)容提 供者來訪問聯(lián)系人列表 應(yīng)用程序也可以使用其它程序通過內(nèi)容提供者提供的 數(shù)據(jù) 同時(shí)也可以定義自己的內(nèi)容提供者來向其它應(yīng)用提供數(shù)據(jù)訪問服務(wù) AndroidAndroid 應(yīng)用程序結(jié)構(gòu)解析應(yīng)用程序結(jié)構(gòu)解析 通常由以下四個(gè)組件來構(gòu)建一個(gè)完整的 Android 應(yīng)用程序 活動(dòng) 意圖接收器 服務(wù) 內(nèi)容提供者 然而 并不是所有的 Android 應(yīng)用程序都必須具備上面的四個(gè)組件 可以由 上面的一個(gè)或幾個(gè)來組建 當(dāng)決定使用以上哪些組件來構(gòu)建 Android 應(yīng)用程序 時(shí) 需要將它們注冊(cè)在 AndroidManifest xml 文件中 這是一個(gè) XML 配置文件 在這個(gè)文件中可以聲明應(yīng)用程序組件以及它們的特性和要求 這個(gè)配置文件是 每個(gè) Android 應(yīng)用程序所必需的 活動(dòng)活動(dòng) 活動(dòng)是以上四個(gè)組件中最常用的一個(gè) 每個(gè)活動(dòng)都是 Activity 的子類 并實(shí) 現(xiàn)了一些獨(dú)有的功能 如管理 UI 顯示和 UI 的反饋事件 一個(gè)活動(dòng)就相當(dāng)于應(yīng) 用程序的一個(gè)用戶界面 由事件響應(yīng)以及視圖等組成 大多數(shù)的應(yīng)用程序通常 包括多個(gè)界面 例如 一個(gè)文本聊天應(yīng)用程序 至少應(yīng)該包含一個(gè)聯(lián)系人列表界 面 一個(gè)聊天界面 一個(gè)設(shè)置界面 一個(gè)聊天記錄查詢界面等等 每個(gè)界面其 實(shí)都可看作是一個(gè)活動(dòng) 顯示一個(gè)新界面就相當(dāng)于生成一個(gè)對(duì)應(yīng)的活動(dòng)對(duì)象 在一些情況下 活動(dòng)能夠返回給它的上級(jí)界面一個(gè)返回值 例如一個(gè)提供給用 戶選擇照片的活動(dòng)可以返回給它的調(diào)用者用戶選擇了哪個(gè)照片文件 當(dāng)一個(gè)新的活動(dòng)出現(xiàn)時(shí) 前一個(gè)活動(dòng)被中斷并被放入到一個(gè)歷史堆棧中 用 戶可以使用返回鍵使前一個(gè)活動(dòng)重現(xiàn) 當(dāng)一個(gè)活動(dòng)不再需要時(shí) 可以將它們從 9 歷史堆棧中移除 默認(rèn)情況下 Android 會(huì)為每個(gè)應(yīng)用程序保留從主界面開始 的歷史堆棧 Android 通過一個(gè)被稱作意圖的特殊類 來實(shí)現(xiàn)界面與界面之間的跳轉(zhuǎn) 一 個(gè)意圖描述了一個(gè)應(yīng)用程序想要做什么 在意圖的描述結(jié)構(gòu)中 含有兩個(gè)重要 的數(shù)據(jù)結(jié)構(gòu) 動(dòng)作和動(dòng)作對(duì)應(yīng)的數(shù)據(jù) 典型的動(dòng)作類型包括 MAIN VIEW PICK EDIT 等等 而動(dòng)作對(duì)應(yīng)的數(shù)據(jù)則以 URI 的形式表示 例如 顯 示一個(gè)聯(lián)系人信息的界面 可以創(chuàng)建一個(gè)意圖 并將它的動(dòng)作設(shè)置成 VIEW 數(shù) 據(jù)設(shè)置成表示這個(gè)人信息的 URI 除此之外 還有一個(gè)被稱作意圖過濾器 IntentFiher 的相關(guān)類 當(dāng)發(fā)生一個(gè) 有效的目的請(qǐng)求時(shí) 意圖過濾器用來描述一個(gè)活動(dòng)能夠處理什么意圖 如上例 中所描述 想要正常顯示一個(gè)聯(lián)系人信息的界面 必須聲明一個(gè)意圖過濾器 它說明當(dāng)有聯(lián)系人數(shù)據(jù)要被在界面上顯示時(shí) 知道如何處理它們 通常意圖過 濾器要被注冊(cè)在 AndroidManifest xml 文件中 從一個(gè)界面跳轉(zhuǎn)到另一個(gè)界面 是由解析各種意圖實(shí)現(xiàn)的 例如 一個(gè)活動(dòng)使用 startActivity myIntent 來調(diào) 用其他活動(dòng)時(shí) 系統(tǒng)會(huì)查找所有已經(jīng)安裝的應(yīng)用程序的意圖過濾器 并從中挑 選出能夠匹配 myIntent 意圖的活動(dòng) 隨后 這個(gè)新的活動(dòng)接收到意圖 myIntent 的通知并開始運(yùn)行 當(dāng) startActivity 方法被調(diào)用 解析意圖的處 理過程隨之發(fā)生 這個(gè)機(jī)制有以下兩個(gè)突出的優(yōu)點(diǎn) 活動(dòng)可以通過一個(gè)以意圖形式產(chǎn)生的請(qǐng)求來重用其他組件的功能 活動(dòng)可以在任何時(shí)候被一個(gè)具有等價(jià)意圖過濾器的新活動(dòng)所替代 意圖接收器意圖接收器 當(dāng)想要編寫代碼來對(duì)外部事件做一些處理時(shí) 可以使用意圖接收器 意圖接 收器并不顯示 UI 界面 它是通過 NotificationManager 來通知用戶他們感興趣 的事件發(fā)生了 意圖接收器同樣可以被注冊(cè)在 AndroidManifest xml 文件中 同時(shí)也可以在代碼中使用 Context registerReceiver 來注冊(cè)自己的意圖接收 器 當(dāng)一個(gè)意圖接收器被觸發(fā)時(shí) 系統(tǒng)會(huì)根據(jù)需要來啟動(dòng)應(yīng)用程序 服務(wù)服務(wù) 服務(wù)是具有長生命周期并且沒有用戶界面的代碼 內(nèi)容提供者內(nèi)容提供者 10 在 Android 中 每個(gè)應(yīng)用程序都是有自己的 userID 及在自己的進(jìn)程中執(zhí)行 這 樣做的好處是 可以保護(hù)系統(tǒng)及應(yīng)用程序 避免被其他不正常的應(yīng)用程序所影 響 可以把每個(gè)進(jìn)程想像成是一個(gè)黑盒子 彼此不會(huì)互相影響 連內(nèi)存的資料 都無法共享 如果應(yīng)用程序之間想要共享數(shù)據(jù) 就需要使用用內(nèi)容提供者 一 個(gè)內(nèi)容提供者就是一個(gè)類 它實(shí)現(xiàn)了一個(gè)標(biāo)準(zhǔn)的方法集合 其他的應(yīng)用程序可 以使用這些方法來保存和檢索此內(nèi)容提供者處理過的數(shù)據(jù) 游戲功能背景介紹游戲功能背景介紹 功能介紹 功能介紹 益智類游戲是一種比較流行的游戲 其畫面大都比較簡(jiǎn)單 很少有 很復(fù)雜的游戲特效 但是通常用到人工智能的算法來控制游戲的難度 本次游 戲設(shè)計(jì)通過講解捉貓貓游戲在 Android 平臺(tái)上的設(shè)計(jì)與實(shí)現(xiàn) 本次游戲的思想 來源于天貓上的 捉貓貓 活動(dòng) 隨著 3G 移動(dòng)網(wǎng)絡(luò)應(yīng)用的推廣 手機(jī)游戲的規(guī)模 復(fù)雜程度日益增強(qiáng) 其 技術(shù)手段 設(shè)計(jì)思想 系統(tǒng)體系結(jié)構(gòu)都發(fā)生了深刻的變化 手機(jī)操作系統(tǒng)正朝 著高處理能力 多功能 智能化的方向發(fā)展 近年來 網(wǎng)絡(luò)文化市場(chǎng)發(fā)展很快 隨著互聯(lián)網(wǎng)的迅速普及 寬帶的接入社區(qū)和家庭 我國網(wǎng)絡(luò)游戲市場(chǎng)發(fā)展迅速 并進(jìn)入了一個(gè)高速增長期 并已經(jīng)創(chuàng)造了較大的產(chǎn)值 帶動(dòng)了相關(guān)產(chǎn)業(yè)的發(fā)展 功能簡(jiǎn)介功能簡(jiǎn)介 捉貓貓游戲的規(guī)則很簡(jiǎn)單 只需要在手機(jī)屏幕上出現(xiàn)小貓時(shí) 點(diǎn)中相應(yīng)的 貓得到相應(yīng)的分?jǐn)?shù)即可 該游戲運(yùn)行步驟如下 1 啟動(dòng)游戲后首先進(jìn)入的便是游戲主界面 在主界面中有 關(guān)于游戲 游戲幫 助 開始游戲 退出游戲 四個(gè)欄目 2 在主界面單擊 關(guān)于游戲 才當(dāng)可進(jìn)入 關(guān)于 界面 在 關(guān)于 界面中介紹 了游戲的開發(fā)平臺(tái) 開發(fā)日期等資料 3 在菜單界面單擊 游戲幫助 菜單可進(jìn)入 幫助 界面 在 幫助 界面中 介紹了游戲的基本規(guī)則 4 在主界面單擊 開始游戲 菜單可進(jìn)入游戲界面 5 在游戲過程中有 暫停 繼續(xù) 離開 三個(gè)功能按鈕 單擊相應(yīng)的按鈕進(jìn)入 11 相應(yīng)的功能狀態(tài) 其中 離開 是指離開進(jìn)入主界面 6 當(dāng)玩家進(jìn)入游戲后 屏幕會(huì)出現(xiàn)不同的小貓 不同的小貓對(duì)應(yīng)不同的分?jǐn)?shù) 點(diǎn)中后也會(huì)得到不同的分?jǐn)?shù) 游戲設(shè)有不同的關(guān)卡 每一關(guān)卡設(shè)置時(shí)間為 1 分 鐘 而每一關(guān)需要相應(yīng)的分?jǐn)?shù)才能通關(guān) 通關(guān)后進(jìn)入下一關(guān) 在進(jìn)入下一關(guān)之 前有三秒鐘的提示 關(guān)卡等級(jí)越高 難度越大 12 在主界面單擊退出游戲便可退出游戲 游戲策劃及準(zhǔn)備工作游戲策劃及準(zhǔn)備工作 游戲的策劃 游戲的策劃 人類如果經(jīng)常動(dòng)用大腦 便可讓自身的邏輯和抽象思維能力 得到增長 因此 玩數(shù)獨(dú)游戲就是一個(gè)增長智慧的好辦法 通過數(shù)獨(dú)題米的解 答 可以讓頭腦變得更聰明 用戶可以吧她作為鍛煉邏輯思維及策略綠的工具 在手機(jī)上的實(shí)現(xiàn)便可以時(shí)時(shí)刻刻的開發(fā)思維 鍛煉頭腦 數(shù)獨(dú)的推理性強(qiáng) 一些數(shù)學(xué)的思想 推理 假設(shè) 反正等都會(huì)用到 每個(gè) 提米各不相同 不可能用一種方法解決所有問題 這也是數(shù)獨(dú)的魅力所在 開發(fā)這個(gè)游戲的目的是為讀者在 Android 平臺(tái)上進(jìn)行游戲開發(fā)提供一個(gè)指 導(dǎo)方案 二不是聲場(chǎng)商業(yè)化的游戲 讀者可以以此為范例開發(fā)出更好 更具玩 性的數(shù)獨(dú)游戲 AndroidAndroid 平臺(tái)下游戲的準(zhǔn)備工作平臺(tái)下游戲的準(zhǔn)備工作 游戲的準(zhǔn)備工作通常根據(jù)游戲的策劃來制作游戲所有的圖片 聲音等 因 為本游戲并沒有添加音效設(shè)置 所以只需要搜集或制作游戲過程中所有得到的 圖片資源即可 本游戲用到的圖片文件資源 游戲的架構(gòu)游戲的架構(gòu) 在正式開放代碼之前 首先需要對(duì)該游戲的設(shè)計(jì)框架進(jìn)行簡(jiǎn)要介紹 以幫 助讀者更好的理解游戲的開放過程 希望讀者能夠仔細(xì)閱讀本節(jié)的內(nèi)容 在整 體上了解本游戲 這會(huì)為之后的開發(fā)帶來事半功倍的效果 接下來將通過游戲的運(yùn)行過程介紹各類在游戲中的作用 具體運(yùn)行的步驟 如下 1 啟動(dòng)游戲后 首先在 KLSDActivity 中初始化 ZhuView 然后將用戶界面切換 到主動(dòng)畫 ZhuView 12 2 而在 ZhuView 中會(huì)啟動(dòng) ZhuViewDrawThread 與 ZhuGoThread 來刷新界面和生 成主動(dòng)畫 3 當(dāng)玩家單擊 幫助 菜單式 會(huì)創(chuàng)建 HelpView 是顯示 幫助 界面 4 當(dāng)玩家單擊 關(guān)于 菜單式 會(huì)創(chuàng)建 AboutView 顯示 關(guān)于 界面 5 黨單擊 開始游戲 時(shí)則正式進(jìn)入游戲界面 GamneView 同時(shí)啟動(dòng) GameViewDrawThread 來刷新界面 各類的簡(jiǎn)要介紹各類的簡(jiǎn)要介紹 為了讓讀者更好的理解后面的代碼 下面將對(duì)游戲的各個(gè)累逐一進(jìn)行簡(jiǎn)要 說明 關(guān)于這些類的詳細(xì)代碼將在后面的章節(jié)中相繼給出 為了讓讀者更好地理解后面的代碼 下面將對(duì)游戲中的各個(gè)類逐一 簡(jiǎn)要說 明 關(guān)于這些累的詳細(xì)代碼將在后面的章節(jié)中相繼給出 共有類共有類 SudukuActivity 類 該類是通過集成和擴(kuò)展類 Activity 來實(shí)現(xiàn)的 是整個(gè)應(yīng)用程序的入口 主要是 根據(jù)收到的 Handler 消息的不同切換到不同的界面 歡迎界面相關(guān)類歡迎界面相關(guān)類 該類為歡迎界面的實(shí)現(xiàn)類 主要負(fù)責(zé)歡迎動(dòng)畫界面的繪制 是歡迎界面的前臺(tái) 顯示的實(shí)戰(zhàn) Android 變成 手把手教你作出商用軟件 View 根據(jù)后臺(tái)數(shù)據(jù)的不同繪制不同效果的動(dòng)畫 1 WelcomeViewDrawThread 類 該類為歡迎動(dòng)畫界面的服務(wù)線程 主要負(fù)責(zé)歡迎動(dòng)畫的生成 通過改變表示當(dāng) 前幀的索引值達(dá)到動(dòng)畫的效果 2 關(guān)于界面 AboutView 類 該類是游戲幫助界面的實(shí)現(xiàn)類 主要負(fù)責(zé)游戲幫助界面的繪制 游戲界面相關(guān)類游戲界面相關(guān)類 GameView 類 GameView 類是游戲中最主要的一個(gè)類 游戲規(guī)則 游戲模型都包含在此類當(dāng)中 同時(shí)該類還負(fù)責(zé)繪制游戲的畫面 接收玩家的響應(yīng) 1 GameViewDrawthread 類 13 GameViewDrawthread 類負(fù)責(zé)定時(shí)的刷幀操作 2 刷新時(shí)間縣城 TimeThread 類 該線程的實(shí)現(xiàn)非常簡(jiǎn)單 只是定時(shí)改變游戲模型中的實(shí)間值 并不負(fù)責(zé)其他 事件的處理 3 數(shù)字鍵盤渲染線程 DrawKeythread 類 該線程的作用是數(shù)字鍵盤圖片頭明度即可 4 數(shù)獨(dú)生成器 ShuDuSuanFa 類 該類是個(gè)普通的 Java 類 不繼承任何類 只為游戲隨機(jī)提供存放熟讀數(shù)字 的二維數(shù)組 該類所采用算法的優(yōu)劣決定了該游戲可玩性的好壞 系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn) 結(jié)構(gòu)設(shè)計(jì)結(jié)構(gòu)設(shè)計(jì) 圖 設(shè)計(jì)流程圖 14 設(shè)計(jì)思想設(shè)計(jì)思想 1 按照程序運(yùn)行的順序介紹各個(gè)類的作用以及整體的運(yùn)行框架 步驟如下 啟動(dòng)游戲 首先被創(chuàng)建的是游戲的主界面 而在主界面如圖 圖 界面 應(yīng)用程序的每個(gè)屏幕的顯示都要通過繼承和擴(kuò)展基類 Activity 類來實(shí)現(xiàn) 鐘重 寫 Activity 類的 onCreat 方法 在 onCreat 方法中做游戲的初始化工作 該類代碼以下 public class KLSDActivity extends Activity WelcomeView welcomeView 歡迎動(dòng)畫界面的引用 GameView gameView 游戲界面的引用 AboutView aboutView 關(guān)于界面 HelpView helpView 幫助界面 Handler myHandler new Handler 用來更新UI線程中的控件 public void handleMessage Message msg 15 if msg what 1 歡迎界面發(fā)送的消息 if welcomeView null welcomeView null initGameView KLSDActivity this setContentView gameView else if msg what 2 游戲勝利或者失敗時(shí)點(diǎn)擊屏幕 if gameView null gameView null initWelcomeView 初始化歡迎界面 KLSDActivity this setContentView welcomeView 切換到歡迎界 面 else if msg what 3 initAboutView KLSDActivity this setContentView aboutView 切換到關(guān)于界面 else if msg what 4 initHelpView KLSDActivity this setContentView helpView 切換到幫助界面 public void onCreate Bundle savedInstanceState super onCreate savedInstanceState 設(shè)置全屏 requestWindowFeature Window FEATURE NO TITLE getWindow setFlags WindowManager LayoutParams FLAG FULLSCREEN WindowManager LayoutParams FLAG FULLSCREEN initWelcomeView 初始化歡迎界面 this setContentView welcomeView 切換到歡迎界面 public void initWelcomeView 初始化歡迎界面 welcomeView new WelcomeView this public void initGameView 初始化游戲界面 gameView new GameView this public void initAboutView 初始化關(guān)于界面 aboutView new AboutView this public void initHelpView 初始化幫助界面 helpView new HelpView this 16 當(dāng)用戶單擊 關(guān)于 菜單時(shí) 將進(jìn)入幫助界面 菜單按鈕時(shí) 新界面進(jìn)入 當(dāng)用戶單擊 幫助 菜單時(shí) 將進(jìn)入幫助界面 該界面實(shí)現(xiàn)較簡(jiǎn)單 只需將圖 片繪制到指定位置 然后繪制以下 確定 按鈕即可 代碼如下 17 public class ShuDuSuanFa int n new int 9 9 存儲(chǔ)數(shù)字的數(shù)組 int num 1 2 3 4 5 6 7 8 9 生成隨機(jī)數(shù)字的源數(shù)組 隨機(jī)數(shù)字從該數(shù)組 中產(chǎn)生 public boolean checkLine int col 檢查列是否符合要求 for int j 0 j 8 j if n j col 0 continue for int k j 1 k 9 k if n j col n k col return false return true public boolean checkNine int row int col 檢查3X3區(qū)域是否符合要求 int j row 3 3 獲得左上角的坐標(biāo) int k col 3 3 for int i 0 i 8 i 循環(huán)比較 if n j i 3 k i 3 0 continue for int m i 1 m 9 m if n j i 3 k i 3 n j m 3 k m 3 18 return false return true public boolean checkRow int row 檢查行是否符合要求 for int j 0 j 8 j if n row j 0 continue for int k j 1 k 9 k if n row j n row k return false return true public int generateNum int row int col int time 產(chǎn)生1 9之間的隨機(jī) 數(shù)字 if time 0 第一次嘗試時(shí) 初始化隨機(jī)數(shù)字源數(shù)組 for int i 0 i 9 i num i i 1 第10次填充 表明該位置已經(jīng)卡住 則返回0 由主程序處理退回 if time 9 return 0 不是第一次填充 生成隨機(jī)數(shù)字 該數(shù)字是數(shù)組的下標(biāo) 取數(shù)組num中該下標(biāo)對(duì)應(yīng)的數(shù)字為隨機(jī)數(shù)字 int ranNum int Math random 9 time 把數(shù)字放置在數(shù)組倒數(shù)第time個(gè)位置 int temp num 8 ranNum num 8 ranNum num ranNum num ranNum temp return num 8 ranNum public int getShuDu 生成數(shù)字 for int i 0 i 9 i int time 0 嘗試填充的數(shù)字次數(shù) for int j 0 j 0 不是第一列 則倒退一列 j 2 continue else 是第一列 則倒退到上一行的最后一列 i j 8 continue 19 if isCorret i j 成功 time 0 else time j return n public boolean isCorret int row int col 是否滿足行 列和九宮區(qū)域不 重復(fù)的要求 return checkRow row 當(dāng)用戶單擊 開始 菜單時(shí) 將進(jìn)入幫助界面 菜單按鈕時(shí) 新界面進(jìn)入 游 戲開始 此界面含有暫停 提示 換題 放棄 圖 游戲開始 20 public class GameView extends SurfaceView implements SurfaceHolder Callback KLSDActivity activity activity的引用 int alpha 100 透明度 float span float 1 難度 1 10 int status 0 0游戲中 1暫停中 2游戲勝利 3游戲失敗 int time 0 時(shí)間 boolean tishi 是否提示 Bitmap background 大背景 Bitmap small backgroud 背景方格 Bitmap stop 暫停按鈕 Bitmap change 換題按鈕 Bitmap drop 放棄按鈕 Bitmap help 提示按鈕 Bitmap go on 暫停圖像 Bitmap keyDown 選中后單元格樣式 Bitmap win 勝利 Bitmap fail 失敗 Bitmap select 選中的單元格 Bitmap timeBitmap 時(shí)間中間的冒號(hào) Bitmap heart 有提示時(shí)候畫的 Bitmap exit 是否退出圖片 Bitmap key background 數(shù)字按鍵背景 Bitmap key bitmap 小數(shù)字鍵盤 Bitmap number bitmap new Bitmap 10 默認(rèn)的數(shù)字圖片 Bitmap number input new Bitmap 10 輸入的數(shù)字圖片 Bitmap time bitmap new Bitmap 10 時(shí)間 Paint paint boolean drawkey false int num 用來裝生成的數(shù)字即正確答案 int inputNum 用來存放輸入的數(shù)字 int outputNum 用來存放系統(tǒng)的數(shù)字 float scale float 0 8 數(shù)字鍵盤上數(shù)字縮放的比例 Bitmap small number int r 39 數(shù)字鍵盤小圓圈的半徑 int keyx int keyy 數(shù)字鍵盤的位置 int downx int downy ShuDuSuanFa sdsf 生成數(shù)獨(dú)的算法類 TimeThread tt 時(shí)間線程 GameViewDrawThread gameViewDrawThread public GameView KLSDActivity activity super activity this activity activity getHolder addCallback this 添加Callback接口的實(shí)現(xiàn) init gameViewDrawThread new GameViewDrawThread this 21 public void init paint new Paint 初始化畫筆 background BitmapFactory decodeResource getResources R drawable background 初始化背景小方格圖元 small backgroud BitmapFactory decodeResource getResources R drawable small background 初始化下面的四個(gè)按鈕 stop BitmapFactory decodeResource getResources R drawable stop1 停止 change BitmapFactory decodeResource getResources R drawable change1 換題 drop BitmapFactory decodeResource getResources R drawable drop1 放棄 help BitmapFactory decodeResource getResources R drawable help1 提示 key background BitmapFactory decodeResource getResources R drawable key background 3 當(dāng)用戶單擊 暫停 菜單時(shí) 就進(jìn)入 暫停中 22 KLSDActivity activity activity 的引用 WelcomeViewDrawThread welcomeViewDrawThread 刷幀線程 WelcomeViewGoThread welcomeViewGoThread 動(dòng)畫生成線程 int bitmapsID new int 圖片 ID Bitmap bitmaps 圖片數(shù)組 Bitmap menuBitmap new Bitmap 4 int drawIndex 0 當(dāng)前繪制第幾幀 boolean drawString false 是否繪制文字 int status 0 0 歡迎狀態(tài) 1 菜單狀態(tài) Paint paint 畫筆 Paint paint2 public WelcomeView KLSDActivity activity 構(gòu)造器 super activity this activity activity 得到 activity 的引用 getHolder addCallback this 添加 Callback 接口的實(shí)現(xiàn) initBitmap 調(diào)用初始化方法 welcomeViewDrawThread new WelcomeViewDrawThread this welcomeViewGoThread new WelcomeViewGoThread this public void initBitmap 初始化圖片方法 paint new Paint paint2 new Paint paint2 setAlpha 125 paint setColor Color WHITE paint setAntiAlias true 打開抗鋸齒 paint setTextSize 18 bitmaps new Bitmap bitmapsID length for int i 0 i bitmaps length i bitmaps i BitmapFactory decodeResource getResources bitmapsID i Bitmap bitmap BitmapFactory decodeResource getResources R drawable menu for int i 0 i menuBitmap length i 切成小圖片 menuBitmap i Bitmap createBitmap bitmap 0 23 bitmap getHeight menuBitmap length i bitmap getWidth bitmap getHeight menuBitmap length bitmap null 釋放掉大圖 protected void onDraw Canvas canvas 繪制方法 super onDraw canvas canvas drawColor Color BLACK 清背景 canvas drawBitmap bitmaps drawIndex 0 100 paint if status 0 if drawString canvas drawText 點(diǎn)擊屏幕繼續(xù) 103 380 paint else if status 1 菜單狀態(tài)時(shí) canvas drawRect 0 0 320 480 paint2 for int i 0 i60 if welcomeView drawIndex 5 0 welcomeView drawString welcomeView drawString try Thread sleep sleepSpan 睡眠 catch Exception e e printStackTrace 打印異常信息 26 public void setFlag boolean flag 循環(huán)標(biāo)志位的設(shè)置方法 this flag flag 當(dāng)用戶單擊 放棄 菜單時(shí) 將進(jìn)入幫助界面 菜單按鈕時(shí) 重新開始 27 去 canvas drawBitmap stop 150 380 paint canvas drawBitmap change 230 380 paint canvas drawBitmap drop 150 420 paint canvas drawBitmap help 230 420 paint if status 2 游戲勝利 tt flag false canvas drawBitmap win 40 160 paint else if status 3 游戲失敗 tt flag false canvas drawBitmap fail 80 180 paint else if status 4 是否退出 canva
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030鋁質(zhì)禮品盒市場(chǎng)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 油田車隊(duì)改制方案(3篇)
- 汽車金融政策方案(3篇)
- 2025年農(nóng)業(yè)灌溉用水效率提升關(guān)鍵技術(shù)研究報(bào)告
- 2025至2030烹飪噴霧行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 期刊論文版權(quán)頁指的是哪一頁
- 物理學(xué)科教育教學(xué)論文
- 初中教學(xué)碩士論文
- 林則徐紀(jì)念館社會(huì)實(shí)踐報(bào)告
- 2025至2030全球及中國車輛離合器行業(yè)發(fā)展趨勢(shì)分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 蒸飯培訓(xùn)課件
- 高校物業(yè)管理服務(wù)實(shí)施方案
- 工程造價(jià)咨詢服務(wù)投標(biāo)方案(專家團(tuán)隊(duì)版-)
- 消化內(nèi)鏡護(hù)理常規(guī)
- 經(jīng)濟(jì)法學(xué)-001-國開機(jī)考復(fù)習(xí)資料
- 大規(guī)模分布式存儲(chǔ)系統(tǒng)架構(gòu)設(shè)計(jì)與優(yōu)化
- 招標(biāo)代理入圍服務(wù)方案
- 【MOOC】電子技術(shù)實(shí)習(xí)-北京科技大學(xué) 中國大學(xué)慕課MOOC答案
- 安全事故以案說法
- 《基于模型驅(qū)動(dòng)架構(gòu)的專用規(guī)則引擎組件研究》
- 智慧樹知到《運(yùn)動(dòng)生理學(xué)》章節(jié)測(cè)試答案
評(píng)論
0/150
提交評(píng)論