非同步下載網狀圖片並儲存_非同步

來源:互聯網
上載者:User
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();    }    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.