`
龙哥IT
  • 浏览: 258285 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

图片圆角并且是CENTERCROP属性的情况下

 
阅读更多

当图片设置

android:scaleType="centerCrop"

属性,又要实现圆角图片的时候,出现的一些问题,当设置centerCrop的时候,圆角就没有了,

这个时候需要用到另一个方法,设置两个Transformer

Glide.with(mContext)
        .load(vo.getImage())
        .dontAnimate()
        .placeholder(R.drawable.noinfo)
        .error(R.drawable.noinfo)
        .transform(new CenterCrop(mContext),new GlideRoundTransform(mContext, 10))
        .into(imgs1);

 

GlideRoundTransform

 来源于 https://www.jianshu.com/p/0e79080c8116

package com.bs.feifubao.view;

import android.content.Context;
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;

public class GlideRoundTransform extends BitmapTransformation {
    private static float radius = 0f;

    public GlideRoundTransform(Context context) {
        this(context, 4);
    }

    public GlideRoundTransform(Context context, int dp) {
        super(context);
        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 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;
    }

    @Override
    public String getId() {
        return getClass().getName() + Math.round(radius);
    }


}

 

分享到:
评论

相关推荐

    Imageview之图片填充模式Centercrop模式实现

    在Android开发中,ImageView是用于显示图像的常见组件。...这种模式在很多场合都很实用,比如作为背景图片、头像等,可以确保图像不失真的情况下填充空间。希望这些信息对你在实际项目中处理图像显示有所帮助。

    Android设置图片圆角的方法

    Android 设置图片圆角的方法 Android 设置图片圆角的方法是 Android 开发中的一种常见需求,对图片进行二次处理,例如加圆角,或者显示圆形图片是非常常见的需求。下面将详细介绍 Android 设置图片圆角的方法。 ...

    android 圆角图片实现

    总的来说,Android中实现圆角图片有多种方式,包括使用Shape Drawable、设置`scaleType`和`cropToPadding`属性,以及利用图片加载库如Glide进行处理。开发者可以根据项目需求和性能考虑选择合适的方法。记得在优化...

    0690-极智开发-解读pytorch torchvision.transformers.CenterCrop方法

    0690_极智开发_解读pytorch torchvision.transformers.CenterCrop方法

    ImageView的scaleType属性练习

    这样可以保证图片的纵横比不变,通常用于需要填充背景的情况,但可能会截取掉部分图像。 3. `centerInside` 此模式下,图片会被缩放到适合ImageView,同时保持其原始纵横比,确保整个图片都可见。ImageView的空白...

    gridview和imageview属性

    默认情况下,GridView会自动计算列数以适应屏幕宽度,但你可以通过这个属性设置固定数量的列。 2. `android:verticalSpacing` 和 `android:horizontalSpacing`:这两个属性分别用于设置行间和列间的间距,可以调整...

    Android 开发中常用布局属性

    - `CENTER_CROP`/`centerCrop`:图片按比例放大至`ImageView`尺寸,确保图片至少有一个维度充满整个`ImageView`。 - `CENTER_INSIDE`/`centerInside`:图片按比例缩小至`ImageView`尺寸,确保图片完全可见,且不会...

    android布局属性大全(总结)

    - **CENTER_CROP/centerCrop**:按比例放大图片以填充整个视图,确保图片的长宽与视图相同。 - **CENTER_INSIDE/centerInside**:保持图片比例的同时将其居中显示,并缩小至视图内,确保图片的长宽不超过视图。 - **...

    Android自定义圆形图片和圆角图片

    在Android开发中,为了实现更具视觉吸引力的UI设计,经常需要对图片进行处理,比如将矩形图片转换为圆形或带有圆角的图片。本文将深入探讨如何在Android中自定义实现这一功能。 首先,我们需要了解Android中的...

    android头像圆角处理

    总结来说,Android中实现ImageView的圆角图片处理主要有XML属性设置、`clipToPadding`、自定义View以及使用第三方库这几种方法。具体选择哪种方式取决于项目需求和个人喜好。在实际开发中,可以根据项目的复杂度和...

    Android ImgView属性图文详解

    * centerCrop:图片将被居中显示,并且被裁剪到 ImageView 的大小。 * centerInside:图片将被居中显示,并且被缩放到 ImageView 的大小,而不超过 ImageView 的大小。 【代码】 ```xml android:id="@+id/iv" ...

    图解说明android中ImageView的scaletype属性.pdf

    这样可以确保图片的长宽比不变,并且完全覆盖ImageView。如果图片的尺寸小于ImageView,那么图片的一部分将不会显示,而另一部分会填充整个ImageView。 3. **CENTER_INSIDE / centerInside** 在这个模式下,图片会...

    Android圆角ImageView

    在Android开发中,`RoundImageView`是一个非常实用的组件,它允许我们轻松地展示带有圆角效果的图片,常用于创建美观的用户界面。这个组件不仅提供了圆形图像的展示方式,还可以实现点击后图片变暗的效果,从而增加...

    android屏幕自适应android属性[参考].pdf

    开发者应深入理解这些属性,结合实际情况灵活运用,以确保应用能在各种设备上展现出一致且美观的界面。同时,随着Android系统版本的更新,还有如ConstraintLayout等新的布局工具,可以帮助开发者更轻松地实现复杂的...

    Adroid 之 ImageView属性详解

    - `src`属性通常用于设置ImageView显示的图像资源,可以是本地图片、网络图片或九宫格图像。通过`android:src="@drawable/my_image"`设置。 - `drawable`是一个更广泛的资源类型,可以包含多种图像资源,如位图、...

    android屏幕自适应android属性[参照].pdf

    5. 像素距离属性:`layout_margin*`属性用于设置视图与其他视图或边界的距离,例如`android:layout_marginBottom`,可以定义视图底部与下一个视图或父布局底部的距离。 6. `EditText`的`android:hint`属性:此属性...

    图片自适应大小1

    `imageview_background.xml`定义了一个形状,包含填充颜色、边框宽度、颜色以及圆角半径等属性,从而为图片提供了一个带有内边距的白色背景和灰色边框。 总结来说,要让网络下载的图片在Android应用中自适应`...

    android 只显示一张大图顶部的Demo

    用此自定义ImageView可显示一张大图的头部,若是图片太矮,会使用系统的centerCrop属性 显示中间部分

    Android_布局属性大全

    - **CENTER_CROP/centerCrop**:按比例放大图片,确保图片的长宽与视图的长宽相等。 - **CENTER_INSIDE/centerInside**:图片居中显示,并且通过缩小比例确保图片的长宽都不超过视图的尺寸。 - **FIT_CENTER/...

Global site tag (gtag.js) - Google Analytics