广告
返回顶部
首页 > 资讯 > 精选 >如何解决Android中Glide与CircleImageView加载圆形图片的问题
  • 584
分享到

如何解决Android中Glide与CircleImageView加载圆形图片的问题

glide 2023-05-30 20:05:51 584人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关如何解决Android中Glide与CircleImageView加载圆形图片的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 不使用占位符注释掉这两句代码即可。.pl

这篇文章将为大家详细讲解有关如何解决Android中Glide与CircleImageView加载圆形图片的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1. 不使用占位符

注释掉这两句代码即可。

.placeholder(R.drawable.nORMal_photo)    .error(R.drawable.normal_photo)

Glide 加载时的代码:

Glide.with(mContext)                .load(datas.getUser_img())                .centerCrop()                .into(ivAvator);

此时XML中的还是CircleImageView,代码如下:

<de.hdodenhof.circleimageview.CircleImageView      android:id="@+id/iv_avator"      android:layout_width="130px"      android:layout_height="130px"      android:src="@drawable/normal_photo" />

2. 不使用默认动画

添加一句代码即可:

.dontAnimate()//防止设置placeholder导致第一次不显示网络图片,只显示默认图片的问题

此时Glide加载时的完整代码:

Glide.with(mContext)        .load(datas.getUser_img())        .centerCrop()        .dontAnimate()//防止设置placeholder导致第一次不显示网络图片,只显示默认图片的问题        .error(R.drawable.normal_photo)        .placeholder(R.drawable.normal_photo)        .into(ivAvator);

此时XML中的依然是CircleImageView,这没什么好说的。代码如下:

<de.hdodenhof.circleimageview.CircleImageView      android:id="@+id/iv_avator"      android:layout_width="130px"      android:layout_height="130px"      android:src="@drawable/normal_photo" />

3. 使用glide本身的圆形加载方式

这里就直接看下Glide加载时的代码,注意:

此时的ivAvator可以使用普通的ImageView,不必再引入CircleImageView第三方框架。(当然你依然可以写成CircleImageView)

asBitmap() 这句不能少,否则下面的方法会报错。

Glide.with(mContext)       .load(datas.getUser_img())       .asBitmap() //这句不能少,否则下面的方法会报错       .centerCrop()       .into(new BitmapimageViewTarget(ivAvator) {         @Override         protected void setResource(Bitmap resource) {           RoundedBitmapDrawable circularBitmapDrawable =               RoundedBitmapDrawableFactory.create(getResources(), resource);           circularBitmapDrawable.setCircular(true);           ivAvator.setImageDrawable(circularBitmapDrawable);         }       });

此时xml中的代码修改成ImageView,代码如下:

<ImageView      android:id="@+id/iv_avator"      android:layout_width="130px"      android:layout_height="130px"      android:src="@drawable/normal_photo" />

4. 同样使用Glide本身的圆形加载方式

这种方式和上面的基本类似。首先GlideCircleTransform继承BitmapTransformation,代码如下:

//圆形图片public class GlideCircleTransform extends BitmapTransformation {  public GlideCircleTransform(Context context) {    super(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;    // TODO this could be acquired from the pool too    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;  }  @Override public String getId() {    return getClass().getName();  }}

Glide加载时的代码如下:

Glide.with(mContext)                .load(datas.getUser_img())                .centerCrop()                .error(R.drawable.normal_photo)                .placeholder(R.drawable.normal_photo)                .transform(new GlideCircleTransform(mContext))                .into(ivAvator);

注意: 此时的ivAvator依然可以是ImageView(当然你依然可以写成CircleImageView) 。代码如下:

<ImageView      android:id="@+id/iv_avator"      android:layout_width="130px"      android:layout_height="130px"      android:src="@drawable/normal_photo" />

关于“如何解决Android中Glide与CircleImageView加载圆形图片的问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: 如何解决Android中Glide与CircleImageView加载圆形图片的问题

本文链接: https://www.lsjlt.com/news/221207.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何解决Android中Glide与CircleImageView加载圆形图片的问题
    这篇文章将为大家详细讲解有关如何解决Android中Glide与CircleImageView加载圆形图片的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 不使用占位符注释掉这两句代码即可。.pl...
    99+
    2023-05-30
    glide
  • Android如何将Glide动态加载不同大小的图片切圆角与圆形
    这篇文章主要介绍了Android如何将Glide动态加载不同大小的图片切圆角与圆形,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Glide加载动态图片首先我们先要去依赖一个g...
    99+
    2023-05-30
    android glide
  • Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0)
    Feature: 点击选择拍照或者打开相册,选取图片进行裁剪最后设置为圆形头像。Problem: 拍好照片,点击裁剪,弹Toast“无法加载此图片”。Solution: 在裁剪的class里加两行代码intent.addFlags(Inte...
    99+
    2023-05-30
    android 圆形 头像
  • vue中图片加载不出来的问题及解决
    目录一、项目打包完成后,打开整体空白1、路径问题原因解决办法2、vue-router的history模式打包后界面空白二、assets目录下图片加载不出来vue-cli的assets...
    99+
    2022-11-13
  • CSS如何解决前端图片变形的问题
    这篇文章将为大家详细讲解有关CSS如何解决前端图片变形的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、让图片的宽度或者高度等于容器的宽度或高度,多余的裁掉,然后让图片居中:<style&nb...
    99+
    2023-06-08
  • 如何解决vue的v-for循环中图片加载路径问题
    这篇文章将为大家详细讲解有关如何解决vue的v-for循环中图片加载路径问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先看一下产品需求,如下图所示,产品要求图片和它的...
    99+
    2022-10-19
  • vue项目中图片懒加载时出现的问题及解决
    目录vue图片懒加载的问题vue图片懒加载实现步骤vue图片懒加载踩过的坑今天踩过的坑总结vue图片懒加载的问题 项目中遇到一个问题,记录一下,vue项目中前期没有做图片懒加载的时候...
    99+
    2022-11-13
  • 如何解决layer图标icon不加载的问题
    这篇文章将为大家详细讲解有关如何解决layer图标icon不加载的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。之前在项目中使用layer弹框感觉体验很好,这次的项目...
    99+
    2022-10-19
  • MUI如何解决动态列表页图片懒加载再次加载不成功的bug问题
    这篇文章给大家分享的是有关MUI如何解决动态列表页图片懒加载再次加载不成功的bug问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首次加载时图片可以获取成功,再次加载失败,通过...
    99+
    2022-10-19
  • 如何使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题
    这篇文章给大家分享的是有关如何使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在项目中用ajax异步获取数据后有时会因为数...
    99+
    2022-10-19
  • Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案
    Android ListView异步加载图片错位、重复、闪烁分析以及解决方案,具体问题分析以及解决方案请看下文。 我们在使用ListView异步加载图片的时候,在快速滑动或者网...
    99+
    2022-06-06
    图片 listview 解决方案 Android
  • 如何解决Android中图片处理避免出现oom的问题
    这篇文章主要介绍如何解决Android中图片处理避免出现oom的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 通过设置采样率压缩res资源图片压缩 decodeResource  pub...
    99+
    2023-05-30
    android oom
  • 如何解决springMVC跳转js、css图片等静态资源无法加载的问题
    这篇文章将为大家详细讲解有关如何解决springMVC跳转js、css图片等静态资源无法加载的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。web.xml中servlet> <s...
    99+
    2023-05-31
    springmvc js css
  • 如何解决多行排列图片时hover上去加边框挤图片的问题
    本篇内容主要讲解“如何解决多行排列图片时hover上去加边框挤图片的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决多行排列图片时hover上去加边框...
    99+
    2022-10-19
  • PHP在Linux中的加载问题该如何解决?
    PHP作为一门流行的编程语言,已经成为了许多网站和应用程序的首选语言。在Linux操作系统中,PHP的加载问题是一个常见的挑战。在本文中,我们将探讨PHP在Linux中的加载问题,并提供一些解决方法。 PHP加载问题的原因 在Linu...
    99+
    2023-11-04
    load linux linux
  • Java IDE中的路径加载问题如何解决?
    Java是一种面向对象、跨平台的编程语言,而Java开发环境(IDE)是开发者开发Java程序的必备工具之一。然而,当我们在IDE中开发Java程序时,常常会遇到路径加载问题,这会使得程序无法正常运行。本文将介绍Java IDE中常见的路...
    99+
    2023-07-23
    ide path load
  • 如何解决HTML5中图片之间缝隙的问题
    这篇文章给大家分享的是有关如何解决HTML5中图片之间缝隙的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在做h6的项目,碰到了一个百思不得其解的问题,几个img标签中间有大...
    99+
    2022-10-19
  • 如何解决thinkphp5中图片处理遇到的问题
    这篇文章将为大家详细讲解有关如何解决thinkphp5中图片处理遇到的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。图片处理中遇到的问题我额外把图片的处理和上传封装成了一个类,返回保存的图片路径在图片...
    99+
    2023-06-15
  • 如何解决多行图片hover加边框会把下面的图片挤到别处的问题
    本篇内容主要讲解“如何解决多行图片hover加边框会把下面的图片挤到别处的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决多行图片hover加边框会把...
    99+
    2022-10-19
  • html中如何解决图片与文字垂直方向不对齐问题
    这篇文章主要介绍html中如何解决图片与文字垂直方向不对齐问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!比如说,现在我要做一个简单的删除按钮,只由一个icon和“删除”两个字组成...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作