From 40de598bb9559d038f3774e69365af2f856bd7f4 Mon Sep 17 00:00:00 2001 From: Qi Wang Date: Tue, 23 Feb 2016 12:57:04 -0800 Subject: Let InCallActivity handle resize config change. Bug: 26862821,27250655 Change-Id: I1b5c35846f1a2d2dedaf2df9abf1f522270b1638 --- .../src/com/android/incallui/InCallActivity.java | 29 +++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'InCallUI/src/com/android') diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java index 73155a460..9e35c3d8e 100644 --- a/InCallUI/src/com/android/incallui/InCallActivity.java +++ b/InCallUI/src/com/android/incallui/InCallActivity.java @@ -88,6 +88,12 @@ public class InCallActivity extends TransactionSafeActivity implements FragmentD private static final int DIALPAD_REQUEST_SHOW = 2; private static final int DIALPAD_REQUEST_HIDE = 3; + /** + * This is used to relaunch the activity if resizing beyond which it needs to load different + * layout file. + */ + private static final int SCREEN_HEIGHT_RESIZE_THRESHOLD = 500; + private CallButtonFragment mCallButtonFragment; private CallCardFragment mCallCardFragment; private AnswerFragment mAnswerFragment; @@ -252,7 +258,7 @@ public class InCallActivity extends TransactionSafeActivity implements FragmentD // setting activity should be last thing in setup process InCallPresenter.getInstance().setActivity(this); enableInCallOrientationEventListener(getRequestedOrientation() == - InCallOrientationEventListener.FULL_SENSOR_SCREEN_ORIENTATION); + InCallOrientationEventListener.FULL_SENSOR_SCREEN_ORIENTATION); InCallPresenter.getInstance().onActivityStarted(); } @@ -353,6 +359,27 @@ public class InCallActivity extends TransactionSafeActivity implements FragmentD } } + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + Configuration oldConfig = getResources().getConfiguration(); + Log.v(this, String.format( + "incallui config changed, screen size: w%ddp x h%ddp old:w%ddp x h%ddp", + newConfig.screenWidthDp, newConfig.screenHeightDp, + oldConfig.screenWidthDp, oldConfig.screenHeightDp)); + // Recreate this activity if height is changing beyond the threshold to load different + // layout file. + if (oldConfig.screenHeightDp < SCREEN_HEIGHT_RESIZE_THRESHOLD && + newConfig.screenHeightDp > SCREEN_HEIGHT_RESIZE_THRESHOLD || + oldConfig.screenHeightDp > SCREEN_HEIGHT_RESIZE_THRESHOLD && + newConfig.screenHeightDp < SCREEN_HEIGHT_RESIZE_THRESHOLD) { + Log.i(this, String.format( + "Recreate activity due to resize beyond threshold: %d dp", + SCREEN_HEIGHT_RESIZE_THRESHOLD)); + recreate(); + } + } + /** * Returns true when the Activity is currently visible. */ -- cgit v1.2.3