diff --git a/java/com/android/incallui/VideoCallPresenter.java b/java/com/android/incallui/VideoCallPresenter.java
index 1700d53..0d1d1a5 100644
--- a/java/com/android/incallui/VideoCallPresenter.java
+++ b/java/com/android/incallui/VideoCallPresenter.java
@@ -431,6 +431,11 @@
     InCallPresenter.getInstance().getInCallCameraManager().onCameraPermissionGranted();
   }
 
+  @Override
+  public boolean isFullscreen() {
+    return InCallPresenter.getInstance().isFullscreen();
+  }
+
   /**
    * Called when the user interacts with the UI. If a fullscreen timer is pending then we start the
    * timer from scratch to avoid having the UI disappear while the user is interacting with it.
diff --git a/java/com/android/incallui/video/impl/VideoCallFragment.java b/java/com/android/incallui/video/impl/VideoCallFragment.java
index 9d9f5bf..b659792 100644
--- a/java/com/android/incallui/video/impl/VideoCallFragment.java
+++ b/java/com/android/incallui/video/impl/VideoCallFragment.java
@@ -306,6 +306,30 @@
             updatePreviewOffView();
           }
         });
+
+    controls.addOnLayoutChangeListener(
+        new OnLayoutChangeListener() {
+          @Override
+          public void onLayoutChange(
+              View v,
+              int left,
+              int top,
+              int right,
+              int bottom,
+              int oldLeft,
+              int oldTop,
+              int oldRight,
+              int oldBottom) {
+            LogUtil.i("VideoCallFragment.onLayoutChange", "controls layout changed");
+            if (getActivity() != null && getView() != null) {
+              controls.removeOnLayoutChangeListener(this);
+              if (isInFullscreenMode) {
+                enterFullscreenMode();
+              }
+            }
+          }
+        });
+
     return view;
   }
 
@@ -334,6 +358,12 @@
     inCallButtonUiDelegate.onInCallButtonUiReady(this);
 
     view.setOnSystemUiVisibilityChangeListener(this);
+
+    if (videoCallScreenDelegate.isFullscreen()) {
+        controls.setVisibility(View.INVISIBLE);
+        contactGridManager.getContainerView().setVisibility(View.INVISIBLE);
+        endCallButton.setVisibility(View.INVISIBLE);
+    }
   }
 
   @Override
@@ -421,6 +451,13 @@
         .translationY(0)
         .setInterpolator(linearOutSlowInInterpolator)
         .alpha(1)
+        .withStartAction(
+            new Runnable() {
+              @Override
+              public void run() {
+                controls.setVisibility(View.VISIBLE);
+              }
+            })
         .start();
 
     // Animate onHold to the shown state.
diff --git a/java/com/android/incallui/video/protocol/VideoCallScreenDelegate.java b/java/com/android/incallui/video/protocol/VideoCallScreenDelegate.java
index 55ea23f..9dd5450 100644
--- a/java/com/android/incallui/video/protocol/VideoCallScreenDelegate.java
+++ b/java/com/android/incallui/video/protocol/VideoCallScreenDelegate.java
@@ -48,4 +48,6 @@
   void setSurfaceViews(SurfaceView preview, SurfaceView remote);
 
   int getDeviceOrientation();
+
+  boolean isFullscreen();
 }
