HttpUrlConnection用字节下载图片,用Bitmap

2018-03-22  本文已影响29人  HWilliamgo
public class MainActivity extends AppCompatActivity {
    private ImageView iv_img;
    private byte[] pics;
    private MyHandler handler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        handler=new MyHandler(this);
        initView();
    }
    private void initView() {
        iv_img = findViewById(R.id.iv_img);
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL urL = new URL("https://www.baidu.com/img/superlogo_c4d7df0a003d3db9b65e9ef0fe6da1ec.png");
                    HttpURLConnection httpURLConnection = (HttpURLConnection) urL.openConnection();
                    httpURLConnection.setRequestMethod("GET");
                    httpURLConnection.setReadTimeout(10000);
                    if (httpURLConnection.getResponseCode() == 200) {
                        InputStream inputStream = httpURLConnection.getInputStream();
                        ByteArrayOutputStream bos = new ByteArrayOutputStream();
                        byte[] bytes = new byte[1024];
                        int length = -1;
                        while ((length = inputStream.read(bytes)) != -1) {
                            bos.write(bytes, 0, length);
                        }
                        pics = bos.toByteArray();
                        bos.close();
                        inputStream.close();
                        Message message = new Message();
                        message.what = 0;
                        handler.sendMessage(message);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
        thread.start();
    }

    private static class MyHandler extends Handler{
        private WeakReference<MainActivity> weakReference;
        MyHandler(MainActivity activity) {
            weakReference=new WeakReference<MainActivity>(activity);
        }
        @Override
        public void handleMessage(Message msg) {
            MainActivity activity=weakReference.get();
            if (activity!=null){
                //handle the message below
                switch (msg.what){
                    case 0:
                        Bitmap bitmap= BitmapFactory.decodeByteArray(activity.pics,0,activity.pics.length);
                        activity.iv_img.setImageBitmap(bitmap);
                        break;
                }
            }
        }
    }
}

上一篇 下一篇

猜你喜欢

热点阅读