Android中網狀圖片的非同步載入

來源:互聯網
上載者:User

 

最近自己在試著使用Android開發一個新浪微薄的手機用戶端,學習Android 的應用開發,來做點筆記吧。

主要講講ListView的使用過程中的一些問題。

我從新浪伺服器擷取資料,有文本有圖片,通過圖片的URL來載入圖片,但是在Android的SDK中ListView預設的是不能支援通過URL來載入網狀圖片的,需要自己重寫其中的SDK的默寫類中的方法。我們知道,ListView一般是配合ListActivity使用的,在使用時需要傳入SimpleAdatper對象來和資料進行綁定,我通過閱讀SimpleAdapter的源碼發現,只要我們改寫七種的方法setViewImage的實現即可以達到目的。

一開始我是這樣改的:

public void setViewImage(ImageView v, String value) {<br /> Bitmap bmp = BitmapFactory.decodeStream(new URL(value).openStream);<br /> v.setImageBitmap(bmp);<br />}  

 

但是啟動並執行時候發現介面很容易就死掉了,無法動彈,使用者體驗不行。

細想,手機用戶端訪問網路的速度顯然是不能和PC相比的,哪怕小小的圖片檔案可能也需要很長的一段時間,何況是一個列表有好多個待下載的圖片呢,不死才怪。

於是乎想到非同步下載圖片,於是重寫setViewImage()函數的實現:

public void setViewImage(ImageView v, String value) {<br /> new ImageDownloadTask().execute(value, v);<br />}<br />private class ImageDownloadTask extends AsyncTask<Object, Object, Bitmap>{<br /> private ImageView imageView = null;<br /> @Override<br /> protected Bitmap doInBackground(Object... params) {<br /> // TODO Auto-generated method stub<br /> Bitmap bmp = null;<br /> imageView = (ImageView) params[1];<br /> try {<br /> bmp = BitmapFactory.decodeStream(new URL((String)params[0]).openStream());<br /> } catch (MalformedURLException e) {<br /> // TODO Auto-generated catch block<br /> e.printStackTrace();<br /> } catch (IOException e) {<br /> // TODO Auto-generated catch block<br /> e.printStackTrace();<br /> }<br /> return bmp;<br /> } </p><p> protected void onPostExecute(Bitmap result){<br /> imageView.setImageBitmap(result);<br /> }<br /> }  

這下好了,使用者可以首先看到顯示的文本資訊,圖片可以在使用者瀏覽文字的同時多線程的下載,不會影響使用者體驗。

:

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.