原生ImageView能做哪些事。

一、XML

图片显示方式scaleType

1、默认显示:fixCenter(固定中心)

这是ScaleType的默认属性,表示居中,适应宽高按原比例放缩。

android:scaleType="fixCenter"

在这里插入图片描述

2、center(中心)

表示居中,原尺寸,超出部分裁剪。

android:scaleType="center"

在这里插入图片描述

3、fitXY(固定XY轴)

延XY轴方向放缩,填充整个组件。

android:scaleType="fitXY"

在这里插入图片描述

4、centerCrop(固定XY轴)

表示居中,原比例放大到填充整个组件,超出部分裁剪。

android:scaleType="centerCrop"

在这里插入图片描述

5、matrix(矩阵)

原图放置左上角,超出部分裁剪。
用Matrix对ImageView作放大和缩小的效果时,ImageView的ScaleType必须设置为matrix

android:scaleType="matrix"

在这里插入图片描述

6、fitEnd(固定结尾)

原图按比例放缩到宽度,显示在下方的位置。

android:scaleType="fitEnd"

在这里插入图片描述

7、fitStart(固定开头)

原图按比例放缩到宽度,显示在上方的位置。

android:scaleType="fitStart"

在这里插入图片描述

8、centerInside(固定内部)

表示居中,适应宽高按原比例缩小。和fixCenter相似,但是它只缩小不放大。

android:scaleType="centerInside"

在这里插入图片描述

9、固定一个高度或者宽度,组件按图片比例调整宽度或者高度

因为组件要按照图片的比例进行调整大小,所以组件必须有一边是固定长度,否则无效。

android:layout_width="100dp"
android:layout_height="80dp"

//固定宽度,按照图片比例调整组件高度
android:layout_width="100dp"
android:layout_height="wrap_content"
android:adjustViewBounds="true"

//固定高度,按照图片比例调整宽度
android:layout_width="wrap_content"
android:layout_height="80dp"
android:adjustViewBounds="true"

在这里插入图片描述

二、CODE

上述XML实现的效果

均可以通过代码实现。另外可实现动态变化的效果。

设置颜色过滤器

1、颜色过滤器

过滤掉图片的RGB值,用所设置颜色代替。

//原图

//设置红色过滤
image_12.setColorFilter(Color.RED);
//设置绿色过滤
image_23.setColorFilter(Color.GREEN);

//原图

//设置红色过滤
image_12.setColorFilter(Color.RED);
//设置绿色过滤
image_23.setColorFilter(Color.GREEN);

在这里插入图片描述

2、色彩矩阵颜色过滤器

矩阵内取值在0.0F至2.0F之间,运算公式如下
在这里插入图片描述

ColorMatrix colorMatrix = new ColorMatrix(new float[]{
        1, 0, 0, 0, 0,  // 红色向量
        0, 1, 0, 0, 0,  // 绿色向量
        0, 0, 1, 0, 0,  // 蓝色向量
        0, 0, 0, 1, 0,  // 透明度向量
});
image_31.setColorFilter(new ColorMatrixColorFilter(colorMatrix));


ColorMatrix colorMatrix = new ColorMatrix(new float[]{
        1, 0, 1, 0, 0,  // 红色向量
        0, 1, 1, 0, 0,  // 绿色向量
        0, 0, 1, 0, 0,  // 蓝色向量
        0, 0, 0, 1, 0,  // 透明度向量
});
image_32.setColorFilter(new ColorMatrixColorFilter(colorMatrix));

ColorMatrix colorMatrix = new ColorMatrix(new float[]{
        1, 0, 0, 1, 0,  // 红色向量
        0, 1, 0, 1, 0,  // 绿色向量
        0, 0, 1, 1, 0,  // 蓝色向量
        0, 0, 0, 1, 0,  // 透明度向量
});
image_33.setColorFilter(new ColorMatrixColorFilter(colorMatrix));

在这里插入图片描述

3、光照颜色过滤器

//原图

//LightingColorFilter (int mul, int add)
//mul色彩倍增 将绿色位置设置为00,意思为红色颜色位置倍增0倍,去除掉红色
image_42.setColorFilter(new LightingColorFilter(0xFFFF00FF, 0x00000000));

//add 色彩添加 将红色设置为FF,意思为红色颜色位置增加FF,
image_43.setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x00FF0000));

在这里插入图片描述

4、混合模式

这个和PS里面的混合模式的算法是相同的。有相关需求的话可以去了解。

//原图

// 设置颜色过滤
image_52.setColorFilter(new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.DARKEN));

// 设置颜色过滤
image_53.setColorFilter(new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.LIGHTEN));

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值