項目要求:
項目完成情況:
- 主功能實現:筆記的展示與全體筆記的刪除。
- 分支功能實現:筆記的添加,單個筆記的刪除與加密,最重要的是可以獲取手機本地相冊和授權相機進行拍照。
- 分支功能實現:彈出菜單實現,點擊設置按鈕修改密碼功能
注:地理位置將在007note2.0中由小灰灰實現。
功能實現詳解:
我在三人小組中參與了主頁面添加筆記功能的構建,單獨完成了主頁面的全部刪除功能以及edit頁面的單獨刪除功能,在之后添加了加密功能,完成彈出菜單以及修改密碼操作。
重點講講我單獨做出那幾個功能。
刪除功能:
首先是設置在主頁的全部刪除功能:
在上述代碼中,我利用菜單的響應事件,根據菜單中的item的id來判定響應事件,利用switch的優勢,判斷觸發的事件是不是全局刪除。如果是,代碼繼續執行。
定義一個文本類型變量et保存需要輸入的暗號密碼,輸入暗號后,點擊OK進入判斷,如果暗號符合,則進行數據庫數據刪除操作,暗號不符合則執行fail方法,提示密碼錯誤,然后再關閉對話框。
再者,是edit頁面的單獨刪除功能:
在EditActivity中,我仍然是用菜單的響應事件,根據菜單中的item的id來判定響應事件,利用switch判斷觸發的事件是不是單個記錄的刪除。
確定要刪除這條記錄時,傳mode=2和這條記錄的id到MainAcitivty中的接收方法onActivityResult中去。
那么MainActivity就對returnmode==2的情況進行操作,對已傳回id的那條記錄進行數據刪除操作。
加密功能實現:
加密功能的思路:首先我們確定一下加密需要應用到哪個地方,第一,在首頁點開加密記錄的時候需要一個密碼驗證;第二,在首頁全部刪除功能應用的時候應該進行密碼驗證;第三,在修改密碼的時候會驗證一下舊密碼。
然后考慮這個功能具體怎么實現,一開始,我想創建兩個獨立的數據庫,創建兩個主頁面存放兩個獨立的列表,在主列表里面放不需要加密的記錄,在保密界面列表存放需要加密的記錄,然后在兩個頁面的menu上面放一個轉換頁面的按鈕,點擊按鈕就會跳轉頁面,在從主頁面往保密頁面跳轉的時候利用一個dialog進行密碼輸入和判斷。但是最后這個想法在我始終捋不清兩個數據庫和活動的發射之后破產,歷時兩天掙扎。
思路更改:我就在edit編輯頁面的menu上面設置一個保密狀態轉換的按鈕,就是那個傘型的按鈕,點一下就會將正在編輯的記錄轉為保密狀態,在想要點開這條記錄的時候就需要在彈出的dialog中輸入正確的密碼。
那么我就想到在每條記錄中多加入一個屬性,用來判斷這條記錄的保密狀態,於是,我定義了一個flag變量,如下面代碼所示:
其實這里flag應該設置為布爾值的,但是搞成數值也不大錯,,,沒有默認值。
來看看具體實現的代碼:
這里我用了onItemClick點擊事件來判斷點擊的是第幾條記錄,然后獲取這條記錄的flag值,如果flag值為零,那么就用intent.putExtra先EditActivity傳值,重要的是mode值為3,表示這次是已經創建過了的記錄的再次打開,且flag仍為0,進行跳轉到edit頁面。
如果這條記錄已經為改變成保密狀態了,那么flag==1,驗證輸入密碼的正確性,如果正確,就進行傳值與跳轉,但是flag傳過去的值就為1。如果密碼錯誤,就彈出一個dialog提醒一下密碼錯誤。
這一段就是在edit頁面完成的一個保密狀態的轉換,沒有太過優化,主要就是改變一下這條記錄的flag值,是1就變0,是0就變1。沒什么值得說的。
加密差不多主要就是這些了,下一個。
彈出菜單
首先在MainActivity里面聲明了很多組件工具,參考了別人的代碼結構。
然后是一大堆我看不懂的渲染代碼,
這里要注意,一共是有兩層layout彈出了一個customView,一個coverView,第一層就是我們需要的彈出的菜單,第二層是一個襯托第一層的蒙版。
再來一個經典的showPopUpView將主彈窗的寬度設置為屏幕的70%,營造彈窗的效果,讓主彈窗在蒙版的上面防止蒙版遮擋,將id為setting_img和setting_text的組件設置點擊事件,調用我設置的dialog方法。
這個dialog方法就是用來更改密碼的,可以輸入old_code和new_code,如果舊密碼驗證正確,那么就改變code,調用success方法來提醒修改成功,驗證失敗會調用fail方法提醒密碼錯誤。
好了都說完了,總結一下,這個考核項目我們小組除去地理位置獲取(那個授權出了問題,還在解決)一共用時5天完成要求的功能,其余時間都用來學JavaScript,,,簡簡單單,也都是從零開始學安卓,靠着一點Java基礎,一點點吃透別人的代碼,轉化成自己的代碼。
完結撒花。