public classImageUtil {private LruCachemMemoryCache;private finalContext mContext;private staticImageUtil imageUtil;private static Object obj = newObject();private intmemClass;private intcacheSize;privateImageUtil(Context mContext) {this.mContext =mContext;
createLruCache(mContext);
}private voidcreateLruCache(Context mContext) {
memClass=((ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
cacheSize= 1024 * 1024 * memClass / 8;
mMemoryCache= new LruCache(cacheSize) {
@Overrideprotected intsizeOf(String key, Bitmap value) {//TODO Auto-generated method stub
returnvalue.getRowBytes();
}
};
}public staticImageUtil getInstance(Context mContext) {if (imageUtil == null) {synchronized(obj) {if (imageUtil == null) {
imageUtil= newImageUtil(mContext);
}
}
}returnimageUtil;
}public void adjustImageSize(ImageView imageView, intimageResourceId) {
Bitmap mBitmap= null;
Display display=((MainActivity) mContext).getWindowManager().getDefaultDisplay();int width = display.getWidth(); //deprecated
int height = display.getHeight(); //deprecated
Bitmap bitmapCache= mMemoryCache.get(imageResourceId + "");if (bitmapCache != null) {
mBitmap=bitmapCache;
}else{
mBitmap=createImageWithResouce(mContext, imageResourceId);
mMemoryCache.put(imageResourceId+ "", mBitmap);
}
RelativeLayout.LayoutParams layoutParams= newRelativeLayout.LayoutParams(width, width/ getBitmapWidth(mBitmap) *getBitmapHeight(mBitmap));
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
imageView.setLayoutParams(layoutParams);
imageView.setBackgroundDrawable(newBitmapDrawable(mBitmap));//imageView.setImageBitmap(mBitmap);
}private static Bitmap createImageWithResouce(Context context, intresourceID) {
Bitmap bit=BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher);returnbit;
}private intgetBitmapWidth(Bitmap bitmap) {returnbitmap.getWidth();
}private intgetBitmapHeight(Bitmap bitmap) {returnbitmap.getHeight();
}
}