diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2019-04-16 23:31:23 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-04-16 23:31:23 +0000 |
commit | 890dcce1a5a715ee55ff99e14417dc3b959588ea (patch) | |
tree | 86a392fe7b13362d53946558463e1401a6658923 | |
parent | ebd9bf21e5ae8d31ce99a35b03ced9301e0ef86c (diff) | |
parent | e39b926e6d14275050261f2a86eb16416d5c0d6a (diff) |
Merge "Fix for button flickering issue when video call screen rotates"
3 files changed, 44 insertions, 0 deletions
diff --git a/java/com/android/incallui/VideoCallPresenter.java b/java/com/android/incallui/VideoCallPresenter.java index 1700d530d..0d1d1a5e0 100644 --- a/java/com/android/incallui/VideoCallPresenter.java +++ b/java/com/android/incallui/VideoCallPresenter.java @@ -431,6 +431,11 @@ public class VideoCallPresenter 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 3a355c47a..edfc17c46 100644 --- a/java/com/android/incallui/video/impl/VideoCallFragment.java +++ b/java/com/android/incallui/video/impl/VideoCallFragment.java @@ -306,6 +306,30 @@ public class VideoCallFragment extends Fragment 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 @@ public class VideoCallFragment extends Fragment inCallButtonUiDelegate.onInCallButtonUiReady(this); view.setOnSystemUiVisibilityChangeListener(this); + + if (videoCallScreenDelegate.isFullscreen()) { + controls.setVisibility(View.INVISIBLE); + contactGridManager.getContainerView().setVisibility(View.INVISIBLE); + endCallButton.setVisibility(View.INVISIBLE); + } } @Override @@ -420,6 +450,13 @@ public class VideoCallFragment extends Fragment .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 55ea23f5e..9dd545080 100644 --- a/java/com/android/incallui/video/protocol/VideoCallScreenDelegate.java +++ b/java/com/android/incallui/video/protocol/VideoCallScreenDelegate.java @@ -48,4 +48,6 @@ public interface VideoCallScreenDelegate { void setSurfaceViews(SurfaceView preview, SurfaceView remote); int getDeviceOrientation(); + + boolean isFullscreen(); } |