【发布时间】:2019-08-27 16:06:39
【问题描述】:
我有一个自定义视图,我在画布上绘制一个矩形。要向该自定义视图添加阴影/高度,我正在使用 ViewOutlineProvider,如下所示:
private class CustomOutline extends ViewOutlineProvider {
int width;
int height;
CustomOutline(int width, int height) {
this.width = width;
this.height = height;
}
@Override
public void getOutline(View view, Outline outline) {
outline.setRect(0, 0, width, height);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
outline.offset(5,5);
}
}
}
并在视图大小发生变化时调用 setOutlineProvider。
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setOutlineProvider(new CustomOutline(w, h));
}
}
我得到了一个阴影,如下面的屏幕截图所示。如果你仔细观察,你会发现阴影前有一条白线(红色矩形和它的阴影之间)。 不过,我正在为几件事苦苦挣扎
- 如何去除那条白线?
- 如何让阴影也显示在上方?
- 还有什么方法可以防止视角倾斜时出现像素化?
【问题讨论】:
标签: android android-custom-view