From fdcf72cb9b13cd6410e57a52d7cc305cc0de4167 Mon Sep 17 00:00:00 2001 From: Dongya Jiang Date: Mon, 28 Feb 2022 21:35:57 +0800 Subject: Add setBackdropRenderEffect for View and RenderNode. support visual effects for backdrop contents of a View or RenderNode. Test: added unit test & hwui_unit passes Test: added BackdropBlurActivity in HwAccelerationTest, build & run it Signed-off-by: Dongya Jiang Change-Id: If1ac1b8aee53667f175e8fa80ecfc7bdfa28173d Merged-In: If1ac1b8aee53667f175e8fa80ecfc7bdfa28173d --- graphics/java/android/graphics/RenderNode.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'graphics/java/android') diff --git a/graphics/java/android/graphics/RenderNode.java b/graphics/java/android/graphics/RenderNode.java index 2e91c240d71b..15d26ebe66f6 100644 --- a/graphics/java/android/graphics/RenderNode.java +++ b/graphics/java/android/graphics/RenderNode.java @@ -970,6 +970,23 @@ public final class RenderNode { renderEffect != null ? renderEffect.getNativeInstance() : 0); } + /** + * Configure the {@link android.graphics.RenderEffect} to apply to the backdrop contents of + * this RenderNode. This will apply a visual effect to the result of the backdrop contents + * of this RenderNode before the RenderNode is drawn into the destination. For example if + * {@link RenderEffect#createBlurEffect(float, float, RenderEffect, Shader.TileMode)} + * is provided, the previous content behind this RenderNode will be blurred before the + * RenderNode is drawn in to the destination. + * @param renderEffect to be applied to the backdrop contents of this RenderNode. Passing + * null clears all previously configured RenderEffects + * @return True if the value changed, false if the new value was the same as the previous value. + * @hide + */ + public boolean setBackdropRenderEffect(@Nullable RenderEffect renderEffect) { + return nSetBackdropRenderEffect(mNativeRenderNode, + renderEffect != null ? renderEffect.getNativeInstance() : 0); + } + /** * Returns the translucency level of this display list. * @@ -1796,6 +1813,9 @@ public final class RenderNode { @CriticalNative private static native boolean nSetRenderEffect(long renderNode, long renderEffect); + @CriticalNative + private static native boolean nSetBackdropRenderEffect(long renderNode, long renderEffect); + @CriticalNative private static native boolean nSetHasOverlappingRendering(long renderNode, boolean hasOverlappingRendering); -- cgit v1.2.3-59-g8ed1b