項目中有時候需要獲取網絡上的圖片,並下載下來到手機客戶端顯示。怎麼做呢?
實現思路是:
1:在UI線程中啓動一個線程,讓這個線程去下載圖片。
2:圖片完成下載後發送一個消息去通知UI線程
2:UI線程獲取到消息後,更新UI。
這裏的UI線程就是主線程。
這兩個步驟涉及到一些知識點,即是:ProgressDialog,Handler,Thread/Runnable,URL,HttpURLConnection等等一系列東東的使用。
現在讓我們開始來實現這個功能吧!
第一步:新建項目。
第二步:設計好UI,如下所示
第三步:獲取UI相應View組件,並添加事件監聽。
第四步:在監聽事件中處理我們的邏輯,即是下載服務器端圖片數據。
這裏我們需要講解一下了。
通常的我們把一些耗時的工作用另外一個線程來操作,比如,下載上傳圖片,讀取大批量XML數據,讀取大批量sqlite數據信息。爲什麼呢?答案大家都明白,用戶體驗問題。
在這裏,首先我構造一個進度條對話框,用來顯示下載進度,然後開闢一個線程去下載圖片數據,下載數據完畢後,通知主UI線程去更新顯示我們的圖片。
Handler是溝通Activity 與Thread/runnable的橋樑。而Handler是運行在主UI線程中的,它與子線程可以通過Message對象來傳遞數據。具體代碼如下:
我們在這裏彈出進度對話框,使用HTTP協議來獲取數據。
如此以來,你會發現很好的完成了我們的下載目標了,你可以把它應用到其他方面去,舉一反三。
運行截圖如下: