Glide

作者: HOLLE_karry | 来源:发表于2020-12-24 09:44 被阅读0次

    加载圆角图片(上下文,图片,控件)GlideImage.setGlideImageView(context,company.getLogo(),viewHolder1.iv_img);
    加载圆圈轮廓GlideImage.setGlideImageView(mContext,company.getLogo(),logo);

    public class GlideCircleTransform extends BitmapTransformation {
        @Override
        public void updateDiskCacheKey(MessageDigest messageDigest) {
    
        }
    
        public GlideCircleTransform(Context context) {
    
        }
    
        @Override
        protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
            return circleCrop(pool, toTransform);
        }
    
        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;
        }
    }
    
    public class GlideRoundNewTransform extends BitmapTransformation {
    
        private static float radius = 0f;
    
        public GlideRoundNewTransform(Context context) {
            this(context, 4);
        }
    
        public GlideRoundNewTransform(Context context, int dp) {
             super();
            this.radius = Resources.getSystem().getDisplayMetrics().density * dp;
        }
    
        @Override
        protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
            return roundCrop(pool, toTransform);
        }
    
        private static Bitmap roundCrop(BitmapPool pool, Bitmap source) {
            if (source == null) return null;
            Bitmap bitmap = changeBitmapSize(source);
            Bitmap result = pool.get(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_4444);
            if (result == null) {
    
                int width = bitmap.getWidth();
                int height = bitmap.getHeight();
                result = Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_4444);
            }
            Canvas canvas = new Canvas(result);
            Paint paint = new Paint();
            paint.setShader(new BitmapShader(bitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
            paint.setAntiAlias(true);
            RectF rectF = new RectF(0f, 0f, bitmap.getWidth(), bitmap.getHeight());
            canvas.drawRoundRect(rectF, radius, radius, paint);
            return result;
        }
        public static Bitmap changeBitmapSize(Bitmap bitmap) {
            int width = bitmap.getWidth();
            int height = bitmap.getHeight();
            //设置想要的大小
            int newWidth=72;
            int newHeight=72;
            //计算压缩的比率
            float scaleWidth=((float)newWidth)/width;
            float scaleHeight=((float)newHeight)/height;
            //获取想要缩放的matrix
            Matrix matrix = new Matrix();
            matrix.postScale(scaleWidth,scaleHeight);
            //获取新的bitmap
            bitmap=Bitmap.createBitmap(bitmap,0,0,width,height,matrix,true);
            bitmap.getWidth();
            bitmap.getHeight();
            Log.e("newWidth","newWidth"+bitmap.getWidth());
            Log.e("newHeight","newHeight"+bitmap.getHeight());
            return bitmap;
        }
    
    
        @Override
        public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
    
        }
    }
    
    public class GlideRoundTransform extends BitmapTransformation {
        @Override
        public void updateDiskCacheKey(MessageDigest messageDigest) {
    
        }
    
        private static float radius = 0f;
    
        /**
         * 构造函数 默认圆角半径 4dp
         * @param context Context
         */
        public GlideRoundTransform(Context context) {
            this(context, 6);
            radius = Resources.getSystem().getDisplayMetrics().density * 6;
        }
        /**
         * 构造函数
         * @param context Context
         * @param dp 圆角半径
         */
        public GlideRoundTransform(Context context, int dp) {
            super();
            radius = Resources.getSystem().getDisplayMetrics().density * dp;
        }
    
        @Override
        protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
            return roundCrop(pool, toTransform);
        }
    
        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;
        }
    }
    
    public class GlideImage {
    //        普通加载图片
        public static void setImg(Context context, String url, ImageView imageView){
            RequestOptions options = new RequestOptions()
                    .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
                    .placeholder(R.mipmap.main_hot_summary_default_img)
                    .error(R.mipmap.main_hot_summary_default_img);
    
            Glide.with(context)
                    .load(url)
                    .apply(options)
                    .into(imageView);
        }
    //    加载方角图片
        public static void setRoundImg(Context context, String url, ImageView imageView,int num){
            RequestOptions options = new RequestOptions()
                    .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
                    .dontAnimate()
                    .transforms( new CenterCrop(),new GlideRoundTransform(context,num));
            //Glide 加载图片简单用法
            Glide.with(context)
                    .load(url)
                    .apply(options)
                    .into(imageView);
        }
    
        //    图片
        public static void setGlideImageView(Context context, String url, ImageView imageView){
            int width = (int) ScreenUtils.dp2px(context, 60);
            int height = (int) ScreenUtils.dp2px(context, 50);
            RequestOptions options = new RequestOptions()
                    .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
                    .override(width,height)
                    .placeholder(R.mipmap.company_default)
                    .error(R.mipmap.company_default)
                    .centerInside()
                    .dontAnimate();
    //                .transforms(new CenterCrop(), new GlideCircleTransform(context));
            //Glide 加载图片简单用法
            Glide.with(context)
                    .load(url)
                    .apply(options)
                    .into(imageView);
        }
    
    
    //    加载圆角图片
        public static void setCircleImg(Context context, String url, ImageView imageView){
                RequestOptions options = new RequestOptions()
                        .placeholder(R.mipmap.main_hot_summary_default_img)
                        .error(R.mipmap.main_hot_summary_default_img)
                        .transform(new CenterCrop(), new GlideCircleTransform(context));
                //Glide 加载图片简单用法
                Glide.with(context)
                        .load(url)
                        .apply(options)
                        .into(imageView);
        }
        //    加载方角图片
        public static void setRoundBitmap(Context context, String url, ImageView imageView, int num){
            RequestOptions options = new RequestOptions()
                    .placeholder(R.mipmap.main_hot_summary_default_img)
                    .error(R.mipmap.main_hot_summary_default_img)
                    .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
                    .dontAnimate()
                    .transform( new CenterCrop(),new GlideRoundTransform(context,num));
            //Glide 加载图片简单用法
            Glide.with(context)
                    .load(url)
                    .apply(options)
                    .into(imageView);
        }
    }
    

    相关文章

      网友评论

          本文标题:Glide

          本文链接:https://www.haomeiwen.com/subject/wofunktx.html