【发布时间】:2015-01-29 18:23:02
【问题描述】:
我有一个自定义视图。我通过在 onDraw 中调用此方法,使用全屏矩形创建全屏透明覆盖:
private void drawOverlay(Canvas canvas) {
canvas.drawRect(0, 0, this.getWidth(), this.getMeasuredHeight(), backgroundPaint);
}
我的屏幕现在覆盖了我之前定义的透明背景。
现在,我想在屏幕上绘制一个 Drawable。一个drawable可以有一个透明的部分。例如,它可以是一个 shape ,定义如下:
<?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);
但它似乎不起作用:/
【问题讨论】: