标签:des android style blog http color io os ar
============问题描述============


Image_url = new StringBuffer(AppConstant.DOWNLOAD_IMAGE_URL)
.append(msg.getOPImageList().get(0).getImageUrl())
.toString();
ImageView imageView = holder.msgImage;
imageView.setTag(Image_url);
Bitmap bitmap = Loader.loadBitmap(imageView, Image_url,
new ImageCallBack() {
@Override
public void imageLoad(ImageView imageView, Bitmap bitmap) {
if (imageView.getTag() != null
&& imageView.getTag().equals(Image_url)) {
imageView.setImageBitmap(bitmap);
}
}
});
Log.e("当前的postion", "" + position);
if (bitmap == null) {
imageView.setImageDrawable(context.getResources().getDrawable(
R.drawable.ic_launcher));
} else {
imageView.setImageBitmap(bitmap);
}public class Loader {
/**
* 内存图片软引用缓冲
*/
private static HashMap<String, SoftReference<Bitmap>> imageCache = null;
public Loader() {
imageCache = new HashMap<String, SoftReference<Bitmap>>();
}
public static String getFileName(String url) {
return url.substring(url.lastIndexOf(File.separator) + 1);
}
public static Bitmap getLocalResource(String destDir, String imageName) {
Bitmap bmp = null;
File imgeDir = new File(destDir);
File cache = null;
if (!imgeDir.exists()) { // 判断本地缓存目录是否存在
imgeDir.mkdirs();
} else {
cache = new File(destDir + File.separator + imageName); // 判断该图片资源是否存在
if (cache.exists()) { // 如果存在就根据图片的存储路径得到Bitmap对象 bm
bmp = BitmapFactory.decodeFile(cache.getAbsolutePath());
}
}
return bmp;
}
public static Bitmap loadBitmap(final ImageView imageView, final String imageURL,
final ImageCallBack imageCallBack) {
// 在内存缓存中,则返回Bitmap对象
if (imageCache.containsKey(imageURL)) {
SoftReference<Bitmap> reference = imageCache.get(imageURL);
Bitmap bitmap = reference.get();
if (bitmap != null) {
return bitmap;
}
} else {
/**
* 加上一个对本地缓存的查找
*/
String bitmapName = imageURL
.substring(imageURL.lastIndexOf("/") + 1);
Bitmap bitmapTemp = null;
bitmapTemp = getLocalResource(AppConstant.TEST, bitmapName);
if (bitmapTemp != null) {
return bitmapTemp;
}
}
final Handler handler = new Handler() {
/*
* (non-Javadoc)
*
* @see android.os.Handler#handleMessage(android.os.Message)
*/
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
imageCallBack.imageLoad(imageView, (Bitmap) msg.obj);
}
};
// 如果不在内存缓存中,也不在本地(被jvm回收掉),则开启线程下载图片
new Thread() {
/*
* (non-Javadoc)
*
* @see java.lang.Thread#run()
*/
@Override
public void run() {
// TODO Auto-generated method stub
Bitmap bitmap = null;
try {
URL imageUrl = new URL(imageURL);
HttpURLConnection conn = (HttpURLConnection) imageUrl
.openConnection();
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
conn.setInstanceFollowRedirects(true);
// InputStream is = conn.getInputStream();
InputStream in = conn.getInputStream();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = 10; // width,hight设为原来的十分一
bitmap = BitmapFactory.decodeStream(in, null, options);
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
imageCache.put(imageURL, new SoftReference<Bitmap>(bitmap));
Message msg = handler.obtainMessage(0, bitmap);
handler.sendMessage(msg);
File dir = new File(AppConstant.TEST);
if (!dir.exists()) {
dir.mkdirs();
}
File bitmapFile = new File(AppConstant.TEST + File.separator
+ imageURL.substring(imageURL.lastIndexOf("/") + 1));
if (!bitmapFile.exists()) {
try {
bitmapFile.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
FileOutputStream fos;
try {
fos = new FileOutputStream(bitmapFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
return null;
}
/**
* 回调接口
*
* @author onerain
*
*/
public interface ImageCallBack {
public void imageLoad(ImageView imageView, Bitmap bitmap);
}
}============解决方案1============
============解决方案2============
============解决方案3============
============解决方案4============
============解决方案5============
============解决方案6============
============解决方案7============
标签:des android style blog http color io os ar
原文地址:http://www.cnblogs.com/lengyanyue39/p/4041876.html