Android开发-下载网络图片并显示到本地
Android下載網(wǎng)絡(luò)圖片的流程是:
發(fā)送網(wǎng)絡(luò)請求->將圖片以流的形式下載下來->將流轉(zhuǎn)換為Bitmap并賦給ImageView控件。
注意點
- 最新的Android系統(tǒng)不可以在主線程上請求網(wǎng)絡(luò),需要使用線程來請求
- 下載圖片屬于耗時任務(wù),最優(yōu)做法是放在一個AsyncTask中操作
設(shè)計思路
1.網(wǎng)絡(luò)請求:該例中需要下載的文件類型是圖片類型,可以將網(wǎng)絡(luò)請求獲取的數(shù)據(jù)類型轉(zhuǎn)換為Bitmap已供ImageView直接使用,但是一個合理的網(wǎng)絡(luò)請求類的設(shè)計是將下載的數(shù)據(jù)類型轉(zhuǎn)換為最基本的InputStream,這樣不管是下載圖片,音頻,文本還是視頻,都可以將結(jié)果拋出去讓上層的邏輯來處理。
2.異步請求:下載圖片,網(wǎng)絡(luò)下載屬于耗時操作,所以需要封裝一個AsyncTask來處理網(wǎng)絡(luò)請求,該請求繼承自Runnable接口。
3.異步回調(diào):前臺需要通過回調(diào)的方式來得到圖片源,并將該圖片源賦值給ImageView.
相關(guān)代碼
NetService:網(wǎng)絡(luò)請求服務(wù)類
public class NetService {
public static InputStream getInputStreamByUrl(String address){
URL url = null;
HttpURLConnection urlConnection = null;
try {
url = new URL(address);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(2 * 1000);
urlConnection.setRequestMethod("GET");
return urlConnection.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
NetServiceTask:AsyncTask類
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import java.io.BufferedInputStream;
import java.io.InputStream;
public class NetServiceTask extends AsyncTask<String, Void, Bitmap> implements Runnable{
private String address;
private URLPostHandler urlPostHandler = null;
}
URLPostHandler:回調(diào)接口
public interface URLPostHandler {
void PostHandler(Bitmap bitmap);
}
前臺請求圖片并顯示到ImageView
public class MainActivity extends AppCompatActivity {
}
轉(zhuǎn)載于:https://www.cnblogs.com/yujie365/p/6647245.html
總結(jié)
以上是生活随笔為你收集整理的Android开发-下载网络图片并显示到本地的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用Virtual Audio Cabl
- 下一篇: android sina oauth2.