需求:圆形ImageView,矩形ImageView,矩形带圆角ImageView,模糊ImageView等等。
方法:使用第三方开发项目——glide-transformations,从名字上可以看出来这是和Glide配合使用的,类似于Glide的插件。
GitHub地址:https://github.com/wasabeef/glide-transformations
效果图如下:
使用步骤:
1、添加远程依赖库:
/*图片加载框架*/ implementation 'com.github.bumptech.glide:glide:3.7.0' /*处理图片工具*/ implementation 'jp.wasabeef:glide-transformations:3.3.0'
2、布局文件如下:(和平常一样创建ImageView即可)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_horizontal" xmlns:android="http://schemas.android.com/apk/res/android"> <ImageView android:id="@+id/Main_ivCropSquare" android:layout_width="100dp" android:layout_height="100dp" android:scaleType="fitXY" android:layout_marginTop="10dp" android:src="@drawable/img2"/> <ImageView android:id="@+id/Main_ivRoundCorner" android:layout_width="100dp" android:layout_height="100dp" android:scaleType="fitXY" android:layout_marginTop="10dp" android:src="@drawable/img2"/> <ImageView android:id="@+id/Main_ivCircle" android:layout_width="100dp" android:layout_height="100dp" android:scaleType="fitXY" android:layout_marginTop="10dp" android:src="@drawable/img2"/> <ImageView android:id="@+id/Main_ivBlur" android:layout_width="100dp" android:layout_height="100dp" android:scaleType="fitXY" android:layout_marginTop="10dp" android:src="@drawable/img2"/> <ImageView android:id="@+id/Main_ivCropGroup" android:layout_width="100dp" android:layout_height="100dp" android:scaleType="fitXY" android:layout_marginTop="10dp" android:src="@drawable/img2"/> </LinearLayout>
3、如何在Activity中使用呢?
//普通矩形 Glide.with(mContext).load(R.drawable.img2) .apply(bitmapTransform(new CropSquareTransformation())) .into(ivCropSquare); //长方形带圆角 Glide.with(mContext).load(R.drawable.img2) .apply(bitmapTransform(new RoundedCornersTransformation(10, 3))) .into(ivRoundCorner); //圆形 Glide.with(mContext).load(R.drawable.img2) .apply(bitmapTransform(new CircleCrop())) .into(ivCircle); //模糊效果 Glide.with(mContext).load(R.drawable.img2) .apply(bitmapTransform(new BlurTransformation())) .into(ivBlur); //组合效果(可以把前面的效果组合一起) MultiTransformation multi = new MultiTransformation( new BlurTransformation(25), new RoundedCornersTransformation(50, 0, RoundedCornersTransformation.CornerType.BOTTOM)); Glide.with(mContext).load(R.drawable.img2) .apply(bitmapTransform(multi)) .into(ivCropGroup);
PS,还有很多其他效果,比如:
ToonFilterTransformation SepiaFilterTransformation ContrastFilterTransformation InvertFilterTransformation PixelationFilterTransformation SketchFilterTransformation SwirlFilterTransformation BrightnessFilterTransformation KuwaharaFilterTransformation VignetteFilterTransformation