Android 对View边界裁剪(矩形 圆角矩形 圆形)

4,445 阅读1分钟
最近,项目中需要一个圆角矩形的SurfaceView的预览画面,因此到网上搜索了一下发现了ViewOutLineProvider这个类可以实现该种效果, 以前从来没有用过,因此在这里记录一下.
该类是在Android5.0以上(即API>=21)以上可使用:
    1.继承VIewOutLineProvider
    2.重写getOutLine方法
    3.设置setOutlineProvider()
    3.设置View的setClipToOutLine(true) 开始裁剪

示例代码:

public class SurfaceViewOutlineProvider extends ViewOutlineProvider {

private float mRadius;

public SurfaceViewOutlineProvider(float radius) {
    this.mRadius = radius;
}

@Override
public void getOutline(View view, Outline outline) {
    Rect rect = new Rect();
    view.getGlobalVisibleRect(rect);
    int leftMargin = 0;
    int topMargin = 0;
    Rect selfRect = new Rect(leftMargin, topMargin,
            rect.right - rect.left - leftMargin, rect.bottom - rect.top - topMargin);
    //这里还可以使用setRect()矩形  setOval()圆形
    outline.setRoundRect(selfRect, mRadius);
    }
}
然后对你需要裁剪的View设置:
  1.setOutLineProvider(new SurfaceViewOutlineProvider(radius))
  2.setClipOutLine(true)

基本上所有的VIew都可以用这种方式设置