由于clipRegion的一些問題,導致他被廢棄了,但又有時候會用到,所以寫了一個工具類來替代它
代碼如下
package com.example;import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Region;
import android.graphics.RegionIterator;public class Util {public static void clipRegion(Region region, Canvas canvas){Region combinedRegion = new Region();Path compa=new Path();RegionIterator regionIterator=new RegionIterator(region);Rect sum=new Rect();Rect rect=new Rect();while(regionIterator.next(rect)){
// combinedRegion.op(rect, Region.Op.UNION);compa.addRect(rect.left,rect.top,rect.right,rect.bottom, Path.Direction.CCW);
// canvas.clipRect(rect);}canvas.clipPath(compa);}public static void drawRegion(Region region, Canvas canvas){Paint paint=new Paint();paint.setStyle(Paint.Style.STROKE);RegionIterator regionIterator=new RegionIterator(region);Rect rect=new Rect();while(regionIterator.next(rect)){canvas.drawRect(rect,paint);}}
}
代碼解釋:其實就是通過把region轉化為path然后調用clippath來完成的。
代碼有兩個函數clipRegion和drawRegion就和名字一樣一個是切割,一個是繪畫,把相應的參數傳入進去就可以了