From e19109d4de90aa48d35b932d1040e406663b1b56 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Tue, 16 Jul 2019 12:08:23 -0700 Subject: [PATCH] Preserve the alpha for VD content by setting a transparent background. The previous attempt to do this by setting the theme to Theme_Translucent_NoTitleBar was reported to offsetting touch events on specific Xiaomi devices. --- .../plugin/platform/SingleViewPresentation.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java b/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java index 3fd1e04577460..c00ccf126f3fc 100644 --- a/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java +++ b/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java @@ -9,6 +9,7 @@ import android.content.Context; import android.content.ContextWrapper; import android.graphics.Rect; +import android.graphics.drawable.ColorDrawable; import android.os.Build; import android.os.Bundle; import android.util.Log; @@ -96,11 +97,7 @@ public SingleViewPresentation( Object createParams, OnFocusChangeListener focusChangeListener ) { - // By default alpha is not preserved for the VD's contents. - // We make the window translucent as a side effect of doing so is preserving alpha. - // There should not be extra performance cost for setting the window to be translucent as - // there is only a single window within the VD. - super(outerContext, display, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); + super(outerContext, display); this.viewFactory = viewFactory; this.accessibilityEventsDelegate = accessibilityEventsDelegate; this.viewId = viewId; @@ -129,11 +126,7 @@ public SingleViewPresentation( OnFocusChangeListener focusChangeListener, boolean startFocused ) { - // By default alpha is not preserved for the VD's contents. - // We make the window translucent as a side effect of doing so is preserving alpha. - // There should not be extra performance cost for setting the window to be translucent as - // there is only a single window within the VD. - super(outerContext, display, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); + super(outerContext, display); this.accessibilityEventsDelegate = accessibilityEventsDelegate; viewFactory = null; this.state = state; @@ -148,6 +141,8 @@ public SingleViewPresentation( @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + // This makes sure we preserve alpha for the VD's content. + getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); if (state.fakeWindowViewGroup == null) { state.fakeWindowViewGroup = new FakeWindowViewGroup(getContext()); }