这是个工具类,主要看loadCornersImgByLocal方法中的逻辑
示例代码如下:
class GlideUtil {
companion object{
/** 加载网络图片 */
fun loadNormalImgByNet(context: Context,netUrl: String,imageView: ImageView){
Glide.with(context).load(netUrl).apply(normalOption()).into(imageView)
}
/** 加载网络图片 */
fun loadCircleImgByNet(context: Context,netUrl: String,imageView: ImageView){
Glide.with(context).load(netUrl).apply(circleOption()).into(imageView)
}
/** 加载本地图片 */
fun loadCircleImgByLocal(context: Context, localUrl: String, imageView: ImageView){
Glide.with(context).load(Uri.fromFile(File(localUrl))).apply(circleOption()).into(imageView)
}
/** 加载资源图片 */
fun loadCircleImgByResource(context: Context, @RawRes @DrawableRes @Nullable resourceId: Int, imageView: ImageView){
Glide.with(context).load(resourceId).apply(normalOption()).into(imageView)
}
/** 加载本地圆角图片
* 圆角加载有问题,CustomViewTarget可参考
* 对于本地圆形图片可以参考使用RoundedBitmapDrawable加载
* */
fun loadCornersImgByLocal(context: Context, @RawRes @DrawableRes @Nullable localRes: Int, view: View,roundingRadius: Int){
Glide.with(context).load(localRes).apply(cornersOption(roundingRadius)).into(object :
CustomViewTarget<View,Drawable>(view){
override fun onLoadFailed(errorDrawable: Drawable?) {
}
override fun onResourceCleared(placeholder: Drawable?) {
}
override fun onResourceReady(
resource: Drawable,
transition: Transition<in Drawable>?
) {
view.background = resource
}
})
}
/** 圆形头像配置 */
private fun circleOption() = RequestOptions.bitmapTransform(CircleCrop())
.placeholder(R.drawable.icon_ranking_list_two_default)//
.error(R.drawable.icon_ranking_list_two_default)//
.diskCacheStrategy(DiskCacheStrategy.NONE) //不缓存到SD卡
/** 圆角图片配置 */
private fun cornersOption(roundingRadius: Int) = RequestOptions.bitmapTransform(RoundedCorners(roundingRadius))
.placeholder(R.drawable.icon_ranking_list_two_default)//
.error(R.drawable.icon_ranking_list_two_default)//
.diskCacheStrategy(DiskCacheStrategy.NONE) //不缓存到SD卡
/** 普通图片配置 */
private fun normalOption() = RequestOptions
.placeholderOf(R.drawable.icon_ranking_list_two_default)//
.error(R.drawable.icon_ranking_list_two_default)//
.diskCacheStrategy(DiskCacheStrategy.NONE) //不缓存到SD卡
}
}