ImageFilterView是ConstraintLayout 2.0之后新增的一个图片处理控件,它继承自AppCompatImageView,并扩展了一些图像处理的属性方法。以下是对ImageFilterView API的详细介绍及使用方式:
一、ImageFilterView的主要功能
- 图片滤镜:通过app:src、app:altSrc和crossfade属性实现滤镜效果。其中,src属性是组件自身显示的图片,可以看作是背景层的图片;altSrc属性是组件上层显示的图片,可以看作是前台显示的图片,默认不显示,因为其透明度为0;crossfade属性用来调节altSrc中图片的透明度,数值从0到1,默认值为0,表示全透明,1表示不透明。
- 圆角处理:通过app:round或app:roundPercent属性设置圆角。app:round属性通过长度来控制圆角的弧度,取值在0到size/2之间;app:roundPercent属性通过百分比来控制圆角的弧度,取值在0到1之间。这两个属性中的任意一个都可以调整图片的圆角,在实际使用时只需要二选一即可。
- 图片缩放:通过app:imageZoom属性控制图片的缩放效果,该属性的值为浮点数值。
- 图片旋转:通过app:imageRotate属性控制图片的旋转效果,该属性值为旋转的角度。图片旋转时以12点钟方向为0度,顺时针旋转,角度逐渐增大。
- 图片平移:通过app:imagePanX和app:imagePanY属性控制图片在X轴和Y轴方向上的平移效果,这两个属性的值都为int数值。
二、ImageFilterView的其他属性
- 饱和度:通过app:saturation属性设置图像的饱和度,默认值为1,表示原始饱和度;0表示灰阶样式;大于1的数值表示超饱和状态。
- 亮度:通过app:brightness属性设置图像的亮度,默认值为1,表示原色;值越大亮度越高;0表示黑色。
- 色温:通过app:warmth属性调整图像的色温,默认值为1,表示中性色温;小于1的数值表示冷色调;大于1的数值表示暖色调。
- 对比度:通过app:contrast属性设置图像的对比度,默认值为1,表示不变;0表示灰色;大于1的数值表示高对比度状态。
- 覆盖层:通过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
image_photo
从网上借用两张图片设置以上属性运行真机效果:
在上面的示例中,ImageFilterView被设置为显示一张名为“image_photo”的图片,并应用了一系列的滤镜、圆角、缩放、旋转和平移效果。同时,还设置了图片的饱和度、亮度、色温和对比度等属性。