TextureView和SurfaceView圆角预览实现
入正题,最近有个需求,视频播放器需要实现圆角功能,找了很多资料,实现View的圆角有很多,但是实现TextureView和SurfaceView的圆角就几乎没有!
可愁死我了,终于,功夫不负有心人,终究还是有了解决方案,基于View自身的setClipToOutline(boolean clipToOutline)和setOutlineProvider(ViewOutlineProvider provider)
方法实现了该需求。
首先,自定义继承一个ViewOutlineProvider,重写该getOutline(View view, Outline outline)方法,如下:
public class TextureVideoViewOutlineProvider extends ViewOutlineProvider { private float mRadius; public TextureVideoViewOutlineProvider(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); outline.setRoundRect(selfRect, mRadius); } }
通过如下设置即可实现TextureView和SurfaceView的圆角,
mVideoView.setOutlineProvider(new TextureVideoViewOutlineProvider(radius)); mVideoView.setClipToOutline(true);
通过验证,所有View都支持该种方式设置圆角。。。
发布评论
热门评论区:
bitman
这个方法只有在5.0上可以用。。。
bitman
这个方法只有在5.0上可以用。。。
指尖上的艺术
给你点个赞