android获取网络图片简单实现

本文介绍了Android应用程序中从网络获取图片的步骤,包括选择URL、选择获取方式、处理数据流、避免主线程阻塞以及如何将图片显示在Activity中。同时,强调了需要在AndroidManifest.xml中添加网络访问权限。
摘要由CSDN通过智能技术生成

android获取网络图片简单实现

在我们平时做项目的时候肯定少不了要从网络上获取图片的资源,此篇文章就讲一讲从网络上获取图片,我们要考虑的问题是
  • 1.获取怎样的url
  • 2.用什么方法获取(以前有学习web开发的同学考虑一下ajax或者从后台获取交互数据的方法在此是否适用)
  • 3.获取到的数据是否就是图片资源,是否还要解析
  • 4.直接用主线程是否适用
  • 5.怎样将最终得到的图片资源显示到activity中

                        URL url = new URL(path);
                        // 发出http请求
                        HttpURLConnection huc = (HttpURLConnection) url
                                .openConnection();
                        // 发送请求类型
                        huc.setRequestMethod("GET");
                        // 设置连接超时时间(五秒)
                        huc.setConnectTimeout(5000);

                        // 接收返回信息类型
                        int responsecode = huc.getResponseCode();//此处非常类似javascript中的ajax
  • 3.将从网络上的流转化为需要的图片资源
if (responsecode == 200) {
  // 当返回正确到达
                            InputStream is = huc.getInputStream();// 获取文件输入流
                            Bitmap bm = BitmapFactory.decodeStream(is);// 使用位图工厂将流变换为图
                            }


  • 4.如果在需要在子线程中实现2.3两步
  • 5.将最终获取的图片显示到activity中

:当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分发到对应的组件进行处理。所以主线程通常又被叫做UI线程。
  比如说从网上获取一个图片,在一个ImageView中将其显示出来,这种涉及到网络操作的程序一般都是需要开一个线程完成网络访问,但是在获得图片后,是不能直接在网络操作线程中调用ImageView的相关方法的,因为其他线程中是不能直接访问主UI线程成员 。
  如果在子线程中改变主线程的内容操作系统会担心数个线程同时操作一个控件而导致的不安全,所以限制子线程不得直接访问主UI线程成员的
  故而:用到了Handler
  private   Handler h = new Handler() {
        public void handleMessage(android.os.Message msg) {
            // 对接收的数据进行处理
            switch (msg.what) {
            case SHOW_IMAGE:
                Bitmap bitmap = (Bitmap) msg.obj;
                iv_imeages.setImageBitmap(bitmap);

                break;

            default:
                break;
            }
        };
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值