Android之圆角图片控件ImageFilterView

527 阅读3分钟

ImageFilterViewConstraintLayout 2.0之后新增的一个图片处理控件,它继承自AppCompatImageView,并扩展了一些图像处理的属性方法。以下是对ImageFilterView API的详细介绍及使用方式:

一、ImageFilterView的主要功能

  1. 图片滤镜:通过app:src、app:altSrc和crossfade属性实现滤镜效果。其中,src属性是组件自身显示的图片,可以看作是背景层的图片;altSrc属性是组件上层显示的图片,可以看作是前台显示的图片,默认不显示,因为其透明度为0;crossfade属性用来调节altSrc中图片的透明度,数值从0到1,默认值为0,表示全透明,1表示不透明。
  2. 圆角处理:通过app:round或app:roundPercent属性设置圆角。app:round属性通过长度来控制圆角的弧度,取值在0到size/2之间;app:roundPercent属性通过百分比来控制圆角的弧度,取值在0到1之间。这两个属性中的任意一个都可以调整图片的圆角,在实际使用时只需要二选一即可。
  3. 图片缩放:通过app:imageZoom属性控制图片的缩放效果,该属性的值为浮点数值。
  4. 图片旋转:通过app:imageRotate属性控制图片的旋转效果,该属性值为旋转的角度。图片旋转时以12点钟方向为0度,顺时针旋转,角度逐渐增大。
  5. 图片平移:通过app:imagePanX和app:imagePanY属性控制图片在X轴和Y轴方向上的平移效果,这两个属性的值都为int数值。

二、ImageFilterView的其他属性

  1. 饱和度:通过app:saturation属性设置图像的饱和度,默认值为1,表示原始饱和度;0表示灰阶样式;大于1的数值表示超饱和状态。
  2. 亮度:通过app:brightness属性设置图像的亮度,默认值为1,表示原色;值越大亮度越高;0表示黑色。
  3. 色温:通过app:warmth属性调整图像的色温,默认值为1,表示中性色温;小于1的数值表示冷色调;大于1的数值表示暖色调。
  4. 对比度:通过app:contrast属性设置图像的对比度,默认值为1,表示不变;0表示灰色;大于1的数值表示高对比度状态。
  5. 覆盖层:通过app:overlay属性定义alt图像是在原始图像的顶部淡入还是交叉淡入,默认值为true。对于半透明对象,可以设置为false。

三、ImageFilterView的使用方式

在XML布局文件中使用ImageFilterView时,需要引入相应的命名空间,并设置所需的属性和值。例如:

	<androidx.constraintlayout.utils.widget.ImageFilterView
	    android:id="@+id/imageFilterView"
	    android:layout_width="200dp"
	    android:layout_height="100dp"
	    android:layout_marginLeft="20dp"
	    android:layout_marginTop="20dp"
	    android:scaleType="centerCrop"
	    app:round="20dp"
            app:srcCompat="@mipmap/bg_image"
            app:altSrc="@mipmap/image_photo"
	    app:crossfade="0.3"
	    app:saturation="1.5"
	    app:brightness="1.2"
	    app:warmth="0.8"
	    app:contrast="1.2"
	    />

bg_image bg_image.webp image_photo image_photo.png

从网上借用两张图片设置以上属性运行真机效果:

image.png

在上面的示例中,ImageFilterView被设置为显示一张名为“image_photo”的图片,并应用了一系列的滤镜、圆角、缩放、旋转和平移效果。同时,还设置了图片的饱和度、亮度、色温和对比度等属性。