手機電子書閱讀器設(shè)計(共26頁)_第1頁
手機電子書閱讀器設(shè)計(共26頁)_第2頁
手機電子書閱讀器設(shè)計(共26頁)_第3頁
手機電子書閱讀器設(shè)計(共26頁)_第4頁
手機電子書閱讀器設(shè)計(共26頁)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、學(xué)號13080201282015-2016學(xué)年 第二學(xué)期網(wǎng)絡(luò)應(yīng)用開發(fā)課程設(shè)計報告題目:手機電子書閱讀器設(shè)計專業(yè):網(wǎng)絡(luò)工程班級:13級(1)班姓名:孫陽陽指導(dǎo)教師:朱毅成績:計算機學(xué)院2016年6月1日 目 錄1 設(shè)計內(nèi)容及要求11.1 課題提出的背景目的及意義11.1.1 課題提出的背景11.1.2 課題提出的目的11.2 設(shè)計思路及研究方法11.2.1 設(shè)計思路11.2.2 研究方法12 概要設(shè)計22.1 軟件的基本功能要求22.2系統(tǒng)架構(gòu)32.3 開發(fā)環(huán)境33 設(shè)計過程43.1 總體軟件結(jié)構(gòu)設(shè)計43.2 接口設(shè)計53.2.1 外部接口53.2.2 內(nèi)部接口63.3 數(shù)據(jù)庫設(shè)計63.3.1

2、數(shù)據(jù)模式設(shè)計63.3.2 數(shù)據(jù)表格設(shè)計63.3.3 表的具體設(shè)計73.3.4 數(shù)據(jù)字典83.4 軟件設(shè)計模型83.5 軟件維護設(shè)計94 系統(tǒng)功能模塊的設(shè)計與實現(xiàn)94.1 關(guān)鍵技術(shù)94.1.1 android平臺及java語言94.1.2 中介軟件104.1.3 四大組件104.1.4 sqlite3 數(shù)據(jù)庫114.1.5 Tomcat服務(wù)器114.2 歡迎界面的實現(xiàn)114.3 主控制類的實現(xiàn)114.4工具類的設(shè)計124.5 閱讀界面的實現(xiàn)124.6 找書功能的實現(xiàn)134.7 書簽功能的實現(xiàn)144.8 設(shè)置字體大小功能的實現(xiàn)164.9 更換背景圖片以及設(shè)置字體顏色功能的實現(xiàn)165 設(shè)計結(jié)果166

3、 設(shè)計總結(jié)21參考文獻23計算機學(xué)院 網(wǎng)絡(luò)應(yīng)用開發(fā)課程設(shè)計報告1 設(shè)計內(nèi)容及要求1.1 課題提出的背景目的及意義1.1.1 課題提出的背景在這個信息化的時代, IT業(yè)已經(jīng)成為世界發(fā)展的主流,我們對信息技術(shù)的依賴遠遠超過了對我們自己的依賴,計算機和手機已經(jīng)成為我們?nèi)粘I钪胁豢扇鄙俚墨@得信息的渠道。正因為如此,各種各樣的軟件層出不窮,我們的生活也因為各種各樣的軟件變的更有滋有味。不缺乏娛樂性,也不缺乏教育意義,讓我們從這些軟件中受益匪淺,使我們看到了相比以前的巨大進步。我們的依賴性也越來越大,越來越離不開這些給我們提供日常信息的工具。手機也已不再僅僅是簡單的人與人通話的工具,而是在很大程度上成為

4、了我們獲取信息的一個更好的渠道。開發(fā)一款好的手機軟件是相當(dāng)必要的。以前我們看看雜志,小說都要去圖書館借閱,而且時間有限,很不方便;而現(xiàn)在是在電腦上或者手機上看雜志,看小說,文檔。以此看來,一個好的手機閱讀器軟件的開發(fā)是相當(dāng)有必要的。1.1.2 課題提出的目的此次設(shè)計的目的很明顯,就是給予閱讀者更大的便利性,閱讀者不用再到處拿著一本厚厚的書籍,大大減少了讀者的負擔(dān),只需要下載一本txt格式的電子書,放在sd卡里邊,就是人們的生活百科。1.2 設(shè)計思路及研究方法1.2.1 設(shè)計思路閱讀器的設(shè)計流程主要是按照軟件設(shè)計的一般流程:需求分析、概要設(shè)計、詳細設(shè)計、測試與維護的基本流程來設(shè)計開發(fā)的。首先,從

5、整體分析軟件功能,將功能模塊化;然后對每個模塊進行調(diào)試。最后對各個模塊進行系統(tǒng)集成。1.2.2 研究方法本系統(tǒng)在整體框架研究方法采用的是問卷調(diào)查法和觀察研究法。而在總體設(shè)計上采用的是結(jié)構(gòu)化方法,在局部底層開發(fā)上為便于交流采用快速原型法。結(jié)構(gòu)化系統(tǒng)的設(shè)計方法是在結(jié)構(gòu)化程序設(shè)計思想基礎(chǔ)上發(fā)展起來的,它的基本涵義是一個系統(tǒng)由層次化的程序模塊構(gòu)成,每一個模塊只有一個入口和一個出口,每一個模塊只歸其上一級模塊調(diào)用,并有模塊連接的準(zhǔn)則和構(gòu)造模塊的標(biāo)準(zhǔn),而且用系統(tǒng)結(jié)構(gòu)圖來表達系統(tǒng)的結(jié)構(gòu),盡可能用最優(yōu)的方式將系統(tǒng)內(nèi)各部分組織起來。2 概要設(shè)計2.1 軟件的基本功能要求在現(xiàn)行業(yè)務(wù)流程和數(shù)據(jù)分析的基礎(chǔ)上基本上確定

6、了系統(tǒng)的功能,設(shè)計也基本上達到了目標(biāo)。根據(jù)軟件設(shè)計的步驟,需求分析是軟件設(shè)計成功的基礎(chǔ),也是必不可少的步驟。同時,也對軟件的設(shè)計提出了具體的要求。在做足了充分的調(diào)查研究之后,基本可以確定軟件的功能界面如下:(1)剛打開軟件時的歡迎動畫界面。(2)在沒有閱讀記錄情況下打開軟件時進入的軟件說明界面。(3)在主界面下單擊“菜單”按鈕后彈出的歡迎主菜單界面。(4)找書選擇界面,用來選擇找書的途徑。(5)網(wǎng)絡(luò)下載列表界面,用來列出服務(wù)器端可供下載的文檔。(6)下載完成提示界面,用戶從服務(wù)器端完成指定文檔下載任務(wù)時顯示的界面。(7)已存在要下載文件提示界面,當(dāng)用戶指定要下載的文檔在SD卡中已存在時顯示的界

7、面。(8)SD卡文件列表界面,列出SD卡中存在的所有資料。(9)閱讀界面,用來閱讀文檔的主界面,是整個閱讀器設(shè)計核心部分。(10)書簽功能界面,用來選擇與書簽相關(guān)的具體操作。(11)添加書簽功能界面,將當(dāng)前閱讀到的位置以書簽名和書頁號的形式存至?xí)灡?,方便下次閱讀。(12)選擇書簽功能界面,通過選擇書簽記錄跳轉(zhuǎn)至想要閱讀的位置。(13)刪除書簽功能界面,再不想要該條書簽記錄的情況下實現(xiàn)刪除操作。(14)自動翻頁功能界面,實現(xiàn)不同時間間隔自動翻頁的效果。(15)設(shè)置界面,用來選擇對閱讀界面不同的設(shè)置。(16)背景音樂界面,可在閱讀的同時欣賞音樂,更大限度的提升。(17)背景圖片界面,用來設(shè)置不同

8、的閱讀界面風(fēng)格,使閱讀更為個性化。(18)字體顏色界面,用來設(shè)置不同的閱讀字體顏色,提升用戶的視覺體驗?;菊f明如下:本系統(tǒng)是一個電子書閱讀器,主要包含一個主界面,用來實現(xiàn)閱讀的功能。在閱讀界面時,點擊menu,手機底部會出現(xiàn)四個選項:找書、書簽、自動翻頁、設(shè)置。點擊找書選項會有兩種操作可供選擇,分別是在SD卡中找書和通過網(wǎng)絡(luò)下載;點擊書簽選項會有三種操作可供選擇,分別為添加書簽、選擇書簽和清空書簽,其中長按選擇書簽列表中的某條書簽記錄也可達到刪除該條記錄的目的;點擊自動翻頁選項會有四種操作可供選擇,分別為每隔30秒、40秒、50秒自動翻頁和停止自動翻頁;點擊設(shè)置選項會有四種操作可供選擇,分別

9、為設(shè)置背景音樂、設(shè)置背景圖片、設(shè)置字體顏色和設(shè)置字體大小,為此用戶可通過自己的喜好來設(shè)置不同閱讀界面的風(fēng)格,并且可以選擇自己喜愛的音樂作為背景音樂,在閱讀的同時欣賞。2.2系統(tǒng)架構(gòu)本設(shè)計總體邏輯結(jié)構(gòu)層次劃分如圖1所示。圖1 功能結(jié)構(gòu)圖2.3 開發(fā)環(huán)境數(shù)據(jù)庫由于本設(shè)計和數(shù)據(jù)庫密切相關(guān),但是對數(shù)據(jù)庫的要求不高,因此可用Android系統(tǒng)本身自帶的Sqlite數(shù)據(jù)庫。Android SDK與Eclipse開發(fā)的插件ADT由于本設(shè)計是基于Android系統(tǒng)的,而Android開發(fā)環(huán)境的搭建是基于Eclipse的,因此需要下載Android SDK與Eclipse開發(fā)的插件ADT。服務(wù)器由于本設(shè)計需要用

10、服務(wù)器來為其提供下載服務(wù),而且對服務(wù)器的要求不高,因此在設(shè)計時用Tomcat作服務(wù)器。3 設(shè)計過程3.1 總體軟件結(jié)構(gòu)設(shè)計打開電子書閱讀器之后,軟件會先查看上次閱讀的最后記錄,以此作為根據(jù)來進行判斷從而跳轉(zhuǎn)至相應(yīng)的閱讀界面。然后用戶就可在閱讀界面下通過選擇menu來執(zhí)行想要的操作:找書、書簽、自動翻頁、設(shè)置。點擊找書選項會有兩種操作可供選擇,分別是在SD卡中找書和通過網(wǎng)絡(luò)下載;點擊書簽選項會有三種操作可供選擇,分別為添加書簽、選擇書簽和清空書簽,其中長按選擇書簽列表中的某條書簽記錄也可達到刪除該條記錄的目的;點擊自動翻頁選項會有四種操作可供選擇,分別為每隔30秒、40秒、50秒自動翻頁和停止自

11、動翻頁;點擊設(shè)置選項會有四種操作可供選擇,分別為設(shè)置背景音樂、設(shè)置背景圖片、設(shè)置字體顏色和設(shè)置字體大小,為此用戶可通過自己的喜好來設(shè)置不同閱讀界面的風(fēng)格,并且可以選擇自己喜愛的音樂作為背景音樂,在閱讀的同時欣賞。根據(jù)各個模塊的不同功能,對本設(shè)計進行了層次結(jié)構(gòu)的劃分。在Eclipse下創(chuàng)建了一個名為Test的工程,工程的結(jié)構(gòu)圖如圖2:圖2 軟件工程結(jié)構(gòu)圖該功能包是通過Android SDK自動生成的,主要包括以下內(nèi)容:(1)src源代碼目錄:該目錄存放Android應(yīng)用程序所有的源代碼。該目錄項有不同的包,包中對應(yīng)開發(fā)的源代碼,開發(fā)過程中的主要精力都集中在開發(fā)src目錄下內(nèi)容。(2)gen文件夾

12、目錄:該目錄存放了Eclipse的ADT插件自動生成的R.java文件。實際上R.java定義了一個R類,它包含了應(yīng)用中用戶界面、圖像、字符串等各種資源與之相對應(yīng)的資源編號(id)。這些資源編號都是系統(tǒng)自動生成的,即有一資源對象,系統(tǒng)就為此在R類中生成相應(yīng)資源編號,好比一本字典。(3)Res資源目錄:該目錄定義了drawable、layout及values 3個目錄。a. drawable目錄:該目錄下有drawable-hdpi,drawable-ldpi,drawable-mdpi3個文件夾,分別用來存放不同分辨率的圖片資源,用于不同分辨率的手機的開發(fā),可以通過Resource.getDr

13、awable(id)獲得該資源。b. layout目錄:該目錄下包含了所有使用XML格式的界面描述文件。主要用于表述應(yīng)用程序的用戶界面布局,也用于描述用戶界面和接口組件。c. values目錄:該目錄包含了使用XML格式的參數(shù)描述文件,也可以在此添加一些額外的資源,如字符串、顏色、樣式和數(shù)組等。主要用于在代碼中通過R類來調(diào)用它們,而不直接使用,這樣可將代碼和資源分開管理,便于維護。除了以上文件夾外,還用一個AndroidManifest.xml文件,該文件是系統(tǒng)的控制文件,告訴系統(tǒng)如何處理創(chuàng)建的所有頂層項目,尤其是Activity,凡是需要用到的組件都要在此注冊。同時該文件也是所有Androi

14、d應(yīng)用程序都需要的文件,其描述了程序包的全局變量,包括公開的應(yīng)用程序組件和每個組件的實現(xiàn)類,什么樣的數(shù)據(jù)可以操作,在什么地方可以運行等。在這個文件中最重要的一個內(nèi)容就是Intent過濾器,這些過濾器描述了何時、何種情況下讓Activity啟動。當(dāng)一個Activity(或操作系統(tǒng))想要執(zhí)行一個動作,它將創(chuàng)建一個Intent對象。該對象包含了很多描述符,描述了想做的操作,像處理數(shù)據(jù),數(shù)據(jù)的類型,以及一些其他的信息。Android將Intent對象中的所有公開的Intent過濾器比較,找到一個最能恰當(dāng)處理請求的數(shù)據(jù)和動作的Activity。3.2 接口設(shè)計3.2.1 外部接口在用戶界面部分,根據(jù)需求

15、分析結(jié)果,用戶需要一個友善界面。在界面設(shè)計上,應(yīng)做到簡單明了,易于操作,并且要注意到界面的布局,應(yīng)突出的顯示重要以及出錯信息。在界面設(shè)計部分,本系統(tǒng)按照Microsoft公司的用戶界面設(shè)計標(biāo)準(zhǔn),為用戶提供友好、方便、直觀、簡潔的操作環(huán)境。本系統(tǒng)采用了窗口繼承的方式,使窗口有統(tǒng)一的界面風(fēng)格。同時,對錯誤信息、提示信息進行標(biāo)準(zhǔn)化,盡量做到清晰明了。3.2.2 內(nèi)部接口系統(tǒng)在功能模塊的設(shè)計上,以“高內(nèi)聚、低耦合”為設(shè)計目標(biāo)。內(nèi)部接口方面,各模塊之間采用函數(shù)調(diào)用、參數(shù)傳遞、返回值的方式進行信息傳遞。具體參數(shù)的結(jié)構(gòu)將在下面數(shù)據(jù)結(jié)構(gòu)設(shè)計的內(nèi)容中說明。接口傳遞的信息將是以數(shù)據(jù)結(jié)構(gòu)封裝的數(shù)據(jù)、參數(shù)傳遞或返回值

16、的形式在各模塊間傳遞。3.3 數(shù)據(jù)庫設(shè)計3.3.1 數(shù)據(jù)模式設(shè)計一共設(shè)計了3張表,是:(1)閱讀記錄表(閱讀記錄的ID,書的路徑,閱讀記錄數(shù)據(jù))(2)書簽表(書簽的ID,書簽對應(yīng)的閱讀記錄的ID,書簽名,書頁)(3)上次閱讀記錄表(上次閱讀記錄的ID,書的路徑,上次閱讀到的書頁,上次閱讀時的字體)數(shù)據(jù)庫表的設(shè)計如下:圖3 數(shù)據(jù)庫結(jié)構(gòu)圖3.3.2 數(shù)據(jù)表格設(shè)計本數(shù)據(jù)庫用的是一個小型數(shù)據(jù)庫sqlite3,在數(shù)據(jù)庫中創(chuàng)建了三個表格。即BookRecord、BookMark和LastTimePage,分別用來存放閱讀記錄的數(shù)據(jù)、書簽的數(shù)據(jù)和上次的閱讀記錄數(shù)據(jù)。具體內(nèi)容如表3-1、表3-2和表3-3所示

17、:表1 閱讀記錄表字段名稱數(shù)據(jù)類型字段大小是否主鍵說明ridInteger8是閱讀記錄的IDpath文本50否書的路徑data字節(jié)數(shù)組不定否預(yù)讀記錄數(shù)據(jù)表2 書簽表字段名稱數(shù)據(jù)類型字段大小是否主鍵說明midInteger8是書簽的IDridfkInteger8否書簽對應(yīng)的閱讀記錄的IDbmname文本50否書簽名pageInteger8否書頁表3 上次閱讀記錄表字段名稱數(shù)據(jù)類型字段大小是否主鍵說明lidInteger8是上次閱讀的記錄IDpath文本50否書的路徑pageInteger8否上次閱讀到的頁數(shù)fontsizeInteger8否上次閱讀的字體大小3.3.3 表的具體設(shè)計表名:Book

18、Record表中字段名稱:rid, path, data.說明:用varchar類型存儲path,blob類型存儲相應(yīng)的路徑下的閱讀過程,并規(guī)定rid為閱讀記錄表的主鍵。表名:BookMark表中字段名稱:mid, ridfk, bmname, page. 說明:創(chuàng)建書簽mid為integer類型主鍵,定義書簽名字bmname為varchar類型,書頁號page為integer類型的書簽表。表名:LastTimePage表中字段名稱:lid, path, page, fontsize.說明:創(chuàng)建書簽lid為integer型主鍵,定義路徑path為varchar類型,書頁號page為intege

19、r類型,字體大小為integer類型的上次閱讀記錄表。3.3.4 數(shù)據(jù)字典數(shù)據(jù)字典是物理數(shù)據(jù)庫的具體體現(xiàn)。表4 BookRecord數(shù)據(jù)字典字段名類型閱讀記錄的ID整型書的路徑文本閱讀記錄數(shù)據(jù)字節(jié)數(shù)組表5 BookMark數(shù)據(jù)字典字段名類型書簽的ID整型書簽對應(yīng)的閱讀記錄的ID整型書簽名文本書頁整型表6 LastTimePage數(shù)據(jù)字典字段名類型上次閱讀記錄的ID整型書的路徑文本上次閱讀到的頁數(shù)整型上次閱讀時字體大小整型3.4 軟件設(shè)計模型 建立系統(tǒng)數(shù)據(jù)模型的主要工具是實體關(guān)聯(lián)圖,即E-R圖。E-R圖的圖形符號約定如下表:圖4 存儲閱讀記錄的E-R圖圖5 存儲書簽的E-R圖圖 6 存儲上次閱讀

20、記錄的E-R圖3.5 軟件維護設(shè)計采用MVC設(shè)計模式,將UI層和業(yè)務(wù)邏輯層分離開來,采用針對接口編程的方式,降低了代碼之間的耦合度,便于軟件的升級和程序性能的優(yōu)化。4 系統(tǒng)功能模塊的設(shè)計與實現(xiàn)4.1 關(guān)鍵技術(shù)4.1.1 android平臺及java語言以下圖表展示了Android操作系統(tǒng)的主要組成部分:圖7 Android系統(tǒng)架構(gòu)圖 本系統(tǒng)是以java為編程語言,從接口到功能,靈活多變。主要運用的是Activity之間的相互跳轉(zhuǎn),然后利用Intent實現(xiàn)多個程序同時運行的效果。運行中如果某個Activity的畫面被另一個Activity所取代,則這個Activity停止。本系統(tǒng)通過把View類

21、與XML(可擴展標(biāo)記語言)將用戶界面放置在視圖窗口,然后注冊事件來完成相應(yīng)的功能。例如,當(dāng)視圖要處理用戶的點擊事件的時候,android就要向框架注冊一個OnClickListener等。本系統(tǒng)中觸發(fā)事件都是通過這種來實現(xiàn)的。 Java語言是一種簡單易用,面向?qū)ο蟮?,可移植的語言。它具有很多的優(yōu)越性和特點,比如:平臺無關(guān)性,安全性,面向?qū)ο?,健壯性等等。本系統(tǒng)就是在android平臺上使用java語言完成的系統(tǒng)。4.1.2 中介軟件 中介軟件是android操作系統(tǒng)應(yīng)用程序的橋梁,主要分為函數(shù)和虛擬機。Android的數(shù)據(jù)存儲采用sqlite3數(shù)據(jù)庫系統(tǒng),用戶可以用ContentProvide

22、r類獲取數(shù)據(jù)。android中數(shù)據(jù)存儲技術(shù)主要有:文件存儲、preference、sqlite、ContentProvider和網(wǎng)絡(luò)存儲,在本軟件中主要使用到了文件存儲、sqlite和ContentProvider,文件存儲是以流的形式讀寫文件,可以以文格的格式,也可以以二進制的形式,在java語言中要使用流,則寫入文件的對象必須進行序列化,sqlite是嵌入式移動設(shè)備中常用的輕量級數(shù)據(jù)庫,可看作計算機上使用的sql server、oracle數(shù)據(jù)庫。本軟件中,用戶生詞本中的數(shù)據(jù)都存在sqlite數(shù)據(jù)庫中,而進行數(shù)據(jù)備份和恢復(fù)時則是用文件作為介質(zhì)保存數(shù)據(jù)。4.1.3 四大組件Android的四

23、大組件是支持android應(yīng)用程序顯示,跳轉(zhuǎn),服務(wù)和事件的重要工具,它們主要是:Activity(活動),Intent(意圖),Service(服務(wù)),ContentProvider(內(nèi)容提供器)。Activity是一個用戶的界面基類,屬于UI。一個Activity就是一個類,每個Activity類都需要繼承Activity基類,并與其他控件結(jié)合使用。Intent實現(xiàn)Activity、service等之間的跳轉(zhuǎn)和數(shù)據(jù)傳輸。Service是后臺服務(wù),為用戶提供數(shù)據(jù)支持。ContentProvider負責(zé)數(shù)據(jù)的存儲和讀取。在android中,軟件UI通常使用xml技術(shù)設(shè)計,而xml中控年的位置和狀

24、態(tài)則離不開布局的使用,android中常用的布局有5種,分別是:AbsoluteLayout、LinearLayout、RelativeLayout、FrameLayout、TableLayout,由于布局的使用,并且布局之間可以互相嵌套,使得android軟件UI的設(shè)計變得非常靈活,即使是一些非常復(fù)雜的界面設(shè)計,只要合理的使用布局,也會使開發(fā)變得很容易。4.1.4 sqlite3 數(shù)據(jù)庫Sqlite3是建立在android平臺上的一個數(shù)據(jù)庫,除了支持varchar(n)(可變字符),char(n)(定長字符)等數(shù)據(jù)特性外,還支持空(NULL),整型(INTEGER),文本類型(TEXT)等數(shù)

25、據(jù)類型。它的特點入下:輕量級(只需帶上很小的動態(tài)庫,就能享受它的全部功能)、獨立性(使用不需要安裝,在部署的時候能省去很多麻煩)、隔離性(數(shù)據(jù)庫中所有的信息都包含在一個文件內(nèi),方便管理和維護)和安全性(可以同時讀取數(shù)據(jù),但同時只有一個能夠?qū)懭霐?shù)據(jù))等特性。4.1.5 Tomcat服務(wù)器服務(wù)器的架設(shè):(1) 在/下載合適版本的Tomcat。(2) 在/apache-tomcat-5.0.28/webapps目錄下新建文件夾txt。(3) 在txt文件夾下創(chuàng)建文本文件txt_list.txt。(4) 在txt_list.txt下寫入內(nèi)容。(5) 根據(jù)t

26、xt_list.txt的內(nèi)容,創(chuàng)建文本。(6) 打開/pache-tomcat-5.0.8/bin目錄。(7) 打開/pache-tomcat-5.0.8/bin目錄下的startup.bat。4.2 歡迎界面的實現(xiàn)本模塊主要完成閱讀器歡迎界面的漸變效果顯示,在進入程序界面時首先調(diào)用。該功能的實現(xiàn)主要是通過繪制黑色矩形,然后對其進行平面貼圖,并通過不斷的更改圖片的透明值來實現(xiàn)的。4.3 主控制類的實現(xiàn) ReaderActivity類是主要控制程序運行的類,實現(xiàn)了各個界面的有序切換,各個按鈕和對話框的監(jiān)聽事件,加載了程序中用到的相關(guān)資源,有效地控制了程序的運行。(1)onCreate方法是程序運

27、行時,進入主界面前調(diào)用的方法,在此方法中對程序中用到的相關(guān)變量進行賦值,并為相關(guān)類創(chuàng)建對象,以方便調(diào)用。(2)onKeyDownf方法是重寫父類的onKeyDown方法,當(dāng)按下不同的鍵時,此方法設(shè)計返回鍵(4號鍵)和Menu鍵(82號鍵),并且本設(shè)計中支持屏幕觸控事件和鍵盤監(jiān)聽事件。(3)onCreateOptionsMenu方法表示的是程序運行時,用戶按下鍵盤上的Menu鍵后,顯示的找書、書簽、自動翻頁和設(shè)置的按鈕選項,當(dāng)用戶按下不同的鍵后,彈出相應(yīng)的對話框。(4)sendMessage方法表示各個界面相互跳轉(zhuǎn)時調(diào)用的方法和不同線程之間傳遞消息的方法。(5)isWhichTime方法用以判斷

28、是否為第一次打開程序,如果是,則程序中的變量值為默認值;若不是第一次打開,則獲取上一次打開時設(shè)置的值。(6)saveCurrentData和savePreference方法表示當(dāng)程序退出、換書和第一次打開一本書時都要想數(shù)據(jù)庫中BookRecord表中插入數(shù)據(jù),第一次打開一本書時,向數(shù)據(jù)庫中插入數(shù)據(jù)是因為,如果表中不存在當(dāng)前書的信息,則無法存書簽。4.4工具類的設(shè)計(1)Constant類存放了整個設(shè)計過程中,大部分類經(jīng)常用到的常量值,如字體大小、字體顏色、屏幕的寬和高等。將這些常量值放在一起,不但方便了設(shè)計,而且方便管理。(2)加載文本的工具類TextLoadUtil的設(shè)計主要是為文本的讀入提

29、供方法。4.5 閱讀界面的實現(xiàn)ReaderView類主要負責(zé)自適應(yīng)屏、繪制閱讀器的主界面、實現(xiàn)鍵盤和屏幕的觸控事件以及實現(xiàn)翻頁功能。(1)surfaceCreated方法主要負責(zé)成員變量的初始化工作。(2)onDraw方法負責(zé)標(biāo)題、廣告條、左右頁面等圖片的繪制。其中廣告條的繪制是動態(tài)的,在廣告條線程中值需要更改圖片數(shù)據(jù)下標(biāo)志值NUM。(3)onTouchEvent方法負責(zé)處理屏幕觸控事件,屏幕觸控事件為移動是翻頁特效的實現(xiàn)。(4)drawPage方法負責(zé)根據(jù)閱讀記錄對象ReadRecord繪制左右兩頁面。圖8 從用戶進入軟件到閱讀界面時的流程圖圖9用戶在閱讀界面時的操作流程圖當(dāng)用戶進行閱讀界面

30、的時候,首先閱讀控制模塊會根據(jù)用戶之前閱讀到的位置來確定載入電子書文本的起始位置,然后會根據(jù)手機終端屏幕大小和字體大小來確定該頁應(yīng)該顯示多少文字。在獲取文字長度之后,會讀取相應(yīng)長度的字符并以此為基礎(chǔ)生成左右相鄰兩頁內(nèi)容的bitmap圖片。用戶在閱讀的時候可以觸摸屏幕的不同位置進行不同操作,左下角是往前翻頁,右下角是往后翻頁。4.6 找書功能的實現(xiàn)找書功能分為在SDCARD中和在網(wǎng)絡(luò)中找書。(1)在SDCARD中找書用戶可以將已有的txt格式的書放在SDCARD中,通過本閱讀器的在SDCARD中找書的功能將書加載進閱讀器進行閱讀,具體步驟如下:按下Menu鍵,在主界面中彈出的選項中選擇找書,彈出

31、找書對話框,選中SDCARD,即可根據(jù)當(dāng)前路徑獲得對應(yīng)文件數(shù)組,并將數(shù)組中的所有文件加入到文件列表中,然后再為文件列表添加監(jiān)聽,從而實現(xiàn)在點擊某一文件時跳轉(zhuǎn)至對應(yīng)頁面的功能。(2)在網(wǎng)絡(luò)中找書本閱讀器不僅提供了在本地找書的功能,而且也支持在網(wǎng)絡(luò)中找書。具體步驟如下:當(dāng)單擊在網(wǎng)絡(luò)中找書的按鈕時,調(diào)用downTxt方法下載txt文檔。圖10 用戶找書時的操作流程圖4.7 書簽功能的實現(xiàn)添加書簽功能的實現(xiàn)在本設(shè)計的書簽功能中有很多漂亮的Dialog,這些Dialog是通過xml文件自己布局的或者是通過Java代碼自定義實現(xiàn)的。其中styles.xml文件設(shè)置了Dialog的背景圖片和標(biāo)題格式,是設(shè)置

32、對話框?qū)傩缘奈募?。在完成了輸入書簽對話框所需要繼承的類、布局文件和對話框?qū)傩缘奈募?,?chuàng)建了書簽輸入對話框,并通過onPrepareDialog方法為自定義的輸入書簽對話框中的按鈕添加了監(jiān)聽。選擇書簽功能的實現(xiàn)選擇書簽對話框不同于添加書簽對話框,是用Java代碼實現(xiàn)的。具體的實現(xiàn)步驟如下:a. 在數(shù)據(jù)庫中取出所有書簽的名字和頁數(shù)的索引值,并分別放入兩個數(shù)組tempname和temppage中,用來放入書簽列表中顯示。b. 用Java代碼編寫列表對話框,并且為ListView添加內(nèi)容適配器,將在數(shù)據(jù)庫中取出的書簽名稱和其對應(yīng)的頁數(shù)的索引加入到ListView中。c. 當(dāng)單擊選擇書簽對話框中的某

33、一項時,得到當(dāng)前的頁數(shù),根據(jù)頁數(shù)查找HashMap,找到相應(yīng)的BookMark類的對象,從而知道要跳轉(zhuǎn)到的頁的索引值。d. 當(dāng)長時間按住選擇書簽對話框中的某一項時,彈出“是否刪除這條記錄”的對話框,如果單擊“確定”按鈕,則會刪除這條記錄,單擊“取消”按鈕則不會刪除記錄。圖11 書簽功能操作流程圖4.8 設(shè)置字體大小功能的實現(xiàn)字體大小對話框與選擇書簽對話框的設(shè)計基本相同,也是通過Java代碼為對話框中控件的擺放形式設(shè)置布局。當(dāng)單擊小號、中號、大號字體后,如果當(dāng)前字體與要變換的字體相同,則不發(fā)生變化,否則將字體的大小和中英文間距重新賦值,然后重新繪制當(dāng)前界面。字體大小變化后書簽和HashMap的更

34、新:(1) updataBookMarkAndHashMap方法負責(zé)字體大小變化后,更新書簽和HashMap。(2) drawVirtualPage方法是字體大小變化后,書簽和HashMap更新過程中,虛擬繪制主界面中每一頁信息,并且為下一頁的Left_Start的值賦值的方法。4.9 更換背景圖片以及設(shè)置字體顏色功能的實現(xiàn)(1)更換背景圖片功能的實現(xiàn) a. 為了使對話框看起來更美觀,為對話框中的按鈕設(shè)置背景圖,同時背景圖與要設(shè)置背景一致,為用戶提供參考。 b. 為按鈕添加監(jiān)聽,使單擊按鈕后,可以實現(xiàn)更換閱讀內(nèi)容背景的圖片。c. 設(shè)置要更換的圖片,并規(guī)定圖片加載的屬性,用到了PicLoadUtil 這個工具類的方法來實現(xiàn)圖片自適應(yīng)。 d. 重新繪制左右兩側(cè)背景圖片上的文字。(2)設(shè)置字體顏色功能的實現(xiàn) a. 為了使對話框看起來更美觀,為對話框中的按鈕設(shè)置背景圖,同時背景圖與要設(shè)置字體顏色一致,為用戶提供參考。 b. 為按鈕添加監(jiān)聽,使單擊按鈕后,可以實現(xiàn)重新設(shè)置閱讀界面字體顏色。 c. 完成字體顏色設(shè)置,返回到當(dāng)前閱讀界

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論