我有一个基于全屏显示的FrameLayout的自定义视图(作为Android的SystemUI包的一部分),我使用canvas绘制一些东西。
现在我想要在这个视图中使用单个元素(我绘制的一个圆圈)来投射某种阴影。所以我添加了一个自定义大纲让框架为我渲染阴影。不幸的是,这个阴影看起来有点奇怪(周围的圆形线条),我对于导致这个问题的原因我一无所知。
有没有人遇到类似的问题或知道如何解决这个问题?谢谢!
MWE:
public class Menu extends FrameLayout {
private int mRadius;
public Menu(Context context) {
super(context);
mRadius = context.getResources()
.getDimensionPixelSize(R.dimen.menu_radius);
setElevation(context.getResources()
.getDimensionPixelSize(R.dimen.menu_elevation));
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
setOutlineProvider(new CustomOutline(w, h));
}
private class CustomOutline extends ViewOutlineProvider {
private int mWidth;
private int mHeight;
public CustomOutline(int w, int h) {
mWidth = w;
mHeight = h;
}
@Override
public void getOutline(View view, Outline outline) {
outline.setOval(-mRadius, -mRadius, mRadius, mRadius);
outline.offset(mWidth/2, mHeight/2);
}
}
}
奇怪的影子: