package com.qianfeng.gl4study.snssdk.utils; import android.graphics.*; import android.util.Log; import android.view.ViewGroup; import android.widget.ImageView; import com.qianfeng.gl4study.snssdk.constant.Constant; import com.qianfeng.gl4study.snssdk.tasks.ImageLoaderTask; import com.qianfeng.gl4study.snssdk.tasks.UserAvatarTask; /** * Created with IntelliJ IDEA. * I'm glad to share my knowledge with you all. * User:Gaolei * Date:2015/3/15 * Email:pdsfgl@live.com */ public class Utils { /** * 图片段子下载 * @param userImage * @param avatarUrl */ public static void loaderImage(int width,ImageView userImage,String avatarUrl){ userImage.setTag(avatarUrl); ImageCache imageCache = ImageCache.getInstance(); Bitmap bitmap = imageCache.getImage(avatarUrl); if(bitmap!=null){ userImage.setImageBitmap(bitmap); }else { FileCache fileCache = FileCache.getInstance(); byte[] bytes = fileCache.getContent(avatarUrl); if(bytes!=null&&bytes.length>0){ //文件缓存时字节数组,转化成图片还是非圆角,故,需要重新转化。 bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); if(width == -1) {//头像下载 bitmap = Utils.getRoundedCornerBitmap(bitmap, 2); userImage.setImageBitmap(bitmap); }else { Utils.setImageToView(width,userImage,bitmap); } imageCache.putImage(avatarUrl,bitmap); }else { if(width == -1){//头像下载 UserAvatarTask imageLoaderTask = new UserAvatarTask(userImage); imageLoaderTask.execute(avatarUrl); }else { //图片下载 ImageLoaderTask imageLoaderTask = new ImageLoaderTask(width, userImage); imageLoaderTask.execute(avatarUrl); } } } } /** * 图片段子设置 * @param width * @param imageView * @param bitmap */ public static void setImageToView(int width,ImageView imageView,Bitmap bitmap){ if(imageView!=null) { int cWidth = Constant.DISPLAYMETRICS_WIDTH - 40; float cHeight = (float) cWidth * bitmap.getHeight()/ bitmap.getWidth() ; ViewGroup.LayoutParams params = imageView.getLayoutParams(); params.height =(int)cHeight; params.width = cWidth; imageView.setLayoutParams(params); imageView.setImageBitmap(bitmap); Log.d("setImageToView","cWidth:"+cWidth+"cHeight:"+cHeight+"bitmap.getWidth:"+bitmap.getWidth()+"height"+bitmap.getHeight()); } } /** * 将图片截取为圆角图片 * @param bitmap 原图片 * @param ratio 截取比例,如果是8,则圆角半径是宽高的1/8,如果是2,则是圆形图片 * @return 圆角矩形图片 */ public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float ratio) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(output); final Paint paint = new Paint(); int i = bitmap.getHeight()>bitmap.getWidth()?bitmap.getHeight():bitmap.getWidth(); final Rect rect = new Rect(0, 0, i, i); final RectF rectF = new RectF(rect); paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); canvas.drawRoundRect(rectF, i/ratio, i/ratio, paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return output; } }