具有ViewOutlineProvider的Android自定义视图在阴影之前添加白色边框

时间:2019-03-13 21:21:04

标签: android android-custom-view

我有一个自定义视图,可以在画布上绘制一个矩形。要将阴影/高程添加到该自定义视图,请按以下方式使用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));
    }
}

我得到一个阴影,如下面的屏幕截图所示。如果您密切注意,您会在阴影之前找到一条白线(在红色矩形与其阴影之间)。 我虽然在几件事上挣扎

  • 如何删除该白线?
  • 如何使阴影也显示在上方?
  • 还有什么方法可以防止视角倾斜时出现像素化?

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试设置outline.setAlpha(0),如下所示:

var books = function(req, res) {
  const query = 'SELECT * FROM booklist';
  connection.query(query, function(err, result) {
    if (err) {
      console.error(err);
      return res.status(400).send(err);
    }

    return res.status(200).send(result);
  });
};