У меня есть пользовательский вид. Я создаю в полноэкранном режиме прозрачного наложения, используя полный экран прямоугольник вызова этого метода в OnDraw:Рисование с использованием холста - Очистить назначение
private void drawOverlay(Canvas canvas) {
canvas.drawRect(0, 0, this.getWidth(), this.getMeasuredHeight(), backgroundPaint);
}
Мой экран теперь накладывается с прозрачным фоном я, определенной ранее.
Теперь, я хочу нарисовать Drawable на экране. На чертеже могут быть прозрачные части. Это может быть, например, форма, определяемая следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/transparent"></solid>
<stroke android:width="10dp" android:color="#ffff0716"/>
</shape>
Теперь я хочу нарисовать это на экране. Я рисую его, используя этот метод:
private void drawDrawableOverTargetView(Canvas canvas) {
Rect rect = new Rect(200, 200, 450, 400); //TODO
Drawable drawable = tutorial.getHighlightDrawable();
drawable.setBounds(rect);
drawable.draw(canvas);
}
Внутренняя часть моего овала определена прозрачно в xml. Когда отображается, внутренняя часть овала будет цветом наложения, потому что прямоугольник наложения находится ниже него. Вопрос: Можно ли определить, что drawable должен переопределять цвет фона прямоугольника, что означает, что внутренняя его часть становится прозрачной? Можно ли удалить часть прямоугольника наложения, которая ниже моей?
Я попытался с помощью
drawable.setColorFilter(Color.Transparent, PorterDuff.Mode.Clear);
Но это, кажется, не работает:/