有人知道如何用Glide显示圆角图像吗? 我正在用Glide加载图像,但我不知道如何将圆角参数传递给这个库。
我需要显示图像像下面的例子:
有人知道如何用Glide显示圆角图像吗? 我正在用Glide加载图像,但我不知道如何将圆角参数传递给这个库。
我需要显示图像像下面的例子:
当前回答
在这种情况下,我需要添加阴影,和imageView抬高不工作
实现“com.github.bumptech.glide:滑翔:4.10.0”
XML
<FrameLayout
android:id="@+id/fl_image"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_margin="10dp"
android:background="@drawable/card_circle_background"
android:elevation="8dp">
<ImageView
android:id="@+id/iv_item_employee"
android:layout_width="60dp"
android:layout_height="60dp"
tools:background="@color/colorPrimary" />
</FrameLayout>
可拉的形状
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/white"/>
</shape>
滑翔的配置
Glide.with(this)
.asBitmap()
.load(item.image)
.apply(RequestOptions.circleCropTransform())
.into(iv_item_employee)
其他回答
这里有一个更模块化和更清晰的方法来在Glide中循环裁剪你的位图:
通过扩展BitmapTransformation创建一个自定义转换,然后重写transform方法,如下所示:
为了Glide 4.x.x
public class CircularTransformation extends BitmapTransformation {
@Override
protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
RoundedBitmapDrawable circularBitmapDrawable =
RoundedBitmapDrawableFactory.create(null, toTransform);
circularBitmapDrawable.setCircular(true);
Bitmap bitmap = pool.get(outWidth, outHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
circularBitmapDrawable.setBounds(0, 0, outWidth, outHeight);
circularBitmapDrawable.draw(canvas);
return bitmap;
}
@Override
public void updateDiskCacheKey(MessageDigest messageDigest) {}
}
为了Glide 3.x.x
public class CircularTransformation extends BitmapTransformation {
@Override
protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
RoundedBitmapDrawable circularBitmapDrawable =
RoundedBitmapDrawableFactory.create(null, toTransform);
circularBitmapDrawable.setCircular(true);
Bitmap bitmap = pool.get(outWidth, outHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
circularBitmapDrawable.setBounds(0, 0, outWidth, outHeight);
circularBitmapDrawable.draw(canvas);
return bitmap;
}
@Override
public String getId() {
// Return some id that uniquely identifies your transformation.
return "CircularTransformation";
}
}
然后在Glide builder中设置你需要它的地方:
Glide.with(yourActivity)
.load(yourUrl)
.asBitmap()
.transform(new CircularTransformation())
.into(yourView);
希望这对你有所帮助。
Glide 4.6.1版本
Glide.with(context)
.load(url)
.apply(RequestOptions.bitmapTransform(new CircleCrop()))
.into(imageView);
试试这个方法
code
Glide.with(this)
.load(R.drawable.thumbnail)
.bitmapTransform(new CropCircleTransformation(this))
.into(mProfile);
XML
<ImageView
android:id="@+id/img_profile"
android:layout_width="76dp"
android:layout_height="76dp"
android:background="@drawable/all_circle_white_bg"
android:padding="1dp"/>
all_circle_white_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="@android:color/white"/>
</shape>
</item>
</selector>
我用这个变换库。 - > https://github.com/wasabeef/glide-transformations 圆圈描边宽度是ImageView的填充
您也可以使用这个实现,不过值得注意的是,这个实现是基于匕首柄的
提供程序实现
@Module
@Named("circleCrop")
@InstallIn(SingletonComponent::class)
object AppModule {
@Singleton
@Provides
fun provideGlideInstance(
@ApplicationContext context: Context
) = Glide.with(context).setDefaultRequestOptions(
RequestOptions()
.placeholder(R.drawable.logo)
.error(R.drawable.logo)
.apply(RequestOptions().circleCropTransform())
.diskCacheStrategy(DiskCacheStrategy.DATA)
)
}
依赖注入
@Inject
@Named("circleCrop")
lateinit var glide: RequestManager
加载图片
glide.load(hotel.image).into(imgItemSearch)
你可以简单地调用roundedcornerstrtransform构造函数,它有一个拐角类型的枚举输入。是这样的:
Glide.with(context)
.load(bizList.get(position).getCover())
.bitmapTransform(new RoundedCornersTransformation(context,20,0, RoundedCornersTransformation.CornerType.TOP))
.into(holder.bizCellCoverImg);
但首先你必须添加滑翔转换到你的项目。