Glide4.0使用


導入

  1. dependencies {
      compile 'com.github.bumptech.glide:glide:4.0.0'
      compile 'com.android.support:support-v4:25.3.1'
      annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0'
    }

     

  2. 2.下載jar  地址:glide.jar

基本使用

  1. 基本使用
Glide.with(this).load(imgUrl).into(img1);

  2. 設置預加載和加載失敗的圖片及緩存策略

  

RequestOptions options = new RequestOptions()
.centerCrop()
.placeholder(R.mipmap.ic_launcher)//預加載圖片
.error(R.mipmap.ic_launcher)//加載失敗顯示圖片
.priority(Priority.HIGH)//優先級
.diskCacheStrategy(DiskCacheStrategy.NONE);//緩存策略
Glide.with(this).load(imgUrl).apply(options).into(img1);

 

 

顯示圓形圖片

  •   定義轉化圓形的類 繼承自BitmapTransforation

  

public class GlideCircleTransform extends BitmapTransformation {
    public GlideCircleTransform(){
        super();
    }

    @Override
    protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {
        return circleCrop(pool,toTransform);
    }

    @Override
    public void updateDiskCacheKey(MessageDigest messageDigest) {

    }
    private static Bitmap circleCrop(BitmapPool pool,Bitmap source){
        if(source==null) return null;
        int size=Math.min(source.getWidth(),source.getHeight());
        int x=(source.getWidth()-size)/2;
        int y=(source.getHeight()-size)/2;
        Bitmap squared= Bitmap.createBitmap(source,x,y,size,size);
        Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);
        if(result==null){
            result=Bitmap.createBitmap(size,size,Bitmap.Config.ARGB_8888);
        }
        Canvas canvas=new Canvas(result);
        Paint paint=new Paint();
        paint.setShader(new BitmapShader(squared,BitmapShader.TileMode.CLAMP,BitmapShader.TileMode.CLAMP));
        paint.setAntiAlias(true);
        float r=size/2f;
        canvas.drawCircle(r,r,r,paint);
        return result;
    }
}

 

 

  •  在RequestOptions中配置該類   

  

RequestOptions options2 = new RequestOptions()
                        .centerCrop()
                        .placeholder(R.mipmap.ic_launcher)//預加載圖片
                        .error(R.mipmap.ic_launcher)//加載失敗顯示圖片
                        .priority(Priority.HIGH)//優先級
                        .diskCacheStrategy(DiskCacheStrategy.NONE)//緩存策略
                        .transform(new GlideCircleTransform());//轉化為圓形
Glide.with(this).load(imgUrl).apply(options2).into(img1);

 

 

 

顯示圓角圖片

  • 定義轉化圓形的類 繼承自BitmapTransforation

  

public class GlideRoundTransform extends BitmapTransformation {

    private static float radius=0f;
    public GlideRoundTransform(){
        this(4);
    }
    public GlideRoundTransform(int dp){
        super();
        this.radius= Resources.getSystem().getDisplayMetrics().density*dp;
    }


    @Override
    protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {
        return roundCrop(pool,toTransform);
    }

    @Override
    public void updateDiskCacheKey(MessageDigest messageDigest) {

    }


    private static Bitmap roundCrop(BitmapPool pool,Bitmap source){
        if(source==null){
            return null;
        }
        Bitmap result=pool.get(source.getWidth(),source.getHeight(), Bitmap.Config.ARGB_8888);
        if(result==null){
            result=Bitmap.createBitmap(source.getWidth(),source.getHeight(), Bitmap.Config.ARGB_8888);
        }
        Canvas canvas=new Canvas(result);
        Paint paint=new Paint();
        paint.setShader(new BitmapShader(source,BitmapShader.TileMode.CLAMP,BitmapShader.TileMode.CLAMP));
        paint.setAntiAlias(true);
        RectF rectF=new RectF(0f,0f,source.getWidth(),source.getHeight());
        canvas.drawRoundRect(rectF,radius,radius,paint);

        return result;
    }
}

 

  • 在RequestOptions中配置該類 

 

RequestOptions options1 = new RequestOptions()
                        .centerCrop()
                        .placeholder(R.mipmap.ic_launcher)//預加載圖片
                        .error(R.mipmap.ic_launcher)//加載失敗顯示圖片
                        .priority(Priority.HIGH)//優先級
                        .diskCacheStrategy(DiskCacheStrategy.NONE)//緩存策略
                        .transform(new GlideRoundTransform(20));//轉化為圓角
Glide.with(this).load(imgUrl).apply(options1).into(img1);

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM