Android 將網(wǎng)絡(luò)的Url資源轉(zhuǎn)換為Drawable資源方式
Overview
在今天的開發(fā)學習中,我遇到了一個需求是在App的flash頁面添加bing每日一圖。這些都簡單,但是當我獲取到了圖片的Url時,我就遇到了一個非常尷尬的問題。就是如何將Url轉(zhuǎn)換為Drawabl并且添加到ImageView.
這邊的獲取圖片的Url就不說了。我們看一下如何將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ù)我們的源碼來分析一波:
首相我們創(chuàng)建了一個Drawable
然后我們通過我們的Url資源生成一個Drawable資源。
這樣我們的Url網(wǎng)絡(luò)資源,轉(zhuǎn)換為Drawable就完成。
補充知識:URL轉(zhuǎn)Drawable之 Android中獲取網(wǎng)絡(luò)圖片的三種方法
android中獲取網(wǎng)絡(luò)圖片是一件耗時的操作,如果直接獲取有可能會出現(xiàn)應(yīng)用程序無響應(yīng)(ANR:Application Not Responding)對話框的情況。對于這種情況,一般的方法就是耗時操作用線程來實現(xiàn)。下面列三種獲取url圖片的方法:
1.直接獲取:(容易:ANR,不建議)
mImageView = (ImageView)this.findViewById(R.id.imageThreadConcept) ; Drawable drawable = loadImageFromNetwork(IMAGE_URL); mImageView.setImageDrawable(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 ;
}
2. 后臺線程獲取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資源方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android帶進度條的文件上傳示例(使用AsyncTask異步任務(wù))
這篇文章主要介紹了Android帶進度條的文件上傳示例(使用AsyncTask異步任務(wù)),使用起來比較方便,將幾個方法實現(xiàn)就行,感興趣的小伙伴們可以參考一下。2016-11-11
android使用webwiew載入頁面使用示例(Hybrid App開發(fā))
Hybrid App 融合 Web App 的原理就是嵌入一個WebView組件,可以在這個組件中載入頁面,相當于內(nèi)嵌的瀏覽器,下面是使用示例2014-03-03

