加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用HttpURLConnection实现图片的下载与现显示

发布时间:2020-12-15 03:23:43 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 public class MainActivity extends Activity { private Context mContext; private ImageView image; // 加载成功 private static final int LOAD_SU

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

public class MainActivity extends Activity {  
  
    private Context mContext;  
    private ImageView image;  
    // 加载成功  
    private static final int LOAD_SUCCESS = 1;  
    // 加载失败  
    private static final int LOAD_ERROR = -1;  
    // 用于异步的显示图片  
    private Handler handler = new Handler() {  
        public void handleMessage(Message msg) {  
  
            switch (msg.what) {  
            //下载成功  
            case LOAD_SUCCESS:  
                // 获取图片的文件对象  
                File file = new File(Environment.getExternalStorageDirectory(),"pic.jpg");  
                FileInputStream fis = null;  
                try {  
                    fis = new FileInputStream(file);  
                    Bitmap bitmap = BitmapFactory.decodeStream(fis);  
                    image.setImageBitmap(bitmap);  
  
                } catch (FileNotFoundException e) {  
                    e.printStackTrace();  
                }  
  
                break;  
                //下载失败  
            case LOAD_ERROR:  
  
                Toast.makeText(mContext,"加载失败",0).show();  
  
                break;  
            }  
  
        };  
    };  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        mContext = this;  
        setContentView(R.layout.activity_main);  
        image = (ImageView) findViewById(R.id.image);  
    }  
  
    // Button的点击事件  
    public void show(View view) {  
        // 开启新的线程用于下载图片  
        new Thread(new Runnable() {  
            public void run() {  
  
                getPicture();  
            }  
        }).start();  
  
    }  
  
    //下载图片的主方法  
    private void getPicture() {  
          
        URL url = null;  
        InputStream is = null;  
        FileOutputStream fos = null;  
        try {  
            //构建图片的url地址  
            url = new URL("http://avatar.csdn.net/C/6/8/1_bz419927089.jpg");  
            //开启连接  
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
            //设置超时的时间,5000毫秒即5秒  
            conn.setConnectTimeout(5000);  
            //设置获取图片的方式为GET  
            conn.setRequestMethod("GET");  
            //响应码为200,则访问成功  
            if (conn.getResponseCode() == 200) {  
                //获取连接的输入流,这个输入流就是图片的输入流  
                is = conn.getInputStream();  
                //构建一个file对象用于存储图片  
                File file = new File(Environment.getExternalStorageDirectory(),"pic.jpg");  
                fos = new FileOutputStream(file);  
                int len = 0;  
                byte[] buffer = new byte[1024];  
                //将输入流写入到我们定义好的文件中  
                while ((len = is.read(buffer)) != -1) {  
                    fos.write(buffer,len);  
                }  
                //将缓冲刷入文件  
                fos.flush();  
                //告诉handler,图片已经下载成功  
                handler.sendEmptyMessage(LOAD_SUCCESS);  
            }  
        } catch (Exception e) {  
            //告诉handler,图片已经下载失败  
            handler.sendEmptyMessage(LOAD_ERROR);  
            e.printStackTrace();  
        } finally {  
            //在最后,将各种流关闭  
            try {  
                if (is != null) {  
                    is.close();  
                }  
                if (fos != null) {  
                    fos.close();  
                }  
            } catch (Exception e) {  
                handler.sendEmptyMessage(LOAD_ERROR);  
                e.printStackTrace();  
            }  
        }  
    }  
  
}  

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读