Android 將網(wǎng)絡(luò)的Url資源轉(zhuǎn)換為Drawable資源方式
Overview
在今天的開發(fā)學(xué)習(xí)中,我遇到了一個(gè)需求是在App的flash頁面添加bing每日一圖。這些都簡(jiǎn)單,但是當(dāng)我獲取到了圖片的Url時(shí),我就遇到了一個(gè)非常尷尬的問題。就是如何將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)建了一個(gè)Drawable
然后我們通過我們的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)用程序無響應(yīng)(ANR:Application Not Responding)對(duì)話框的情況。對(duì)于這種情況,一般的方法就是耗時(shí)操作用線程來實(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 {
// 可以在這里通過文件名來判斷,是否本地有此圖片
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使用android-wheel實(shí)現(xiàn)省市縣三級(jí)聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了Android使用android-wheel實(shí)現(xiàn)省市縣三級(jí)聯(lián)動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
Android開發(fā)實(shí)現(xiàn)按鈕點(diǎn)擊切換背景并修改文字顏色的方法
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)按鈕點(diǎn)擊切換背景并修改文字顏色的方法,涉及Android界面布局與相關(guān)屬性設(shè)置技巧,需要的朋友可以參考下2018-01-01
android判斷相機(jī)圖片朝向的簡(jiǎn)單方法
下面小編就為大家?guī)硪黄猘ndroid判斷相機(jī)圖片朝向的簡(jiǎn)單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03
Android 中 onSaveInstanceState()使用方法詳解
這篇文章主要介紹了Android 中 onSaveInstanceState()使用方法詳解的相關(guān)資料,希望通過本文大家能夠掌握這部分知識(shí),需要的朋友可以參考下2017-09-09
Android手機(jī)開發(fā) 使用線性布局和相對(duì)布局實(shí)現(xiàn)Button垂直水平居中
本文主要結(jié)合自己的理解分別對(duì)使用LinearLayout和RelativeLayout兩種方式實(shí)現(xiàn)居中做了總結(jié),希望對(duì)大家有所幫助。2016-05-05
Android?autojs隨時(shí)翻譯剪貼板單詞實(shí)現(xiàn)示例
這篇文章主要為大家介紹了Android?autojs隨時(shí)翻譯剪貼板單詞,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Android檢查手機(jī)網(wǎng)絡(luò)狀態(tài)及網(wǎng)絡(luò)類型的方法
這篇文章主要介紹了Android檢查手機(jī)網(wǎng)絡(luò)狀態(tài)及網(wǎng)絡(luò)類型的方法,涉及Android檢測(cè)手機(jī)網(wǎng)絡(luò)狀態(tài)的技巧,需要的朋友可以參考下2015-04-04

