最近,项目中需要一个圆角矩形的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都可以用这种方式设置