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
方法