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

Android图片加载案例分享

程序员文章站 2023-12-04 13:33:40
httpurlconnection和httpclient都可以访问网络,前者是java的标准类,后者是apache的一个开源项目,两者使用起来效果一样,但后者更为简单。...

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>

Android图片加载案例分享

界面交互

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();
    }
  }

}

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