import java.io.IOException; import java.io.InputStream;
import java.lang.ref.SoftReference; import java.net.MalformedURLException; import java.net.URL;
import java.util.HashMap;
import android.app.Activity;
import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View;
import android.widget.ImageView;
//import com.down.AsyncImageLoader.ImageCallback;
//异步加载
public class LazyLoadImageActivity extends Activity { AsyncImageLoader asyncImageLoader; String imageUrl; Callbackimg callback; Drawable drawable; android.widget.ImageView imageView1; android.widget.ImageView imageView2; android.widget.ImageView imageView3; AsyncImageLoader loder; String path = \"http://192.168.1.66:8080/downPicService/DownPicServlet\"; String imgpath; String str; HashMap } public void btn2(View v) { imgpath = receive(path); loadImage(imgpath, R.id.image2); } public void btn3(View v) { imgpath = receive(path); loadImage(imgpath, R.id.image3); } // 从服务端得到图片地址url public void loadImage(String url, int id) { loder = new AsyncImageLoader(); ImageView imageView = (ImageView) this.findViewById(id); callback = new Callbackimg(imageView); Drawable drawable = loder.loadDrawable(url); if (drawable != null) { imageView.setImageDrawable(drawable); } } public String receive(String path) { try { // 服务器Url对象 java.net.URL url = new java.net.URL(path); java.net.HttpURLConnection httpConnection = (java.net.HttpURLConnection) url .openConnection(); // 设置连接延时 可根据情况修改 httpConnection.setConnectTimeout(5000); httpConnection.setDoInput(true); httpConnection.setDoOutput(true); // POST方式发送 如果发送Object必须用POST方式 httpConnection.setRequestMethod(\"POST\"); httpConnection.connect(); // 输入流 这里可以获取服务器返回结果 以判断图片是否上传成功 如需要 自行完成 java.io.InputStreamReader inReader = new java.io.InputStreamReader( httpConnection.getInputStream()); } java.io.BufferedReader buffer = new java.io.BufferedReader(inReader); str = buffer.readLine(); System.out.println(str); } catch (Exception ex) { ex.printStackTrace(); } return str; // 异步下载缓存到HashMap class AsyncImageLoader { public Drawable loadDrawable(final String imageUrl) { if (hashmap.containsKey(imageUrl)) { ;// 判断是否缓存如果缓存里执行此代码 SoftReference } } else { final Handler handler = new Handler() { } public void handleMessage(Message message) { callback.imageLoaded((Drawable) message.obj, imageUrl); } }; new Thread() {// 下载后将图片放进hashmap里 public void run() { Drawable drawable = loadImageFromUrl(imageUrl); hashmap.put(imageUrl, new SoftReference return null; } public Drawable loadImageFromUrl(String url) {// 根据url得到图片 Drawable d = null; InputStream i = null; URL m; try { m = new URL(url); i = (InputStream) m.getContent(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } d = Drawable.createFromStream(i, \"src\");// ??????????? return d; } } public interface ImageCallback {// 通过接口图片下载成功后进行此方法 public void imageLoaded(Drawable imageDrawable, String imageUrl); } } class Callbackimg implements com.down.LazyLoadImageActivity.ImageCallback { ImageView imageview; Callbackimg(ImageView imageview) { this.imageview = imageview; } public void imageLoaded(Drawable imageDrawable, String imageUrl) { imageview.setImageDrawable(imageDrawable); } } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务