考古Android->ImageLoader缓存

Application要在Xml配置文件里面配置

在Xml的application标签里面配置

 android:name="com.bwei.app.App"

ImageLoaderUtils.java

package com.example.app;

import com.example.xmljiexi.R;
import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration.Builder;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

import android.content.Context;
import android.graphics.Bitmap;

public class ImageLoaderUtils {
	 public static void initConfiguration(Context context) {
		 Builder configuration = new ImageLoaderConfiguration.Builder(context);
		 configuration.memoryCacheExtraOptions(480, 800)
			  .diskCacheExtraOptions(480, 800, null)
			  // .taskExecutor(null)
			  // .taskExecutorForCachedImages()
			  .threadPoolSize(3)
			  // default 线程优先级
			  .threadPriority(Thread.NORM_PRIORITY - 2)
			  // default
			  .tasksProcessingOrder(QueueProcessingType.FIFO)
			  // // default设置在内存中缓存图像的多种尺寸
			  // 加载同一URL图片时,imageView从小变大时,从内存缓存中加载
			  .denyCacheImageMultipleSizesInMemory()
			  // 超过设定的缓存大小时,内存缓存的清除机制
			  .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
			  // 内存的一个大小
			  .memoryCacheSize(2 * 1024 * 1024).memoryCacheSizePercentage(13)
			  // default 将图片信息缓存到该路径下
			  // default 磁盘缓存的大小
			  .diskCacheSize(50 * 1024 * 1024)
			  // 磁盘缓存文件的个数
			  .diskCacheFileCount(100)
			  // 磁盘缓存的文件名的命名方式//一般使用默认值 (获取文件名称的hashcode然后转换成字符串)或MD5 new
			  // Md5FileNameGenerator()源文件的名称同过md5加密后保存
			  .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
			  // 设置默认的图片加载
			  // 使用默认的图片解析器
			  .imageDecoder(new BaseImageDecoder(true)) // default
			  .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
			  .writeDebugLogs();
		 ImageLoader.getInstance().init(configuration.build());
	 }
	 public static DisplayImageOptions initOptions() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
            .showImageOnLoading(R.drawable.ic_launcher)
            .showImageOnFail(R.drawable.ic_launcher)
            .cacheInMemory(true)
            .cacheOnDisc(true).bitmapConfig(Bitmap.Config.RGB_565)
             // 是否考虑JPEG图像EXIF参数(旋转,翻转)
            .considerExifParams(true)
            // 设置图片以如何的编码方式显示
            .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
            // 设置图片的解码类型//
            .bitmapConfig(Bitmap.Config.RGB_565)
            // 设置图片在下载前是否重置,复位
            .resetViewBeforeLoading(true)
            // 是否设置为圆角,弧度为多少
            .displayer(new RoundedBitmapDisplayer(20))
            // 是否图片加载好后渐入的动画时间
            .displayer(new FadeInBitmapDisplayer(100))
            // 构建完成 
            .build();
        return options;
    
    }
}

MyApplication.java

package com.example.app;

import android.app.Application;

public class MyApplication extends Application {
	@Override
	public void onCreate() {
		super.onCreate();
		ImageLoaderUtils.initConfiguration(getApplicationContext());
	}

}

图片变更成圆形。

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;

public class RoundPicture extends ImageView{

    private Paint paint ;
    
    public RoundPicture(Context context) {  
        this(context,null);  
    }  
 
    public RoundPicture(Context context, AttributeSet attrs) {  
        this(context, attrs,0);  
    }  
 
    public RoundPicture(Context context, AttributeSet attrs, int defStyle) {  
        super(context, attrs, defStyle);
        paint = new Paint();
        
    }  
 
    /**
     * 绘制圆形图片
     * @author caizhiming
     */
    @Override  
    protected void onDraw(Canvas canvas) {  
 
        Drawable drawable = getDrawable();  
        if (null != drawable) {  
            BitmapDrawable bd=(BitmapDrawable) drawable;
            Bitmap bitmap = (bd).getBitmap();  
            Bitmap b = getCircleBitmap(bitmap);  
            final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight());  
            final Rect rectDest = new Rect(0,0,getWidth(),getHeight());
            paint.reset();  
            canvas.drawBitmap(b, rectSrc, rectDest, paint);  
 
        } else {  
            super.onDraw(canvas);  
        }  
    }  
 
    /**
     * 获取圆形图片方法
     * @param bitmap
     * @param pixels
     * @return Bitmap
     * @author caizhiming
     */
    private Bitmap getCircleBitmap(Bitmap bitmap) {  
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),  
                bitmap.getHeight(), Config.ARGB_8888);  
        Canvas canvas = new Canvas(output);  
          
        final int color = 0xff424242;
       
        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());  
        paint.setAntiAlias(true);  
        canvas.drawARGB(0, 0, 0, 0);  
        paint.setColor(color);  
        int x = bitmap.getWidth();
        
        canvas.drawCircle(x / 2, x / 2, x / 2, paint);  
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  
        canvas.drawBitmap(bitmap, rect, rect, paint);  
        return output;  
        
        
    }  
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试帅仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值