PorterDuffXfermode是Xfermode的子类。其单词组成应为:porter duff transfer mode,作用是图像的变换处理(能够实现我们所理解的各种图像叠加)
假定两个bitmap:destinationImage和sourceImage,它们以下列顺序被画到一起:
Paint paint = new Paint();
canvas.drawBitmap(destinationImage, 0, 0, paint);
PorterDuff.Mode mode = // choose a mode
paint.setXfermode(new PorterDuffXfermode(mode));
canvas.drawBitmap(sourceImage, 0, 0, paint);
根据不同的PorterDuff.Mode的选择,效果简述如下图:

这里转载:Android ImageView 的scaleType 属性图解
摘抄他的总结:八个ScaleType,其实可以分为三个类型
1.以FIT_
开头的4种,它们的共同点是都会对图片进行缩放,其缩放目的为使图片能够恰好完全显示出来。
(1)完全显示图片为前提下,图片保持宽高比缩放直到恰好宽 / 高顶着ImageView的宽 / 高,图片太大就缩小,太小就放大。FIT_CENTER
(默认),FIT_START
,FIT_END
,控制缩放后放在宽 / 高的开始、中间、结尾一侧。
(2)FIT_XY
如其描述,不管图片宽高比,总是缩放到图片宽高与ImageView宽高相等,能够完全显示图片且填充满ImageView
2.以CENTER_
开头的3种,它们的共同点是居中显示,图片的中心点会与ImageView的中心点重叠。
(1)CENTER
中心重合,不做任何缩放处理
(2)CENTER_CROP
中心重合,等比缩放到完全填充ImageView。注意对比与FIT_
的描述差异,这个是等比缩放+完全填充ImageView+图片不一定完全显示
(3)CENTER_INSIDE
完全显示图片并居中,雷同FIT_CENTER
,唯一差别在于,若图片宽高均小于ImageVIew,则不会缩放而是直接显示
3.ScaleType.MATRIX
,在xml中设置这个,默认等效于直接new的Matrix
网友评论