Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android如何使用XML圆形剪裁视图?_Java_Android_Animation_Views_Clip - Fatal编程技术网

Java Android如何使用XML圆形剪裁视图?

Java Android如何使用XML圆形剪裁视图?,java,android,animation,views,clip,Java,Android,Animation,Views,Clip,我需要画一个空圆圈,我知道我可以画一个这样的圆圈: <shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="0dp" android:shape="oval" android:thicknessRatio="2" android:useLevel="false" > <solid android:color="@andro

我需要画一个空圆圈,我知道我可以画一个这样的圆圈:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:innerRadius="0dp"
    android:shape="oval"
    android:thicknessRatio="2"
    android:useLevel="false" >
    <solid android:color="@android:color/transparent" />
    <stroke
        android:width="2dp"
        android:color="@android:color/darker_gray" />
</shape>

然后我只需将它设置为任何视图的背景,它就会显示在屏幕上

但是,包含圆作为背景的视图是一个正方形(或矩形),具有定义的高度和宽度。因此,将在视图内部绘制圆

但是如果我想剪辑上面的视图怎么办

让我们来看一看,我的视图圆位于布局(线性或相对)内,并填充父视图(
match\u parent
)。假设这个布局是红色的。我想做的是,使用圆剪裁红色布局,以便只有红色显示在圆内:红色不得离开圆边界

不知何故,我可以用android:clipChildren=“true”管理,这样就没有什么比视图的方形边框更进一步了。但这还不够,因为动画内容确实离开了圆圈,并在视图边界处停止

有没有办法做到这一点?我想在这里继续讨论XML级别。没有画布,没有要在运行时运行的代码。可能吗


谢谢

不,您不能在xml级别这样做,只有direct
Canvas
可以这样做,谢谢。我该怎么做呢?:)它在CPU负载方面贵吗?贵吗?xml不贵吗?毕竟,用xml编写的所有内容都必须以某种方式在低级画布中执行。谢谢你的洞察力。所以我应该创建自己的视图类,并重写onDraw()以使用画布,以便剪裁布局的内容?如果内容是动画的呢?像颜色变化,不透明度等。。。画布会继续在圆圈外剪裁吗?这对我来说真的很重要。谢谢如果要剪裁paren布局,应创建一个类,扩展该布局并重写其
draw
/
dispatchDraw
方法