Создание тени вокруг фигуры, сделанной холстом?

Какие шаги необходимы для создания фигуры, например. прямоугольник с тенью с нуля с помощью Canvas?

Добавление тени к краске, используемой для рисования прямоугольника, не принесло успеха.

Ответ 1

Нет необходимости в растровом изображении, просто необходимо установить тип слоя LAYER_TYPE_SOFTWARE, с которым работал оригинальный подход.

public class TestShapeShadow extends View
{
    Paint paint;

    public TestShapeShadow(Context context)
    {
       super(context);  

        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setShadowLayer(12, 0, 0, Color.YELLOW);

        // Important for certain APIs 
        setLayerType(LAYER_TYPE_SOFTWARE, paint);
    }

    @Override
    protected void onDraw(Canvas canvas)
    {   
        canvas.drawRect(20, 20, 100, 100, paint);
    }
}

Ответ 2

  • создать. Путь, добавьте в него некоторые элементы

  • установите BlurMaskFilter в Paint

  • нарисовать путь с dx, dy shadow offset

  • фильтр маски отмены

  • снова нарисуйте путь с помощью no. Смещение