安卓在自定義 View 或寫獲取圓角或者圓形圖片工具的時候可能會用到這個畫筆模式掺栅,但是發(fā)現之前理解的有些不正確姜胖,所以記錄一下誉帅。目前只用到了兩種,所以先記錄一下這兩種的使用,即:
PorterDuff.Mode.SRC_IN 和 PorterDuff.Mode.DST_IN右莱,效果如下圖:
Mode 效果圖
DST是下層圖形蚜锨,SRC是上層圖形。這樣看來慢蜓,這兩種模式可以理解為上下兩層圖形的交集部分亚再,只不過是交集部分顯示的內容取決于上層還是下層內容的區(qū)別。DST_IN 內容取決于下層晨抡,SRC_IN 內容取決于上層氛悬。
下面來寫代碼看一下效果。
新建一個項目耘柱,布局放一個 ImageView 就可以了如捅,代碼如下:
//1.新建一個用于畫圖形的 bitmap 對象
Bitmap bitmap = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
//2.先畫一個紅色的矩形
paint.setColor(Color.RED);
canvas.drawRect(0, 0, bitmap.getWidth(), bitmap.getHeight(), paint);
paint.setColor(Color.YELLOW);
//3.設置模式,再畫一個黃色的圓
paint.setXfermode(
new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2, bitmap.getHeight() / 2, paint);
//4. 將所畫內容設置到 ImageView 上顯示
iv1.setImageBitmap(bitmap);