Android View大纲-使用自定义路径

马丁·科尼切克

当我如下设置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);

在此处输入图片说明

如何使视图剪辑到提供的路径?

迈克·M

似乎View只能将a剪切到矩形,圆角矩形或椭圆形Outline相反,View只能被夹到Outline一个与一个具体定义setRect()setRoundRect()setOval()方法。即使本身可能是上述形状之一,Outline布景Path也将不起作用Path

我认为这在很多地方都有记载,尽管不是特别好。

View#setClipToOutline()

请注意,仅当“视图的轮廓”从返回true时,才会使用此标志canClip()

Outline#canClip()

当前,只有可以表示为矩形,圆形或圆形矩形的轮廓支持剪切。

定义阴影和剪切视图-剪切视图

根据Outline.canClip()方法确定,仅矩形,圆形和圆形矩形轮廓支持剪切

乍一看,这似乎与Outline自己的内部工作方式不一致,因为Path实际上是在内部将凸面用于非圆形椭圆形。但是,仅禁止所有外部定义的Paths确实有意义,而不是花费确定任意值Path是否有效所需的资源

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章