[發明專利]一種智能終端實現筆記快速恢復的方法、存儲介質及電子設備有效
| 申請號: | 202110552351.3 | 申請日: | 2021-05-20 |
| 公開(公告)號: | CN113157167B | 公開(公告)日: | 2022-03-11 |
| 發明(設計)人: | 婁淵勝;季英會 | 申請(專利權)人: | 讀書郎教育科技有限公司 |
| 主分類號: | G06F3/0483 | 分類號: | G06F3/0483;G06F3/0485;G06F11/14 |
| 代理公司: | 廣州德偉專利代理事務所(普通合伙) 44436 | 代理人: | 何文穎 |
| 地址: | 528400 廣*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 智能 終端 實現 筆記 快速 恢復 方法 存儲 介質 電子設備 | ||
1.一種智能終端實現筆記快速恢復的方法,其特征在于,具體過程為:
筆記整體視圖分為下層的文章視圖和上層的筆記視圖;文章視圖可以上下滾動,定義為ArticleView,并且定義文章視圖的大小為在邏輯上將文章全部顯示出來后的整個視圖大小;用戶能看得到文章內容的區域定義為文章顯示區域,文章顯示區域位置始終是不變的,當上下劃屏滾動時實際上是文章視圖在上下滾動,文章視圖會實時把處于文章顯示區域位置內的文章內容展現出來;筆記視圖的大小和文章顯示區域大小相同,筆記視圖定義為NoteView,ArticleView在上下滾動過程中,可通過調用NoteView的回調函數把當前的滾動位置實時傳遞給NoteView,ArticleView當前的滾動位置定義為ArticleView.offsetY;
每篇文章的筆記分別保存到數據庫中的一個表中,把文章的唯一標識作為對應的表的表名;表中的數據結構為:
(id,left,top,right,bottom,png,noteNum,restoreNoteNum);
表中每項數據的數據結構定義為NoteItem; id為主鍵,其值大于或等于0,數據保存時數據庫自動賦唯一值,記為NoteItem.id;NoteItem中的(left,top,right,bottom)為筆記圖片相對于文章視圖的矩形區域,即筆記區域,用Rect(left,top,right,bottom)表示,記為NoteItem.rect;筆記區域是由用戶用畫筆做筆記時從down、move到up產生的所有點所組成的最小矩形區域取得,down、move到up分別表示畫筆放下、移動和抬起,left和top分別為區域左上角的橫坐標和縱坐標,right和bottom分別為區域右下角的橫坐標和縱坐標;NoteItem.png表示一張筆記的png圖片,png圖片的寬高與Rect表示的筆記區域的寬高是一樣的;NoteItem中的noteNum表示當前筆記在歷史中是第幾次保存,每次保存筆記,這個值都會在筆記總共保存的次數上加1,記為NoteItem.noteNum;NoteItem中的restoreNoteNum表示當前筆記是用來恢復歷史中的第幾次保存的筆記的,記為NoteItem.restoreNoteNum,只有舊的筆記區域被新的筆記區域覆蓋時,舊的筆記區域對應NoteItem.restoreNoteNum才被賦值為NoteItem.noteNum,其他情況都為0;
當在一篇文章里面打開筆記時,NoteView首先該文章對應的表中查詢所有NoteItem.noteNum,取最大的值,并在此基礎上+1后記錄此值到變量curNoteNum中;NoteView根據ArticleView.offsetY和NoteView的大小,得到NoteView相對于ArticleView的位置區域 Rect(left,top,right,bottom),定義該Rect值為noteViewRect;然后根據noteViewRect中的top和noteViewRect中的bottom在文章對應的表中查找所有處于noteViewRect內的筆記數據項,并添加到一個ArrayList類型的變量中,定義此變量為noteRectArrayList;
然后NoteView會遍歷noteRectArrayList中每項數據,根據每項數據的NoteItem.rect和ArticleView.offsetY確定每項筆記的NoteItem.png在NoteView中顯示時的左上角坐標,所述左上角坐標為(NoteItem.rect.left,NoteItem.rect.top -ArticleView.offsetY),NoteItem.rect.left和NoteItem.rect.top分別為該項筆記的NoteItem中記錄的left和top;然后按照確定的左上角坐標在NoteView的畫布上顯示各項筆記的NoteItem.png,顯示完NoteItem.png后把NoteItem.png賦值為null;
當滑動屏幕時,ArticleView上下滾動,noteViewRect.top、noteViewRect.bottom會實時變化,noteRectArrayList會移除不在noteViewRect內的筆記數據項,同時從數據庫中加載新進入noteViewRect內的筆記數據項;
當做筆記的時候,NoteView除了要展示所畫內容外,還要記錄下每次畫筆對應的down、move、up觸摸消息的坐標值,當收到up消息時表示畫筆已經抬起,這時NoteView將根據已經記錄的down,move,up的坐標值加上ArticleView.offsetY,得到此次筆記區域的Rect值,此筆記區域是能夠包括此次筆記操作所包含的down、move、up消息所有位置的最小矩形;根據此筆記區域創建一個新的筆記數據項NoteItem,并添加到noteRectArrayList中,該新的筆記數據項NoteItem.id為-1,表示無效主鍵,NoteItem.rect由筆記區域取得,NoteItem.png為null,NoteItem.noteNum為curNoteNum,NoteItem.restoreNoteNum為0;同樣地,再次拿起畫筆做筆記又會得到另一個新的筆記數據項NoteItem,并添加到noteRectArrayList;
保存筆記時,對于NoteItem.id為-1的數據項,根據NoteItem.rect再減掉ArticleView.offsetY得到筆記圖片在NoteView畫布中的區域,從畫布的bitmap中剪出筆記圖片并轉化成png字節流,然后賦值給NoteItem.png;遍歷noteRectArrayList,一方面保存所有NoteItem.id為-1的新筆記數據項到數據庫,保存之后數據庫自動為各筆記數據項的NoteItem.id賦予有效值;另一方面把所有NoteItem.id不為-1并且NoteItem.restoreNoteNum不為0的NoteItem中的NoteItem.restoreNoteNum寫回數據庫;
瀏覽筆記時,想恢復到上一次的筆記內容時,在加載筆記數據項時按照下面條件查找并加載:首先curNoteNum減2,因為NoteView進入時就自動加1了,再減少1表示最近一次保存筆記的上一次,然后根據下面這個條件查詢數據庫中滿足條件的所有數據項并加載顯示:
(NoteItem.bottomnoteViewRect.topNoteItem.topnoteViewRect.bottom(NoteItem.noteNum == curNoteNum || (NoteItem.noteNumcurNoteNumNoteItem.restoreNoteNum == 0)));
在具體加載時,通過NoteItem.id先遍歷NoteView中已經加載的數據項noteRectArrayList,只加載沒有加載的數據項,并且移除noteRectArrayList中最近一次保存的所有數據項,然后把noteRectArrayList中所有筆記數據項中的筆記png圖片顯示在畫布上。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于讀書郎教育科技有限公司,未經讀書郎教育科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110552351.3/1.html,轉載請聲明來源鉆瓜專利網。





