У меня есть пользовательский вид, где я рисую прямоугольник на холсте. Чтобы добавить тень / высоту к этому пользовательскому виду, я использую 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));
}
}
Я получаю тень, как показано на скриншоте ниже. Если вы внимательно заметите, вы найдете белую линию перед тенью (между красным прямоугольником и его тенью).
Я борюсь с парой вещей, хотя
- Как я могу удалить эту белую линию?
- Как заставить тень показываться и на верхней стороне?
- Также есть ли способ предотвратить пикселизацию, когда угол обзора находится под углом?