新建 Microsoft Word 文檔
安卓期末大作業(yè)
30個
源碼鏈接:https://yunjunet.cn/568075.html源碼鏈接:https://yunjunet.cn/568075.html
計算機學院
項?目 報 告
2020 - 2021 學年 第 2 學期
課程名稱:?Android移動開發(fā)技術
項目名稱:?單詞本
學生姓名:
小組成員:
2021年 6 月
題目:單詞本APP
1需求分析與系統(tǒng)設計
1.項目介紹
此項目是一個幫助記憶單詞的單詞本,用戶輸入要記憶的單詞,系統(tǒng)會自動保存到sqllte數(shù)據(jù)庫中,用戶可以自行設置界面風格。設置單詞記憶順序等,可以查找單詞,刪除單詞,以及隱藏中文??梢詭椭脩舾玫挠洃泦卧~。
1.功能需求
1.單詞本可以通過用戶輸入中英文,來實現(xiàn)單詞的添加。
2.用戶可以隨意開關某個單詞的中文釋義
3.用戶可以刪除已經(jīng)添加的單詞
4.用戶關機或者退出應用不會導致單詞本內(nèi)的單詞丟失
5.用戶可以自定義單詞本中單詞的順序
6.可以選擇自己喜歡的界面風格
7.用戶可以快捷的查找某個單詞在有道上的詳細信息
8.用戶可以查找某個單詞
1.功能需求及示意圖
用戶點擊加號按鈕輸入單詞,鍵盤會自動彈出并焦點在輸入框,用戶輸入英文和中文釋義,單詞本上將在最上面顯示這個單詞,并會有下拉動畫。用戶可以通過上方放回箭頭取消輸入。
用戶可以通過單詞盤邊的按鈕來關閉或開啟中文意思
向右滑可以刪除單詞,同時底部有提示信息,可以撤銷刪除,點擊撤銷可以還原被刪除的單詞
長按拖住上下滑動可以設置單詞的優(yōu)先級
??????
搜索可以搜索相關的單詞
??????
菜單可以選擇切換界面或者刪除全部單詞,將以卡片/列表顯示單詞
注:由于時間倉促,該部分的示意圖以截圖的形式替代。
1.4本程序需解決的有關技術問題
1. CardView 和 constraintLayout的布局切換
2.通過繼承asyncTask實現(xiàn)多線程查詢數(shù)據(jù)庫
3.查詢數(shù)據(jù)庫過程中多個類的調(diào)用和封裝解耦,模塊化開發(fā)
4.通過livedate監(jiān)聽數(shù)據(jù)變化來改變視圖顯示。
5.如何通過滑動刪除單詞和如何改變單詞位置
6.各個framgement之間的切換導航
1.5程序流程
1.程序啟動后先通過MainActivity的onCreate方法
1.進入wordsFramgment類,通過MyAdaper new出單詞列表
1.當通過監(jiān)聽WordViewModel發(fā)現(xiàn)數(shù)據(jù)發(fā)生改變時,會同時增刪改單詞列表條數(shù)
1.對數(shù)據(jù)改變的方法通過WordViewModel類中的方法調(diào)用WordReposity中的方法再調(diào)用WordDatabase或WordDao中的方法進行增刪改或者查詢
5.通過Word 建立數(shù)據(jù)庫表和映射關系。
2系統(tǒng)實現(xiàn)
2.1類分析與設計
(1)Word類:
1.這個這個類定義了單詞條目的屬性:id word chineseWord chineseInvisible 并同時映射到數(shù)據(jù)庫對應的屬性字段;
2.定義了set/get方法用于存取數(shù)據(jù)
(2)WordDao類:
1.dao層用注解定義了增刪改查方法
對于復雜查詢,再注解中定義了sql語句:
A.
B.模糊查詢并按倒敘排序
(3)WordDatabase類:
1.利用單例工廠模式,new了一個WordDataBase類,這個類繼承了RoomDatabase,建立了數(shù)據(jù)庫,用來通過getDatabase來實例化WordDao
Static 可以不需要new 就可以調(diào)用方法
Synchronized同步塊只有一個再執(zhí)行,反正多線程而new了多個實例
此方法構(gòu)建并返回一個wordDao。同時此方法中還包含數(shù)據(jù)庫的升級及修改方法
(4)WordRepository類:
1.多線程調(diào)用WordDao的方法完成增刪改查。
2.主要功能是實現(xiàn)多線程
(5)WordViewModel類:
1.通過調(diào)用WordRepository類的方法完成增刪改查
2.主要功能是處理數(shù)據(jù)相關功能,返回的LiveData可以監(jiān)控數(shù)據(jù)變化,并再變化時調(diào)用相應方法來處理視圖等。
(6)MainActivity類:
1.設置了視圖導航。
2.重寫了返回鍵的方法
(7)AddFragment類:
1.定義了添加單詞界面的功能
2.進入界面后,將輸入框聚焦在英語輸入框上,并彈出鍵盤。
3.點擊添加按鈕后,通過WordViewModel將數(shù)據(jù)寫入數(shù)據(jù)庫,并通過導航回到主界面
(8)MyAdapter類
1.通過點擊單詞條,用intent并傳入一個網(wǎng)址可以跳到有道詞典搜索
2.通過查詢數(shù)據(jù)庫ChineseInvisible字段,初始化設置是否顯示中文釋義
(9)WordFragment類
1搜索功能
2.在WordsFragment中設置了菜單功能,點擊清空數(shù)據(jù)會彈出alertDialog對話框,若選擇確認,則調(diào)用wordViewModel中的deleteAll()方法刪除所以數(shù)據(jù);點擊切換視圖時,會先在SharePreferences中獲得現(xiàn)在時什么視圖的值,然后調(diào)用recyclerView的方法設置另一個視圖。
3.用onChildDraw畫滑動后面的灰色陰影和垃圾桶圖標
4.點擊懸浮按鈕跳到添加單詞界面
5.移動單詞和滑動刪除單詞功能
2.2 界面布局
2.3關鍵實現(xiàn)
1.在AddFramgent中,若輸入框兩個都不為空,設置添加按鈕可用
2.在MyAdapter中,監(jiān)聽開關,若發(fā)生改變顯示/隱藏中文釋義,同時修改數(shù)據(jù)庫中ChineseVisible字段的值。
3.在WordsFragment中設置了菜單功能,點擊清空數(shù)據(jù)會彈出alertDialog對話框,若選擇確認,則調(diào)用wordViewModel中的deleteAll()方法刪除所以數(shù)據(jù);點擊切換視圖時,會先在SharePreferences中獲得現(xiàn)在時什么視圖的值,然后調(diào)用recyclerView的方法設置另一個視圖。
4.滑動刪除后會彈出一個snackbar,點擊即可撤銷刪除
5.onMove()方法處理長按拖動事件,發(fā)生拖動時,替換兩個Word的id,livedate檢測到數(shù)據(jù)發(fā)生改變,就重新繪畫界面
3系統(tǒng)測試
3.1程序存在的問題
(1)再添加單詞頁面點擊上方或下方的返回,鍵盤不會消失
解決方法:再AddFagment中button觸發(fā)方法中添加鍵盤回縮方法:
(2)在添加單詞頁面中,沒有自動聚焦到英語單詞輸入框
解決方法:再onActivityCreate中添加方法
(3)若長按拖動速度過快,會導致有些單詞的中文意思會自動隱藏。
(4)列表界面單詞之間的分界不夠明顯
解決方法?再每個列表條目上添加下劃線。
1.在部分手機版本中會出現(xiàn)搜索后單詞丟失bug;
3.2運行過程示例
(1)添加單詞:---單詞添加成功
(2)刪除單詞:---刪除單詞成功
(3)中文釋義顯示/隱層:-成功
(4)切換視圖:-成功
(5)搜索功能:--成功
(6)點擊單詞后跳到有道詞典搜索詳細詳細 --成功
4總結(jié)與建議
本課程學習了andorid的開發(fā),經(jīng)過本次項目,對android開發(fā)的整體把握更加清楚。
通過模塊化開發(fā),對每個類更加清楚,對liveData..SharePreference..navigation等類的使用和數(shù)據(jù)庫的操作有了更加深入的理解。