Merge "Hide animated ghost when underlying view is detached from window." into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
abd3cd9285
@@ -34,7 +34,6 @@ import android.view.ViewGroup
|
|||||||
import android.view.ViewGroupOverlay
|
import android.view.ViewGroupOverlay
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import com.android.internal.jank.InteractionJankMonitor
|
import com.android.internal.jank.InteractionJankMonitor
|
||||||
import java.lang.IllegalArgumentException
|
|
||||||
import java.util.LinkedList
|
import java.util.LinkedList
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
@@ -240,7 +239,7 @@ constructor(
|
|||||||
val ghostView = this.ghostView ?: return
|
val ghostView = this.ghostView ?: return
|
||||||
val backgroundView = this.backgroundView!!
|
val backgroundView = this.backgroundView!!
|
||||||
|
|
||||||
if (!state.visible) {
|
if (!state.visible || !ghostedView.isAttachedToWindow) {
|
||||||
if (ghostView.visibility == View.VISIBLE) {
|
if (ghostView.visibility == View.VISIBLE) {
|
||||||
// Making the ghost view invisible will make the ghosted view visible, so order is
|
// Making the ghost view invisible will make the ghosted view visible, so order is
|
||||||
// important here.
|
// important here.
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import com.android.internal.annotations.VisibleForTesting;
|
|||||||
import com.android.internal.logging.UiEvent;
|
import com.android.internal.logging.UiEvent;
|
||||||
import com.android.internal.logging.UiEventLogger;
|
import com.android.internal.logging.UiEventLogger;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
|
import com.android.systemui.animation.DialogLaunchAnimator;
|
||||||
import com.android.systemui.broadcast.BroadcastSender;
|
import com.android.systemui.broadcast.BroadcastSender;
|
||||||
import com.android.systemui.dagger.SysUISingleton;
|
import com.android.systemui.dagger.SysUISingleton;
|
||||||
|
|
||||||
@@ -36,11 +37,14 @@ import com.android.systemui.dagger.SysUISingleton;
|
|||||||
*/
|
*/
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
public class MediaOutputDialog extends MediaOutputBaseDialog {
|
public class MediaOutputDialog extends MediaOutputBaseDialog {
|
||||||
final UiEventLogger mUiEventLogger;
|
private final DialogLaunchAnimator mDialogLaunchAnimator;
|
||||||
|
private final UiEventLogger mUiEventLogger;
|
||||||
|
|
||||||
MediaOutputDialog(Context context, boolean aboveStatusbar, BroadcastSender broadcastSender,
|
MediaOutputDialog(Context context, boolean aboveStatusbar, BroadcastSender broadcastSender,
|
||||||
MediaOutputController mediaOutputController, UiEventLogger uiEventLogger) {
|
MediaOutputController mediaOutputController, DialogLaunchAnimator dialogLaunchAnimator,
|
||||||
|
UiEventLogger uiEventLogger) {
|
||||||
super(context, broadcastSender, mediaOutputController);
|
super(context, broadcastSender, mediaOutputController);
|
||||||
|
mDialogLaunchAnimator = dialogLaunchAnimator;
|
||||||
mUiEventLogger = uiEventLogger;
|
mUiEventLogger = uiEventLogger;
|
||||||
mAdapter = new MediaOutputAdapter(mMediaOutputController);
|
mAdapter = new MediaOutputAdapter(mMediaOutputController);
|
||||||
if (!aboveStatusbar) {
|
if (!aboveStatusbar) {
|
||||||
@@ -138,6 +142,7 @@ public class MediaOutputDialog extends MediaOutputBaseDialog {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mMediaOutputController.releaseSession();
|
mMediaOutputController.releaseSession();
|
||||||
|
mDialogLaunchAnimator.disableAllCurrentDialogsExitAnimations();
|
||||||
dismiss();
|
dismiss();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,11 +28,11 @@ import com.android.settingslib.bluetooth.LocalBluetoothManager
|
|||||||
import com.android.systemui.animation.DialogCuj
|
import com.android.systemui.animation.DialogCuj
|
||||||
import com.android.systemui.animation.DialogLaunchAnimator
|
import com.android.systemui.animation.DialogLaunchAnimator
|
||||||
import com.android.systemui.broadcast.BroadcastSender
|
import com.android.systemui.broadcast.BroadcastSender
|
||||||
|
import com.android.systemui.flags.FeatureFlags
|
||||||
import com.android.systemui.media.nearby.NearbyMediaDevicesManager
|
import com.android.systemui.media.nearby.NearbyMediaDevicesManager
|
||||||
import com.android.systemui.plugins.ActivityStarter
|
import com.android.systemui.plugins.ActivityStarter
|
||||||
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection
|
|
||||||
import com.android.systemui.flags.FeatureFlags
|
|
||||||
import com.android.systemui.settings.UserTracker
|
import com.android.systemui.settings.UserTracker
|
||||||
|
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection
|
||||||
import java.util.Optional
|
import java.util.Optional
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -71,7 +71,8 @@ class MediaOutputDialogFactory @Inject constructor(
|
|||||||
dialogLaunchAnimator, nearbyMediaDevicesManagerOptional, audioManager,
|
dialogLaunchAnimator, nearbyMediaDevicesManagerOptional, audioManager,
|
||||||
powerExemptionManager, keyGuardManager, featureFlags, userTracker)
|
powerExemptionManager, keyGuardManager, featureFlags, userTracker)
|
||||||
val dialog =
|
val dialog =
|
||||||
MediaOutputDialog(context, aboveStatusBar, broadcastSender, controller, uiEventLogger)
|
MediaOutputDialog(context, aboveStatusBar, broadcastSender, controller,
|
||||||
|
dialogLaunchAnimator, uiEventLogger)
|
||||||
mediaOutputDialog = dialog
|
mediaOutputDialog = dialog
|
||||||
|
|
||||||
// Show the dialog.
|
// Show the dialog.
|
||||||
|
|||||||
@@ -356,6 +356,7 @@ public class MediaOutputDialogTest extends SysuiTestCase {
|
|||||||
});
|
});
|
||||||
|
|
||||||
verify(mockMediaOutputController).releaseSession();
|
verify(mockMediaOutputController).releaseSession();
|
||||||
|
verify(mDialogLaunchAnimator).disableAllCurrentDialogsExitAnimations();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -371,7 +372,7 @@ public class MediaOutputDialogTest extends SysuiTestCase {
|
|||||||
@NonNull
|
@NonNull
|
||||||
private MediaOutputDialog makeTestDialog(MediaOutputController controller) {
|
private MediaOutputDialog makeTestDialog(MediaOutputController controller) {
|
||||||
return new MediaOutputDialog(mContext, false, mBroadcastSender,
|
return new MediaOutputDialog(mContext, false, mBroadcastSender,
|
||||||
controller, mUiEventLogger);
|
controller, mDialogLaunchAnimator, mUiEventLogger);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void withTestDialog(MediaOutputController controller, Consumer<MediaOutputDialog> c) {
|
private void withTestDialog(MediaOutputController controller, Consumer<MediaOutputDialog> c) {
|
||||||
|
|||||||
Reference in New Issue
Block a user