diff options
author | Qi Wang <wangqi@google.com> | 2016-02-23 12:57:04 -0800 |
---|---|---|
committer | Qi Wang <wangqi@google.com> | 2016-02-23 16:09:00 -0800 |
commit | 40de598bb9559d038f3774e69365af2f856bd7f4 (patch) | |
tree | d7ab5818a9e371b8933814756716092fde452812 | |
parent | 4acb573794b2da2870b6ccfffca65570fb1bc564 (diff) |
Let InCallActivity handle resize config change.
Bug: 26862821,27250655
Change-Id: I1b5c35846f1a2d2dedaf2df9abf1f522270b1638
-rw-r--r-- | AndroidManifest.xml | 5 | ||||
-rw-r--r-- | InCallUI/src/com/android/incallui/InCallActivity.java | 29 |
2 files changed, 31 insertions, 3 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 05ee49380..e155d69e0 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -305,10 +305,11 @@ android:label="@string/phoneAppLabel" android:excludeFromRecents="true" android:launchMode="singleInstance" - android:configChanges="keyboardHidden" + android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden" android:exported="false" android:screenOrientation="nosensor" - android:encryptionAware="true" > + android:encryptionAware="true" + android:resizeableActivity="true"> </activity> <!-- BroadcastReceiver for receiving Intents from Notification mechanism. --> 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. */ |