当我如下设置View的轮廓时,它就可以正常工作:
view.setClipToOutline(true);
view.setOutlineProvider(new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 16);
}
});
但是,使用aPath
无效。替换setRoundRect
为:
Path path = new Path();
path.addRoundRect(
0, 0, view.getWidth(), view.getHeight(), 16, 16, Path.Direction.CW);
outline.setConvexPath(path);
如何使视图剪辑到提供的路径?
似乎View
只能将a剪切到矩形,圆角矩形或椭圆形Outline
。相反,View
只能被夹到Outline
一个与一个具体定义setRect()
,setRoundRect()
或setOval()
方法。即使本身可能是上述形状之一,Outline
带的布景Path
也将不起作用Path
。
我认为这在很多地方都有记载,尽管不是特别好。
请注意,仅当“视图的轮廓”从返回true时,才会使用此标志
canClip()
。
当前,只有可以表示为矩形,圆形或圆形矩形的轮廓支持剪切。
根据
Outline.canClip()
方法确定,仅矩形,圆形和圆形矩形轮廓支持剪切。
乍一看,这似乎与Outline
自己的内部工作方式不一致,因为Path
实际上是在内部将凸面用于非圆形椭圆形。但是,仅禁止所有外部定义的Path
s确实有意义,而不是花费确定任意值Path
是否有效所需的资源。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句