




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、XXX大學移動互聯網開發技術大作業報告 題 目: 電子書APP-書屋 學生姓名: 學 號: 學 院: 專業班級: 完成日期: 2020年 10 月 20 日成績(百分制): 授課教師: 目錄目錄21功能描述11.1總體界面11.2書架模塊21.2.1顯示目錄31.2.2設置主題31.2.3設置翻頁效果41.2.4設置字體樣式41.2.5調節字體大小51.2.6設置字體顏色61.2.7添加書簽61.2.8顯示書簽列表71.2.9清空書簽列表71.3用戶模塊81.3.1用戶注冊81.3.2用戶登錄92程序結構102.1整個工程包含的所有JAVA文件102.2整個工程包含的所有布局文件113詳細設計
2、123.1主模塊設計123.1.1主模塊流程圖123.1.2主模塊關鍵代碼123.2書架模塊設計133.2.1書架模塊流程圖133.2.2書架模塊關鍵代碼133.3用戶模塊設計173.1.1用戶模塊流程圖173.1.2用戶模塊關鍵代碼183.4數據庫設計204運行效果225總結301 功能描述這款電子書APP主要有三個大模塊,我的、書城、書架。分別的功能是用戶中心,網上書城,我的書架。APP截圖:圖1.1 電子書APP運行在手機上的效果1.1 總體界面書城:可閱讀網上的電子書圖1.2 APP整體樣式1.2 書架模塊點擊書架跳轉到書架,初始界面有很多本地電子書圖1.3 書架界面打開任意一本電子書
3、,所具有的功能:主要有 目錄、設置、字體、書簽幾個模塊圖1.4 電子書界面1.2.1顯示目錄點擊目錄按鈕,顯示目錄。點擊目錄可跳轉到對應章節圖1.5 電子書的目錄顯示1.2.2設置主題點擊設置按鈕里面有四種主題樣式,點擊可更換主題。點擊護眼主題查看效果顏色換成了偏綠色,點擊夜間主題顏色就會換成黑色,對應主題都會有對應樣式。圖1.6 更改閱讀主題1.2.3設置翻頁效果點擊設置按鈕,顯示翻頁效果的設置,這里有三種翻頁效果的設置分別是,仿真翻頁、覆蓋翻頁、無效果。選擇仿真翻頁查看效果。仿真翻頁的效果就類似真實翻書的翻頁的效果。圖1.7 更改翻頁效果1.2.4設置字體樣式點擊字體按鈕,可以更改顯示的字
4、體樣式,顯示現在使用的是默認字體。我們可以點擊其他字體。圖1.8 字體樣式點擊切換字體樣式使用幼圓字體,查看顯示效果和默認字體不一樣圖1.9 更改字體樣式1.2.5調節字體大小點擊設置按鈕,顯示設置字體大小的功能,拖動設置字體的字體條來改變字體的大小,現在是拖到了最大。圖1.10 調節字體大小1.2.6設置字體顏色點擊字體按鈕,看到有設置字體顏色選擇藍色樣式,查看效果字體顏色變成了藍色。圖1.11 更改字體顏色1.2.7添加書簽點擊書簽按鈕,給當前閱讀也添加書簽圖1.12 添加書簽1.2.8顯示書簽列表長按書簽按鈕,顯示書簽列表和每個書簽添加的時間,列表里是閱讀是添加的書簽。圖1.13 查看書
5、簽列表1.2.9清空書簽列表長按書簽按鈕,點擊書簽列表的垃圾桶樣式按鈕即可清空書簽列表,查看效果。圖1.14 清空書簽列表1.3 用戶模塊點擊用戶按鈕,跳轉到用戶模塊。圖1.15 用戶模塊1.3.1用戶注冊點擊用戶登錄跳轉到用戶登錄頁面,點擊頁面上的注冊按鈕注冊用戶。圖1.16 用戶注冊1.3.2用戶登錄點擊用戶登錄,用注冊過的用戶進行登錄。圖1.17 用戶登錄2 程序結構2.1 整個工程包含的所有JAVA文件圖2.1 整個工程所有JAVA文件的功能2.2 整個工程包含的所有布局文件圖2.2 整個工程所有布局文件3 詳細設計3.1 主模塊設計3.1.1主模塊流程圖整體模塊分為三個模塊,主模塊的
6、功能主要是讓我們可以進入不同的模塊,去閱讀線上的電子書籍。圖3.1 整體模塊流程圖3.1.2主模塊關鍵代碼Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); WebView webView = findViewById(R.id.id_webView); webView.getSettings().setJavaScriptEnabled(true); webView.setW
7、ebViewClient(new WebViewClient(); webView.loadUrl(/); public void doBookrack(View v) Intent intent = new Intent(MainActivity.this,ShelfActivity.class); startActivity(intent); public void doUser(View v) Intent intent = new Intent(MainActivity.this,UserActivity.class); startActivity
8、(intent);3.2 書架模塊設計3.2.1書架模塊流程圖圖3.2 書架模塊流程圖3.2.2書架模塊關鍵代碼電子書閱讀顯示Overrideprotected void setScreen() /全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);功能菜單的四個功能按鈕 Override public void onClick(View v) switch (v.getId() case R.id.button_conte
9、nt: /設置出現動畫和位置 mContentPopup.setAnimationStyle(R.style.pop_window_anim_style); mContentPopup.showAsDropDown(mBottomBar, 0, -mContentPopup.getHeight(); lightOff(); break; case R.id.button_setting: int xOff = (mBottomBar.getWidth() - mSettingPopup.getWidth() / 2; int yOff = -mSettingPopup.getHeight()
10、- mBottomBar.getHeight() / 6; mSettingPopup.setAnimationStyle(R.style.pop_window_anim_style); mSettingPopup.showAsDropDown(mBottomBar, xOff, yOff); break; case R.id.button_font: mFontPopup.setAnimationStyle(R.style.pop_window_anim_style); mFontPopup.showAsDropDown(mBottomBar, 0, -mFontPopup.getHeigh
11、t(); lightOff(); break; case R.id.button_label: saveLabel(); Toast.makeText(mContext, 書簽已添加,長按顯示書簽列表, Toast.LENGTH_SHORT).show(); break; 書簽存入數據庫 private void saveLabel() Time time = new Time(); time.setToNow(); / 取得系統時間。 String timeStr = time.year + / + time.month + / + time.monthDay; ReadInfo readI
12、nfo = mBookPageFactory.getReadInfo(); String objectStr = SaveHelper.serObject(readInfo); Label label = new Label(); label.setBookId(mBookId); label.setDetails(mBookPageFactory.getCurContent(); label.setProgress(mBookPageFactory.getPercentStr(); label.setTime(timeStr); label.setPrePageOver(mFlipView.
13、isPrePageOver(); label.setReadInfoStr(objectStr); label.save();目錄功能主要實現代碼private class ContentsAdapter extends RecyclerView.Adapter private List mBookContents; public ContentsAdapter(List bookContents) mBookContents = bookContents; Override public ContentsHolder onCreateViewHolder(ViewGroup parent,
14、int viewType) LayoutInflater inflater = LayoutInflater.from(mContext); View view = inflater.inflate(android.R.layout.simple_list_item_1, parent, false); return new ContentsHolder(view); Override public void onBindViewHolder(ContentsHolder holder, int position) holder.bind(mBookContents.get(position)
15、, position); Override public int getItemCount() return mBookContents.size(); public void setBackgroundColor(int color) mLinearLayout.setBackgroundColor(color);設置功能主要實現代碼private void setCurThemeBtn() Button usedButton = mThemeBtnsmTheme; for (int i = 0; i mThemeBtns.length; i+) / 設置背景填充顏色 GradientDra
16、wable drawable = (GradientDrawable) mThemeBtnsi.getBackground(); drawable.setColor(mPopupColorsi); /設置邊框顏色 if (mThemeBtnsi.getId() = usedButton.getId() int strokeColor = mStrokeColorsi; drawable.setStroke(5, strokeColor); else drawable.setStroke(5, mPopupColorsi); /未選擇button的邊框顏色和填充顏色一致 private void
17、 setCurSeekBarStyle() for (SeekBar seekBar : mSeekBars) /獲取seekBar的layer-list drawable對象 LayerDrawable layerDrawable = (LayerDrawable) seekBar.getProgressDrawable(); /層次包括背景圖和進度,所以進度直接設為1,獲取并設置進度條背景 Drawable drawable = layerDrawable.getDrawable(1); drawable.setColorFilter(mStrokeColorsmTheme, Porter
18、Duff.Mode.SRC); /獲取thumb背景 Drawable thumb = seekBar.getThumb(); thumb.setColorFilter(mStrokeColorsmTheme, PorterDuff.Mode.SRC); 字體功能主要實現代碼 private void initViews() mTextColors = new int 0xff, /黑 0x8A, /常規 0xffa9a8a8, /夜間 0xfbe6e3e3, /白 0xff486c94, /藍 ; Override public void onClick(View v) int typeIn
19、dex = mTypeIndex; int color = 0; for (int i = 0; i mButtons.length; i+) if (v.getId() = mButtonsi.getId() typeIndex = i; break; for (int i = 0; i mFabs.length; i+) if (v.getId() = mFabsi.getId() color = mTextColorsi; break; /改變字體 if (typeIndex != mTypeIndex) mTypeIndex = typeIndex; setUsedButton();
20、if (mListener != null) mListener.onTypefaceSelected(mTypeIndex); /改變顏色 if (color != 0) if (mListener != null) mListener.onColorSelected(color); 3.3 用戶模塊設計3.1.1用戶模塊流程圖圖3.3 用戶模塊流程圖3.1.2用戶模塊關鍵代碼用戶管理類方法主要實現代碼,增加用戶,檢測用戶 /增加 public boolean insertUser(String name,String password) User user = new User(); us
21、er.setName(name); user.setPassword(password); /創建數據庫 LitePal.getDatabase(); return user.save(); /通過用戶名查找用戶是否存在 public boolean findUserByName(String name) List users = LitePal.findAll(User.class); for(User person: users) if(name.trim().equals(person.getName() return false; return true; /查找密碼是否正確 publ
22、ic boolean findUser(String password) List users = LitePal.findAll(User.class); for(User person: users) if(password.trim().equals(person.getPassword() return false; return true;用戶注冊 private void register_check() if(isUserNameAndPwdValid() boolean flag; String name = mAccount.getText().toString().trim
23、(); String password = mPwd.getText().toString().trim(); String rePassword = mPwdCheck.getText().toString().trim(); flag = userManager.findUserByName(name); if(!flag) Log.d(tag,注冊失敗); Toast.makeText(this, 用戶名已經存在,Toast.LENGTH_SHORT).show(); return ; if(!password.equals(rePassword) Toast.makeText(this
24、, 輸入的密碼不同,Toast.LENGTH_SHORT).show(); return ; else flag=userManager.insertUser(name,password); if(!flag) Toast.makeText(this,注冊失敗,Toast.LENGTH_LONG).show(); return ; Toast.makeText(this,注冊成功,Toast.LENGTH_LONG).show(); List people = LitePal.findAll(User.class); for(User person: people) Log.d(Registe
25、rActivity,person name is+person.getName(); Log.d(RegisterActivity,person password is+person.getPassword(); Intent intent_Register_to_Login = new Intent(RegisterActivity.this,LoginActivity.class) ; /切換User Activity至Login Activity startActivity(intent_Register_to_Login); finish(); 用戶登錄 if(isUserNameAn
26、dPwdValid() boolean flag,flag2; / 取得用戶界面輸入 String username = name.getText().toString(); String password = pass.getText().toString(); flag = userManager.findUserByName(username); flag2 = userManager.findUser(password); if(flag) Toast.makeText(this, 該用戶不存在,Toast.LENGTH_SHORT).show(); return ; if(flag2
27、) Toast.makeText(this, 輸入的密碼不正確,Toast.LENGTH_SHORT).show(); return ; /進入主界面 Intent intent = new Intent(LoginActivity.this,MainActivity.class); intent.putExtra(username,username); startActivity(intent); finish(); 3.4 數據庫設計數據庫利用了第三方數據庫框架LitePal,LitePal是一款開源的Android數據庫框架采用對象關系映射(ORM)模式,將常用的數據庫功能進行封裝,可以
28、不用寫一行SQL語句就可以完成創建表、增刪、改、查的操作。實現過程(1)添加依賴圖3.4添加數據庫依賴(2)新建assets目錄,然后創建litepal.xml資源文件,用于創建數據庫名稱,數據庫版本、表名、數據庫存放位置圖3.5 數據庫資源文件數據庫資源文件內容 數據庫實體類,用戶實體類,電子書實體類public class User extends LitePalSupport public String name; /用戶名 public String password; /密碼 public User() public class Label extends DataSupport p
29、rivate int mBookId; private String mDetails; private String mProgress; private String mTime; private boolean isPrePageOver;private String readInfoStr; /readInfo對象序列化編碼后的String 4 運行效果打開應用程序,進入主界面查看整體效果首先打開APP進入引導頁圖4.1 程序開始頁圖4.2 主頁面運行效果點擊書架按鈕跳轉到書架頁面圖4.3 書架頁面運行效果點擊任意一本電子書查看運行效果圖4.4 電子書閱讀效果點擊屏幕底部顯示出功能按鈕圖4.5 閱讀時功能按鈕顯示效果點擊功能按鈕-目錄查看效果4.6 顯示整部電子書的目錄點擊目錄跳轉到第九章,查看效果圖4.7 目錄跳轉效果點擊功能按鈕設置 查看效果
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人事行政方面培訓
- 低空經濟公司成立可行性分析報告
- 航空航天產業園項目可行性研究報告
- 新年旅游市場展望
- 三年級語文下冊 第七單元 22《我們奇妙的世界》教學設計 新人教版
- 體育文化節探索
- 1三衢道中教學設計-2023-2024學年統編版語文三年級下冊
- Module 10Unit 1 Did you fall off your bike?(教學設計)-2023-2024學年外研版(三起)英語四年級下冊
- 《打麥號子》 (教學設計)-2024-2025學年湘藝版(2012)音樂六年級上冊
- 22為中華之崛起而讀書教學設計-2024-2025學年四年級上冊語文統編版
- 部編版歷史八年級下冊第四單元 第14課《海峽兩岸的交往》說課稿
- GB/T 30595-2024建筑保溫用擠塑聚苯板(XPS)系統材料
- 《中華人民共和國突發事件應對法》知識培訓
- 《智能家居系統》課件
- 胖東來企業文化指導手冊
- 注射相關感染預防與控制(全文)
- 古詩閱讀賞析泊船瓜洲
- 熔斷器安裝施工方案
- 中深層無干擾地熱供熱系統應用技術規程
- 六年級下冊美術教學設計-第3課《記錄色彩》人教新課標
- 國開(山西)2024年《使用法律基礎》形考作業1-4答案
評論
0/150
提交評論