用法:设置两张图片相交时的模式
例子:
1
2
|
mPaint =
new
Paint();
mPaint.setXfermode(
new
PorterDuffXfermode(PorterDuff.Mode.SCREEN));
|
常见的Xfermode(SRC为原图,DST为目标图),把代码中的SRC_IN换成下图指定的模式就会出现对应的效果图。
1
2
3
4
5
|
Canvas canvas =
new
Canvas(Src);
paint.setXfermode(
new
PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(Dst, 0f, 0f, paint);
|
应用场景: Sheleve选选中某本书之后,出现聚光灯的效果,如下图所示:
实例:头像
<pre name="code" class="java">private void setImageView(ImageView iv) {
//bitmap 不copy会抛出下面的异常 因不允许对资源图片修改 星形图片
//android Immutable bitmap passed to Canvas constructor异常
Bitmap mask = ((BitmapDrawable) this.getResources().getDrawable(
R.drawable.tt)).getBitmap().copy(Bitmap.Config.ARGB_8888, true);
// 头像图片 两图片大小一样的
Bitmap bm = ((BitmapDrawable) this.getResources().getDrawable(
R.drawable.sample_1)).getBitmap();
Canvas canvas = new Canvas(mask); //mask 目标
Paint paint = new Paint();
paint.setStyle(Style.FILL);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bm, 0, 0, paint);
iv.setImageBitmap(mask);
}
Canvas canvas = new Canvas(mask); //mask 目标