从零开始编写图片加载库(二)之AsyncTask图片下载

来源:互联网 发布:2016年非公经济数据 编辑:程序博客网 时间:2024/05/22 06:08

上篇文章 从零开始编写图片加载库(一)之Handler+Thread图片下载我们是通过Handler+Message来更新View,这张我们来通过android提供的异步操作AsyncTask来进行网络图片下载。

package cn.sundroid.file;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends Activity implements OnClickListener {    private final String TAG = this.getClass().getSimpleName();    private Button save;    private Button get;    private ImageView image;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        save = (Button) findViewById(R.id.save);        save.setOnClickListener(this);        get = (Button) findViewById(R.id.get);        get.setOnClickListener(this);        image = (ImageView) findViewById(R.id.image);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.get:                new MyAsyncTask().execute("");                break;            case R.id.save:                break;            default:                break;        }    }    private class MyAsyncTask extends AsyncTask {        @Override        protected Bitmap doInBackground(String... params) {            String url = "http://b.hiphotos.baidu.com/image/pic/item/0824ab18972bd4073cc730f479899e510fb309b2.jpg";            Bitmap bitmap = null;            try {                HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();                conn.setConnectTimeout(5 * 1000);                conn.setReadTimeout(20 * 1000);                InputStream is = conn.getInputStream();                bitmap = BitmapFactory.decodeStream(is);            } catch (MalformedURLException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }            return bitmap;        }        @Override        protected void onProgressUpdate(Integer... values) {            super.onProgressUpdate(values);        }        @Override        protected void onPostExecute(Bitmap result) {            super.onPostExecute(result);            image.setImageBitmap(result);        }    }}

图片就不贴了效果图和上一章节一样。如果你对AsyncTask不了解可以读这篇文章

0 0
原创粉丝点击