异步下载网络图片并保存

来源:互联网 发布:大数据概念板块 编辑:程序博客网 时间:2024/05/23 12:37
package weixinlookimgsdemo.hankkin.com.savegifpic;import android.app.Activity;import android.app.ProgressDialog;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class MainActivity extends Activity {    private Button button,button2;    private ImageView imageView;    private String image_Path = "http://e.hiphotos.baidu.com/image/pic/item/2fdda3cc7cd98d10b510fdea233fb80e7aec9021.jpg";    private ProgressDialog dialog;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = (Button) findViewById(R.id.button1);        button2 = (Button) findViewById(R.id.button2);        imageView = (ImageView) findViewById(R.id.imageView1);        dialog = new ProgressDialog(this);        dialog.setTitle("提示信息");        dialog.setMessage("正在下载,请稍候...");        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View arg0) {                new MYTask().execute(image_Path);            }        });        button2.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {            }        });    }        public class MYTask extends AsyncTask<String, Void, Bitmap> {            @Override            protected void onPreExecute() {                super.onPreExecute();                dialog.show();            }            @Override            protected Bitmap doInBackground(String... arg0) {                URL url = null;                Bitmap bitmap = null;                try {                    url = new URL(arg0[0]);                    HttpURLConnection con = (HttpURLConnection) url.openConnection();                    con.setRequestMethod("GET");                    con.setConnectTimeout(1000 * 6);                    if (con.getResponseCode() == 200) {                        InputStream inputStream = con.getInputStream();                        //将输入流转换字节数组                        byte[] b = getByte(inputStream);                        //读取字节转换成bitmap,将Bitmap返回,更新ui                        bitmap= BitmapFactory.decodeByteArray(b, 0, b.length);                        // 首先保存图片                        File appDir = new File(Environment.getExternalStorageDirectory(), "保存图片");                        if (!appDir.exists()) {                            appDir.mkdir();                        }                        String fileName = System.currentTimeMillis() + ".jpg";                        File file = new File(appDir, fileName);                        FileOutputStream fileOutputStream = new FileOutputStream(file);                        fileOutputStream.write(b);                        fileOutputStream.close();                    }                } catch (java.io.IOException e) {                    e.printStackTrace();                } catch (Exception e) {                    e.printStackTrace();                }                return bitmap;            }            /**             * 主要是更新UI的操作             */            @Override            protected void onPostExecute(Bitmap result) {                super.onPostExecute(result);                imageView.setImageBitmap(result);                dialog.dismiss();            }        }    private byte[] getByte(InputStream inputStream) throws Exception {        byte[] b = new byte[1024];        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();        int len = -1;        while ((len = inputStream.read(b)) != -1) {            byteArrayOutputStream.write(b, 0, len);        }        byteArrayOutputStream.close();        inputStream.close();        return byteArrayOutputStream.toByteArray();    }    }
0 0
原创粉丝点击