当前位置: 移动技术网 > IT编程>移动开发>Android > Android图片加载案例分享

Android图片加载案例分享

2019年07月24日  | 移动技术网IT编程  | 我要评论

开讲啦 陈坤,金山词霸2010牛津旗舰版破解,吕平滢

httpurlconnection和httpclient都可以访问网络,前者是java的标准类,后者是apache的一个开源项目,两者使用起来效果一样,但后者更为简单。
 以下是针对前者完成的一个实例:
首先写好布局文件:

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  tools:context=".mainactivity" >

  <imageview
    android:id="@+id/iv"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1" />

  <edittext
    android:id="@+id/et_path"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="请输入图片路径"
    android:src="@drawable/
    android:maxlines="1" />  

<button  android:layout_width="fill_parent"  android:layout_height="wrap_content"  android:onclick="click"    android:text="浏览" />

</linearlayout>


界面交互

package cn.edu.bzu.imageviewdemo;

import android.graphics.bitmap;
import android.graphics.bitmapfactory;
import android.os.bundle;
import android.os.handler;
import android.os.message;
import android.support.v7.app.appcompatactivity;
import android.text.textutils;
import android.view.view;
import android.widget.edittext;
import android.widget.imageview;
import android.widget.toast;

import java.io.inputstream;
import java.net.httpurlconnection;
import java.net.url;
public class mainactivity extends appcompatactivity {

  protected static final int change_ui = 1;
  protected static final int error = 2;
  private edittext et_path;
  private imageview iv;
  // 主线程创建消息处理器
  private handler handler = new handler(){
    public void handlemessage(android.os.message msg) {
      if(msg.what == change_ui){
        bitmap bitmap = (bitmap) msg.obj;
        iv.setimagebitmap(bitmap);
      }else if(msg.what == error){
        toast.maketext(mainactivity.this, "显示图片错误", 0).show();
      }
    };
  };
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
    et_path = (edittext) findviewbyid(r.id.et_path);
    iv = (imageview) findviewbyid(r.id.iv);
  }
  public void click(view view) {
    final string path = et_path.gettext().tostring().trim();
    if (textutils.isempty(path)) {
      toast.maketext(this, "图片路径不能为空", toast.length_short).show();
    } else {
      //子线程请求网络,android4.0以后访问网络不能放在主线程中
      new thread() {
        public void run() {
          // 连接服务器 get 请求 获取图片.
          try {
            url url = new url(path);    //创建url对象
            // 根据url 发送 http的请求.
            httpurlconnection conn = (httpurlconnection) url
                .openconnection();
            // 设置请求的方式
            conn.setrequestmethod("get");
            //设置超时时间
            conn.setconnecttimeout(5000);
            // 得到服务器返回的响应码
            int code = conn.getresponsecode();
            //请求网络成功后返回码是200
            if (code == 200) {
              //获取输入流
              inputstream is = conn.getinputstream();
              //将流转换成bitmap对象
              bitmap bitmap = bitmapfactory.decodestream(is);
              //iv.setimagebitmap(bitmap);
              //todo: 告诉主线程一个消息:帮我更改界面。内容:bitmap
              message msg = new message();
              msg.what = change_ui;
              msg.obj = bitmap;
              handler.sendmessage(msg);
            } else {
              //返回码不是200 请求服务器失败
              message msg = new message();
              msg.what = error;
              handler.sendmessage(msg);
            }
          } catch (exception e) {
            e.printstacktrace();
            message msg = new message();
            msg.what = error;
            handler.sendmessage(msg);
          }
        };
      }.start();
    }
  }

}

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网