- RecyclerView的上拉加載、下拉刷新怎么實現(xiàn)?RecyclerView原生實現(xiàn)側(cè)滑禽笑、拖動?
-
上拉加載蛤奥、下拉刷新
總結(jié):上拉加載更多功能實際上就是給RecyclerView增加一個FooterView佳镜,然后通過判斷是否滑動到了最后一條Item,來控制FooterView的顯示和隱藏凡桥。下載刷新同理蟀伸。 -
側(cè)滑和拖動:拖拽和側(cè)滑刪除的功能要借助
ItemTouchHelper
這個類,我們只需要創(chuàng)建出一個ItemTouchHelper
對象,然后調(diào)用mItemTouchHelper.attachToRecyclerView(recyclerView);
就可以了啊掏。
我們看一下ItemTouchHelper的構(gòu)造方法蠢络,他需要一個Callback
public ItemTouchHelper(Callback callback) {
mCallback = callback;
}
這個Callback是ItemTouchHelper的內(nèi)部類,所以我們需要寫一個類繼承自ItemTouchHelper.Callback 迟蜜,然后重寫里面的方法
- 數(shù)據(jù)的各種存儲方式
(1)SharedPreferences刹孔。適用于保存少量的數(shù)據(jù),且這些數(shù)據(jù)的格式非常簡單:字符串型娜睛、基本類型的值髓霞。比如應用程序的各種配置信息、解鎖口令密碼等畦戒。
(2)文件存儲數(shù)據(jù) 方库。文件存儲方式是一種較常用的方法,在 Android 中讀取/寫入文件的方法障斋,與 Java 中實現(xiàn) I/O 的程序是完全一樣的纵潦,提供了 openFileInput()和openFileOutput()方法來讀取設備上的文件。
(3)SQLite數(shù)據(jù)庫存儲數(shù)據(jù)垃环。SQLite 是 Android 所帶的一個標準的數(shù)據(jù)庫邀层,它支持SQL 語句,它是一個輕量級的嵌入式數(shù)據(jù)庫遂庄。
(4)使用ContentProvider存儲數(shù)據(jù)被济。主要用于應用程序之間進行數(shù)據(jù)交換,從而能夠讓其他的應用保存或讀取此 Content Provider 的各種數(shù)據(jù)類型涧团。
(5)網(wǎng)絡存儲數(shù)據(jù)。通過網(wǎng)絡上提供給我們的存儲空間來上傳(存儲)和下載(獲取)我們存儲在網(wǎng)絡空間中的數(shù)據(jù)信息经磅。 - 斷點續(xù)傳下載泌绣,續(xù)傳上傳
多線程下載的原理實際上與單線程下載的原理并無區(qū)別。
- 首先预厌,多線程下載只需要確定好下載一個文件需要多少個線程阿迈,一般來說最好為3條線程,因為線程過多會占用系統(tǒng)資源轧叽,而且線程間的相互競爭也會導致下載變慢苗沧。
- 然后,下載的時候?qū)⑽募指顬槿荩僭O用3條線程下載)下載炭晒。創(chuàng)建與下載文件同樣大小的空殼文件RandomAccessFile待逞,它的開始結(jié)束為止用以下代碼
conn.setRequestProperty("Range", "bytes=" + start + "-" + end)
確定。 - 最后就是斷點續(xù)傳了网严,只需要才程序停止下載的時候記錄下最后的下載位置就好了识樱,當下次下載的時候從當前停止的位置開始下載。
app在斷網(wǎng)情況下怎么保存用戶信息(數(shù)據(jù)緩存)
Android客戶端緩存機制是android應用開發(fā)中非常重要的一項工作了,使用緩存機制不僅可以為客戶節(jié)省流量怜庸,同時提高了用戶體驗当犯。分為文字緩存和多媒體文件緩存。
首先是文字緩存:將服務器交互得到的json數(shù)據(jù)存入sd卡中割疾,并在數(shù)據(jù)庫添加該數(shù)據(jù)的記錄嚎卫。添加數(shù)據(jù)庫記錄時,可以提供2個字段宏榕,請求到的Url和本地保存后的文件地址拓诸,每次加載數(shù)據(jù)之前都會根據(jù)Url在數(shù)據(jù)庫中檢索。
然后是媒體文件緩存:主要是圖片三級緩存担扑,現(xiàn)在流行的圖片加載框架都支持三級緩存恰响。如果是自己實現(xiàn)三級緩存,主要 用到的Lrucache涌献。Activity現(xiàn)場保存胚宦,現(xiàn)場恢復
- 現(xiàn)場保存:重寫onSaveInstanceState()方法,在此方法中保存需要保存的數(shù)據(jù)燕垃,該方法將會在activity被回收之前調(diào)用枢劝。
- 現(xiàn)場恢復:通過重寫 onRestoreInstanceState()方法可以從中提取保存好的數(shù)據(jù)