android 类似金山词霸 每日一句源代码 csdn,Android 图文数据JSON解析,金山词霸每日一句API的调用...

public classImageLoader {

MemoryCache memoryCache=newMemoryCache();

FileCache fileCache;private Map imageViews=Collections.synchronizedMap(new WeakHashMap());

ExecutorService executorService;publicImageLoader(Context context){

fileCache=newFileCache(context);

executorService=Executors.newFixedThreadPool(5);

}final int stub_id =R.drawable.drug_trans;public voidDisplayImage(String url, ImageView imageView)

{

imageViews.put(imageView, url);

Bitmap bitmap=memoryCache.get(url);if(bitmap!=null)

imageView.setImageBitmap(bitmap);else{

queuePhoto(url, imageView);

imageView.setImageResource(stub_id);

}

}private voidqueuePhoto(String url, ImageView imageView)

{

PhotoToLoad p=newPhotoToLoad(url, imageView);

executorService.submit(newPhotosLoader(p));

}privateBitmap getBitmap(String url)

{

File f=fileCache.getFile(url);//from SD cache

Bitmap b =decodeFile(f);if(b!=null)returnb;//from web

try{

Bitmap bitmap=null;

URL imageUrl= newURL(url);

HttpURLConnection conn=(HttpURLConnection)imageUrl.openConnection();

conn.setConnectTimeout(30000);

conn.setReadTimeout(30000);

conn.setInstanceFollowRedirects(true);

InputStream is=conn.getInputStream();

OutputStream os= newFileOutputStream(f);

Utils.CopyStream(is, os);

os.close();

bitmap=decodeFile(f);returnbitmap;

}catch(Exception ex){

ex.printStackTrace();return null;

}

}//decodes image and scales it to reduce memory consumption

privateBitmap decodeFile(File f){try{//decode image size

BitmapFactory.Options o = newBitmapFactory.Options();

o.inJustDecodeBounds= true;

BitmapFactory.decodeStream(new FileInputStream(f),null,o);//Find the correct scale value. It should be the power of 2.

final int REQUIRED_SIZE=70;int width_tmp=o.outWidth, height_tmp=o.outHeight;int scale=1;while(true){if(width_tmp/1.5

width_tmp/=1.5;

height_tmp/=1.5;

scale*=1.5;

}//decode with inSampleSize

BitmapFactory.Options o2 = newBitmapFactory.Options();

o2.inSampleSize=scale;return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);

}catch(FileNotFoundException e) {}return null;

}//Task for the queue

private classPhotoToLoad

{publicString url;publicImageView imageView;publicPhotoToLoad(String u, ImageView i){

url=u;

imageView=i;

}

}class PhotosLoader implementsRunnable {

PhotoToLoad photoToLoad;

PhotosLoader(PhotoToLoad photoToLoad){this.photoToLoad=photoToLoad;

}

@Overridepublic voidrun() {if(imageViewReused(photoToLoad))return;

Bitmap bmp=getBitmap(photoToLoad.url);

memoryCache.put(photoToLoad.url, bmp);if(imageViewReused(photoToLoad))return;

BitmapDisplayer bd=newBitmapDisplayer(bmp, photoToLoad);

Activity a=(Activity)photoToLoad.imageView.getContext();

a.runOnUiThread(bd);

}

}booleanimageViewReused(PhotoToLoad photoToLoad){

String tag=imageViews.get(photoToLoad.imageView);if(tag==null || !tag.equals(photoToLoad.url))return true;return false;

}//Used to display bitmap in the UI thread

class BitmapDisplayer implementsRunnable

{

Bitmap bitmap;

PhotoToLoad photoToLoad;public BitmapDisplayer(Bitmap b, PhotoToLoad p){bitmap=b;photoToLoad=p;}public voidrun()

{if(imageViewReused(photoToLoad))return;if(bitmap!=null)

photoToLoad.imageView.setImageBitmap(bitmap);elsephotoToLoad.imageView.setImageResource(stub_id);

}

}public voidclearCache() {

memoryCache.clear();

fileCache.clear();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值