欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Glide控制显示4个角

发布时间:2024/10/12 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Glide控制显示4个角 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

自定义Glide

package com.sibei.lumbering.utils; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF;import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; import com.bumptech.glide.load.resource.bitmap.TransformationUtils;import java.security.MessageDigest;import androidx.annotation.NonNull;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;}@Overrideprotected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {//变换的时候裁切Bitmap bitmap = TransformationUtils.centerCrop(pool, toTransform, outWidth, outHeight);return roundCrop(pool, bitmap);}@Overridepublic 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);RectF rectRound = new RectF(0f, 100f, source.getWidth(), source.getHeight());canvas.drawRect(rectRound, paint);return result;} }

GlideUtil

 

public class GlideUtils {private Context context;public GlideUtils(Context context){this.context = context;}public void load(String url, ImageView iv){Glide.with(context).asBitmap().load(url).error(R.drawable.no_banner).into(iv);}public void load(int url, ImageView iv){Glide.with(context).asBitmap().load(url).error(R.drawable.no_banner).into(iv);}public void load(Object url, ImageView iv){Glide.with(context).asBitmap().load(url).error(R.drawable.no_banner).into(iv);}public void loadCire(Object url, ImageView iv){//设置图片大小RoundedCorners roundedCorners = new RoundedCorners(15);//通过RequestOptions扩展功能,RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);Glide.with(context).asBitmap().load(url).error(R.drawable.no_banner).apply(options).into(iv);}public static RequestBuilder<Drawable> GlideWithPlaceHolder(Context context, Object object,int radius) {return Glide.with(context).load(object).diskCacheStrategy(DiskCacheStrategy.RESOURCE).apply(new RequestOptions().placeholder(R.drawable.no_banner).dontAnimate().transform(new GlideRoundTransform(radius)));}

 

 

总结

以上是生活随笔为你收集整理的Glide控制显示4个角的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。