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

正文內(nèi)容

基于android系統(tǒng)的手機電子書閱讀器-資料下載頁

2025-05-31 08:57本頁面
  

【正文】 建兩個動畫的文件:Tabmenu 打開時的動畫 TabMenu 關(guān)閉時的動畫 TabMenu 的顯示效果如圖 57 所示:30 圖 56 閱讀界面運行截圖 圖 57 TabMenu 顯示效果截圖 數(shù)據(jù)庫的實現(xiàn)在 Android 系統(tǒng)內(nèi)嵌了一個輕量級數(shù)據(jù)庫 SQLiteDataBase,它占用的資源非常低、需要的內(nèi)存空間少、處理速度比較快和支持事務(wù)處理功能等。在電子書閱讀器中,主要創(chuàng)建了四張表,分別是 book_info 表、book_mark 表、book_chapter 表、book_read_setting 表。Android 數(shù)據(jù)庫的存儲位置在 data/data/項目文件夾/databases/目錄下,Android 是利用 ContentProvider 作為內(nèi)容提供商,SQLiteOpenHelper 數(shù)據(jù)庫幫助類來進(jìn)行對數(shù)據(jù)庫的創(chuàng)建和操作。通過 ()方法直接對數(shù)據(jù)庫進(jìn)行操作。程序中數(shù)據(jù)庫的類為 BookOpenHelper extend SQLiteOpenHelper 和BookContentProvider extend ContentProvider。Android 提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫創(chuàng)建方式,繼承 SQLiteOpenHelper,實現(xiàn) onCreate和 onUpgrade 兩個方法,有個好處就是便于數(shù)據(jù)庫版本的升級,連接數(shù)據(jù)庫的算法如下:31ContentProvider 提供數(shù)據(jù)庫操作方法和為其它應(yīng)用程序提供訪問此數(shù)據(jù)庫的途徑,具體的實現(xiàn)如下: 系統(tǒng)功能的實現(xiàn) 數(shù)據(jù)實體化為了能夠更好的調(diào)用數(shù)據(jù)庫中的數(shù)據(jù),在本課題中設(shè)計了一個實體對象層,將數(shù)據(jù)實體化。在此層中的結(jié)構(gòu)體對應(yīng)著數(shù)據(jù)庫中幾個表的具體數(shù)據(jù):建立書籍信息結(jié)構(gòu)體如下所示:public class Book{32private int bookId。 //書籍IDprivate String bookName。 //書名private String bookAuthor。 //作者private String bookPath。 //書籍路徑private String bookAddTime。 //添加時間private String bookOpenTime。 //最后打開時間private int bookCategoryId。 //所屬類別IDprivate String bookCategroyName。//所屬類別名private String bookSize。 //書籍大小private String bookProgress。 //最后閱讀進(jìn)度set、get 方法略……………………………..}建立書簽信息結(jié)構(gòu)體如下所示:public class BookMark{private int bookMarkId。 //書簽IDprivate int bookId。 //書籍 IDprivate String bookName。 //書名private String bookPath。 //書籍路徑private String bookMarkAddTime。 //書簽添加時間private String bookMarkProgress。//書簽進(jìn)度private String bookMarkDetail。 //書簽描述private int bookMarkBeginPosition。 //書簽添加時文本 Begin 值set、get 方法略……………………………..}建立書籍章節(jié)結(jié)構(gòu)體如下所示:public class BookChapter{33private int bookId。 //書籍IDprivate String bookName。 //書名private String bookChapterName。 //章節(jié)名private String bookChapterBeginPosition。//章節(jié)界面文本 Begin 值set、get 方法略……………………………..}建立書籍閱讀設(shè)置結(jié)構(gòu)體如下所示:public class BookReadSetting{private int bookId。 //書籍IDprivate int bookFontsize。 //字體大小private String bookBgStyle。//閱讀背景private int bookFontR。 //字體顏色 RGB中的R值private int bookFontG。 //字體顏色 RGB中的G值private int bookFontB。 //字體顏色 RGB中的B值private int bookBgR。 //背景顏色RGB 中的R值private int bookBgG。 //背景顏色RGB 中的G值private int bookBgB。 //背景顏色RGB 中的B值private int bookMarginWidth。//文本左右邊距private int bookMarginHeight。//文本上下邊距set、get 方法略……………………………..} 遍歷 SD卡控件 FileBrowser的實現(xiàn)如果我們需要從手機 SD 卡中把電子書添加到書架中,這時我們就需要一個 View 來可視化化的顯示 SD 卡中的目錄和文件結(jié)構(gòu),并且對是電子書的文件具有可添加到書架的操作,所以本軟件專門的編寫了一個遍歷 SD 卡中文件的控件FileBroswer。FileBroswer 的設(shè)計流程如下圖所示:34開始讀取當(dāng)前目錄下所有的的目錄和文件在 ListView 上顯示讀取的結(jié)果是否為目錄是否進(jìn)一步處理是否電子書是直接打開電子書 加入書架是將電子書信息讀取,并保存進(jìn)數(shù)據(jù)庫提示否圖 58 FileBroswer 的設(shè)計流程圖 閱讀界面效果和功能的實現(xiàn)1)電子書內(nèi)容呈現(xiàn)首先讀取選中的電子書數(shù)據(jù)庫中的相關(guān)信息,根據(jù)電子書在本地的路徑讀取內(nèi)容,獲取一個內(nèi)容的MappedByteBuffer對象,代碼是MappedByteBuffer m_mbBuf = new RandomAccessFile(book_file,r).getChannel().map(EAD_ONLY, 0, lLen),這里使用新IO流MappedByteBuffer是因為其對文件的處理效率遠(yuǎn)遠(yuǎn)的高于IO。內(nèi)容的呈現(xiàn)是將內(nèi)容文本通過自定義的onDraw()方法畫在畫布Canva上,在這個()方法、() 方法、()方法。在繪制之前得到一個畫筆paint,并設(shè)置paint的顏色、大小等屬性。通過屏幕高度和字體大小的比值確定每頁能夠呈現(xiàn)多少行35內(nèi)容,然后調(diào)用onDraw()繪制。電子書閱讀設(shè)計的工作流程圖如下:開始從數(shù)據(jù)庫中讀取選中電子書的信息根據(jù)電子書本地路徑讀取電子書內(nèi)容調(diào)用 onDraw()繪制閱讀界面翻頁閱讀是否第一次打開是否 讀取數(shù)據(jù)庫中閱讀進(jìn)度或章節(jié)進(jìn)度設(shè)置 begin 值書簽閱讀設(shè)置閱讀屬性 章節(jié)閱讀 將章節(jié)信息存入數(shù)據(jù)庫退出,并將閱讀進(jìn)度,閱讀屬性存入數(shù)據(jù)庫圖 59 電子書閱讀器閱讀界面設(shè)計流程圖 在線書城斷點續(xù)傳下載的實現(xiàn)斷點續(xù)傳 [3]下載,顧名思義,那就是我們在一次下載未結(jié)束時,退出下載,第二次下載時會接著第一次下載的進(jìn)度繼續(xù)下載。那么怎么記錄第一次下載的數(shù)據(jù)呢,這里肯定也是需要用到數(shù)據(jù)庫的了。而且是把文件分成幾段各使用一個線程下載。主要的目標(biāo)就是:① 文件分段同時下載;② 記錄下載進(jìn)度,可分時下載。36部分代碼實現(xiàn)如下:① 下載電子書網(wǎng)絡(luò)資源HttpURLConnection connection = null。RandomAccessFile randomAccessFile = null。InputStream is = null。try {URL url = new URL(urlstr)。connection = (HttpURLConnection) ()。(5000)。(GET)。// 設(shè)置范圍,格式為Range :bytes xy。(Range, bytes=+ (startPos + peleteSize) + + endPos)。randomAccessFile = new RandomAccessFile(localfile, rwd)。(startPos + peleteSize)。// 將要下載的文件寫到保存在保存路徑下的文件中is = ()。byte[] buffer = new byte[4096]。int length = 1。while ((length = (buffer)) != 1) {(buffer, 0, length)。peleteSize += length。// 更新數(shù)據(jù)庫中的下載信息(threadId, peleteSize, urlstr)。// 用消息將下載信息傳給進(jìn)度條,對進(jìn)度條進(jìn)行更新Message message = ()。 = 1。 = urlstr。 = length。(message)。if (state == PAUSE) {37return。}}} catch (Exception e) {()。} finally {try {()。()。()。()。} catch (Exception e) {()。}}② 將文件分段,并啟動多線程下載的實現(xiàn):if (isFirst(urlstr)) {//第一次下載init()。int range = fileSize / threadcount。infos = new ArrayListDownloadInfo()。for (int i = 0。 i threadcount 1。 i++) {DownloadInfo info = new DownloadInfo(i, i * range, (i + 1)* range 1, 0, urlstr)。(info)。}DownloadInfo info = new DownloadInfo(threadcount 1,(threadcount 1) * range, fileSize 1, 0, urlstr)。(info)。// 保存infos中的數(shù)據(jù)到數(shù)據(jù)庫(infos)。// 創(chuàng)建一個LoadInfo 對象記載下載器的具體信息38LoadInfo loadInfo = new LoadInfo(fileSize, 0, urlstr)。return loadInfo。} else {// 得到數(shù)據(jù)庫中已有的urlstr的下載器的具體信息infos = (urlstr)。(TAG, not isFirst size= + ())。int size = 0。int peleteSize = 0。for (DownloadInfo info : infos) {peleteSize += ()。size += () () + 1。}return new LoadInfo(size, peleteSize, urlstr)。}具體的設(shè)計流程如下圖所示:39開始讀取選中的電子書的 URL 地址計算電子書長度根據(jù)設(shè)定的下載線程數(shù)將電子書文件分段是否為第一次下載讀取數(shù)據(jù)庫中信息是否繼續(xù)上次進(jìn)度下載連接網(wǎng)絡(luò)資源HttpURLConnection將下載信息保存進(jìn)數(shù)據(jù)庫啟動多個線程下載電子書暫停 繼續(xù)下載完成清空數(shù)據(jù)庫信息圖 510 電子書閱讀器在線下載設(shè)計流程圖40本文,通過對 Android 簡要介紹,概述了其眾多的優(yōu)點和其對整個智能手機乃至手機軟件開發(fā)行業(yè)的意義和重要性,闡明了其研究的重要性和必行性。然后,為了個好的了解和學(xué)習(xí) Android 應(yīng)用程序開發(fā)的系統(tǒng)邏輯結(jié)構(gòu)、體系結(jié)構(gòu)、設(shè)計流程選擇了在Google Android Market 上十分受用戶歡迎的電子書閱讀器作為畢業(yè)設(shè)計項目,并根據(jù)此項目自身的特點和 Android 平臺的特點,選取了相應(yīng)的開發(fā)工具,并對其做了簡單的介紹。根據(jù)項目本身的特點進(jìn)行了功能設(shè)計、數(shù)據(jù)庫設(shè)計和界面設(shè)計。通過完成 Android 手機電子書閱讀器項目的開發(fā)了解并熟悉了軟件開發(fā)的相關(guān)流程,特別是在手機開發(fā)這方面。并熟悉了 Android 平臺的相關(guān)特性,增強了自己的編碼能力、獨立動手能力和邏輯思考能力,為畢業(yè)以后的工作打下良好的基礎(chǔ)。在軟件開發(fā)的過程中發(fā)現(xiàn)現(xiàn)在在 Android 手機中十分流行的格式——EPub,它的文字內(nèi)容可以根據(jù)閱讀設(shè)備的特性,以最適于閱讀的方式顯示。EPub 檔案內(nèi)部使用了XHTML 或 DTBook (一種由 DAISY Consortium 提出的 XML 標(biāo)準(zhǔn))來展現(xiàn)文字、并以 zip壓縮格式來包裹檔案內(nèi)容。希望在電子書閱讀器退出下一版本時能夠加入支持此格式閱讀的功能。最后會把此次畢業(yè)設(shè)計項目發(fā)布到 Google Android Market 上,并根據(jù)用戶的反饋意見和使用情況進(jìn)行 BUG 的修改和功能的優(yōu)化。41 致 謝本課題的設(shè)計和論文撰寫過程中,我的指導(dǎo)老師給于了極大的幫助
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1