Android 使用URL讀取網路圖片資源
阿新 • • 發佈:2019-01-07
MainActivity裡面在適當的位置呼叫了new HttpImageDownload((ImageView) findViewById(R.id.imageView)).execute();
其中imageView是activity_main.xml上面的ImageView控制元件的id
HttpImageDownload是我自定義的類,繼承了AsyncTask。
execute是繼承自AsyncTask的方法,作用是啟動AsyncTask類中doInBackground方法。
之所以要自定義一個類,再繼承自AsyncTask,是因為doInBackground方法會非同步執行,而關於網路的操作是不能在UI執行緒執行的。
如果覺得這樣麻煩,採用Thread類的start方法也是可以的。
new Thread(new Runnable() {
@Override
public void run() {
}
}).start();
接下來就是HttpImageDownload類的具體實現
這裡的URL是一張小s的照片,最後,記得加上public class HttpImageDownload extends AsyncTask { private ImageView mImageView; public HttpImageDownload(ImageView imageView) { mImageView = imageView; } @Override protected Object doInBackground(Object[] params) { try { // 建立一個URL URL url = new URL("http://ww4.sinaimg.cn/large/6592c2e0jw1eqnjtyr98ej20f00qot9t.jpg"); // 從URL獲取對應資源的 InputStream InputStream inputStream = url.openStream(); // 用inputStream來初始化一個Bitmap 雖然此處是Bitmap,但是URL不一定非得是Bitmap Bitmap bitmap = BitmapFactory.decodeStream(inputStream); // 關閉 InputStream inputStream.close(); return bitmap; } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { // 此處的形參o,是doInBackground的返回值 mImageView.setImageBitmap((Bitmap)o); } }
<uses-permission android:name="android.permission.INTERNET"/>