Merge "Support tinting blur drawable"
This commit is contained in:
@@ -20,6 +20,7 @@ import android.annotation.NonNull;
|
|||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.graphics.ColorFilter;
|
import android.graphics.ColorFilter;
|
||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
import android.graphics.Path;
|
import android.graphics.Path;
|
||||||
@@ -75,7 +76,8 @@ public final class BackgroundBlurDrawable extends Drawable {
|
|||||||
|
|
||||||
private BackgroundBlurDrawable(Aggregator aggregator) {
|
private BackgroundBlurDrawable(Aggregator aggregator) {
|
||||||
mAggregator = aggregator;
|
mAggregator = aggregator;
|
||||||
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
|
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
|
||||||
|
mPaint.setColor(Color.TRANSPARENT);
|
||||||
mRenderNode = new RenderNode("BackgroundBlurDrawable");
|
mRenderNode = new RenderNode("BackgroundBlurDrawable");
|
||||||
mRenderNode.addPositionUpdateListener(mPositionUpdateListener);
|
mRenderNode.addPositionUpdateListener(mPositionUpdateListener);
|
||||||
}
|
}
|
||||||
@@ -85,10 +87,16 @@ public final class BackgroundBlurDrawable extends Drawable {
|
|||||||
if (mRectPath.isEmpty() || !isVisible() || getAlpha() == 0) {
|
if (mRectPath.isEmpty() || !isVisible() || getAlpha() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
canvas.drawPath(mRectPath, mPaint);
|
canvas.drawPath(mRectPath, mPaint);
|
||||||
canvas.drawRenderNode(mRenderNode);
|
canvas.drawRenderNode(mRenderNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTint(int tintColor) {
|
||||||
|
mPaint.setColor(tintColor);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setVisible(boolean visible, boolean restart) {
|
public boolean setVisible(boolean visible, boolean restart) {
|
||||||
boolean changed = super.setVisible(visible, restart);
|
boolean changed = super.setVisible(visible, restart);
|
||||||
|
|||||||
Reference in New Issue
Block a user