android mask setXfermode
public class MymaskActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView imageView=(ImageView)findViewById(R.id.imageView1);
imageView.setImageBitmap(getRoundedCornerBitmap());
}
public Bitmap getRoundedCornerBitmap() {
Resources res = getResources();
Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.fang);
Bitmap dst = BitmapFactory.decodeResource(res, R.drawable.yuan);
Canvas canvas = new Canvas(bmp);
final int color = 0xff424242;
final Paint paint = new Paint();
paint.setAntiAlias(true);
// canvas.drawARGB(0, 0, 0, 0);
// paint.setColor(color);
//
paint.setXfermode(new PorterDuffXfermode(Mode.XOR));
canvas.drawBitmap(dst, 0, 0, paint) ;
return bmp;
}
}
当绘制出现问题时可在绘制前使用saveLayer,Dst 为初始图像画,src second相对于DST第二次绘制的图像
1.PorterDuff.Mode.CLEAR 所绘制不会提交到画布上。
2.PorterDuff.Mode.SRC 显示上层绘制图片,只显示SRC
3.PorterDuff.Mode.DST 显示下层绘制图片,只显示DST
4.PorterDuff.Mode.SRC_OVER 正常绘制显示,上下层绘制叠盖。
5.PorterDuff.Mode.DST_OVER 上下层都显示,下层居上显示。
6.PorterDuff.Mode.SRC_IN 取两层绘制交集,显示上层。
7.PorterDuff.Mode.DST_IN 取两层绘制交集,显示下层。
8.PorterDuff.Mode.SRC_OUT 取上层绘制非交集部分。
9.PorterDuff.Mode.DST_OUT 取下层绘制非交集部分。
10.PorterDuff.Mode.SRC_ATOP 取下层非交集部分与上层交集部分
11.PorterDuff.Mode.DST_ATOP 取上层非交集部分与下层交集部分
12.PorterDuff.Mode.XOR
13.PorterDuff.Mode.DARKEN
14.PorterDuff.Mode.LIGHTEN
15.PorterDuff.Mode.MULTIPLY
16.PorterDuff.Mode.SCREEN