欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android获取网络图片并显示的方法

程序员文章站 2022-05-27 10:23:39
本文实例为大家分享了android获取网络图片并显示的具体代码,供大家参考,具体内容如下 使用 httpurlconnection 获得连接,再使用 inputstrea...

本文实例为大家分享了android获取网络图片并显示的具体代码,供大家参考,具体内容如下

使用 httpurlconnection 获得连接,再使用 inputstream 获得图片的数据流,通过 bitmapfactory 将数据流转换为 bitmap,再将 bitmap 通过线程的 message 发送出去,handler 接收到消息就会通知 imageview 显示出来。

Android获取网络图片并显示的方法

记得要在manifest文件中添加 < uses-permission android:name=”android.permission.internet” />上网权限,不然无法显示图片。

工程文件结构:

Android获取网络图片并显示的方法

布局文件中就一个 imageview 用来显示图片,一个 button 用来获取图片。

mainactivity.java

public class mainactivity extends appcompatactivity {
  button button;
  imageview imageview;
  string url = "http://i4.buimg.com/dccba6282641a9e0.jpg";
  //string texturl = "http://192.168.1.104:8080/add.jsp";

  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);

    button = (button) findviewbyid(r.id.button);
    imageview = (imageview) findviewbyid(r.id.imageview);

    button.setonclicklistener(new view.onclicklistener() {
      @override
      public void onclick(view v) {
        new thread(new runnable() {
          @override
          public void run() {
            bitmap bmp = geturlimage(url);
            message msg = new message();
            msg.what = 0;
            msg.obj = bmp;
            system.out.println("000");
            handle.sendmessage(msg);
          }
        }).start();
      }
    });
  }

  //在消息队列中实现对控件的更改
  private handler handle = new handler() {
    public void handlemessage(message msg) {
      switch (msg.what) {
        case 0:
          system.out.println("111");
          bitmap bmp=(bitmap)msg.obj;
          imageview.setimagebitmap(bmp);
          break;
      }
    };
  };

  //加载图片
  public bitmap geturlimage(string url) {
    bitmap bmp = null;
    try {
      url myurl = new url(url);
      // 获得连接
      httpurlconnection conn = (httpurlconnection) myurl.openconnection();
      conn.setconnecttimeout(6000);//设置超时
      conn.setdoinput(true);
      conn.setusecaches(false);//不缓存
      conn.connect();
      inputstream is = conn.getinputstream();//获得图片的数据流
      bmp = bitmapfactory.decodestream(is);//读取图像数据
      //读取文本数据
      //byte[] buffer = new byte[100];
      //inputstream.read(buffer);
      //text = new string(buffer);
      is.close();
    } catch (exception e) {
      e.printstacktrace();
    }
    return bmp;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。