我有一个基于全屏显示的 FrameLayout 的自定义视图(作为 Android 的 SystemUI 包的一部分),我使用画布绘制一些东西。
现在我想要这个视图中的一个元素(我画的一个圆圈)来投射某种阴影。所以我添加了一个自定义轮廓,让框架为我渲染阴影。不幸的是,这个阴影看起来有点奇怪(围绕圆形线),我对可能导致这个问题的原因一无所知。
有没有人遇到过类似的问题或知道如何解决这个问题?谢谢!
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);
}
}
}
奇怪的影子: