Android 將網(wǎng)絡(luò)的Url資源轉(zhuǎn)換為Drawable資源方式
Overview
在今天的開(kāi)發(fā)學(xué)習(xí)中,我遇到了一個(gè)需求是在App的flash頁(yè)面添加bing每日一圖。這些都簡(jiǎn)單,但是當(dāng)我獲取到了圖片的Url時(shí),我就遇到了一個(gè)非常尷尬的問(wèn)題。就是如何將Url轉(zhuǎn)換為Drawabl并且添加到ImageView.
這邊的獲取圖片的Url就不說(shuō)了。我們看一下如何將Url轉(zhuǎn)換為Drawable.
Url轉(zhuǎn)換為Drawable
我們先看一下源碼:
private Drawable loadImageFromNetwork(String imageUrl) { Drawable drawable = null; try { drawable = Drawable.createFromStream( new URL(imageUrl).openStream(), "image.jpg"); } catch (IOException e) { Log.d("test", e.getMessage()); } if (drawable == null) { Log.d("test", "null drawable"); } else { Log.d("test", "not null drawable"); } return drawable; }
這部分就是我們將網(wǎng)絡(luò)Url資源轉(zhuǎn)換為Drawable資源了。
然后我們根據(jù)我們的源碼來(lái)分析一波:
首相我們創(chuàng)建了一個(gè)Drawable
然后我們通過(guò)我們的Url資源生成一個(gè)Drawable資源。
這樣我們的Url網(wǎng)絡(luò)資源,轉(zhuǎn)換為Drawable就完成。
補(bǔ)充知識(shí):URL轉(zhuǎn)Drawable之 Android中獲取網(wǎng)絡(luò)圖片的三種方法
android中獲取網(wǎng)絡(luò)圖片是一件耗時(shí)的操作,如果直接獲取有可能會(huì)出現(xiàn)應(yīng)用程序無(wú)響應(yīng)(ANR:Application Not Responding)對(duì)話(huà)框的情況。對(duì)于這種情況,一般的方法就是耗時(shí)操作用線程來(lái)實(shí)現(xiàn)。下面列三種獲取url圖片的方法:
1.直接獲?。海ㄈ菀祝篈NR,不建議)
mImageView = (ImageView)this.findViewById(R.id.imageThreadConcept) ; Drawable drawable = loadImageFromNetwork(IMAGE_URL); mImageView.setImageDrawable(drawable) ;
公用方法:
private Drawable loadImageFromNetwork(String imageUrl) { Drawable drawable = null; try { // 可以在這里通過(guò)文件名來(lái)判斷,是否本地有此圖片 drawable = Drawable.createFromStream( new URL(imageUrl).openStream(), "image.jpg"); } catch (IOException e) { Log.d("test", e.getMessage()); } if (drawable == null) { Log.d("test", "null drawable"); } else { Log.d("test", "not null drawable"); } return drawable ; }
2. 后臺(tái)線程獲取url圖片:
mImageView = (ImageView)this.findViewById(R.id.imageThreadConcept) ; new Thread(new Runnable(){ Drawable drawable = loadImageFromNetwork(IMAGE_URL); @Override public void run() { // post() 特別關(guān)鍵,就是到UI主線程去更新圖片 mImageView.post(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub mImageView.setImageDrawable(drawable) ; }}) ; } }).start() ;
3.AsyncTask獲取url圖片
mImageView = (ImageView)this.findViewById(R.id.imageThreadConcept) ; new DownloadImageTask().execute(IMAGE_URL) ; private class DownloadImageTask extends AsyncTask<String, Void, Drawable> { protected Drawable doInBackground(String... urls) { return loadImageFromNetwork(urls[0]); } protected void onPostExecute(Drawable result) { mImageView.setImageDrawable(result); } }
以上這篇Android 將網(wǎng)絡(luò)的Url資源轉(zhuǎn)換為Drawable資源方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android簡(jiǎn)單實(shí)現(xiàn)引導(dǎo)頁(yè)
這篇文章主要為大家詳細(xì)介紹了Android簡(jiǎn)單實(shí)現(xiàn)引導(dǎo)頁(yè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04Android加載Gif動(dòng)畫(huà)實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Android加載Gif動(dòng)畫(huà)實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10Android帶進(jìn)度條的文件上傳示例(使用AsyncTask異步任務(wù))
這篇文章主要介紹了Android帶進(jìn)度條的文件上傳示例(使用AsyncTask異步任務(wù)),使用起來(lái)比較方便,將幾個(gè)方法實(shí)現(xiàn)就行,感興趣的小伙伴們可以參考一下。2016-11-11android使用webwiew載入頁(yè)面使用示例(Hybrid App開(kāi)發(fā))
Hybrid App 融合 Web App 的原理就是嵌入一個(gè)WebView組件,可以在這個(gè)組件中載入頁(yè)面,相當(dāng)于內(nèi)嵌的瀏覽器,下面是使用示例2014-03-03