From 23452861e5fc283b3cfa0dbc9465fb7d30af08ae Mon Sep 17 00:00:00 2001 From: Mill Chen Date: Wed, 20 Feb 2019 17:12:49 +0800 Subject: [PATCH] Add fancy animation for IA fragment The animation of IA fragment is very choppy on expanding or collapsing conditionals. So adding LayoutTransition for IA fragment makes the animation more smoothly. Bug: 123536786 Bug: 123537499 Test: visual, robotests Change-Id: I731db8556ac392c9ab98bd292498ccf6c87295fb --- res/layout/settings_homepage_container.xml | 3 ++- .../settings/homepage/SettingsHomepageActivity.java | 4 ++++ .../homepage/SettingsHomepageActivityTest.java | 10 ++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/res/layout/settings_homepage_container.xml b/res/layout/settings_homepage_container.xml index 45d0861c520..78a0278462c 100644 --- a/res/layout/settings_homepage_container.xml +++ b/res/layout/settings_homepage_container.xml @@ -44,7 +44,8 @@ + android:layout_height="wrap_content" + android:animateLayoutChanges="true"/> diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java index a2e3a9c50b7..7c5f9283167 100644 --- a/src/com/android/settings/homepage/SettingsHomepageActivity.java +++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java @@ -16,11 +16,13 @@ package com.android.settings.homepage; +import android.animation.LayoutTransition; import android.app.settings.SettingsEnums; import android.content.Intent; import android.os.Bundle; import android.util.FeatureFlagUtils; import android.view.View; +import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.Toolbar; @@ -64,6 +66,8 @@ public class SettingsHomepageActivity extends SettingsBaseActivity { showFragment(new ContextualCardsFragment(), R.id.contextual_cards_content); showFragment(new TopLevelSettings(), R.id.main_content); + ((FrameLayout) findViewById(R.id.main_content)) + .getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING); } private void showFragment(Fragment fragment, int id) { diff --git a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java index b1004605473..df9e85d96c2 100644 --- a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java +++ b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java @@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat; import android.util.FeatureFlagUtils; import android.view.View; +import android.widget.FrameLayout; import com.android.settings.R; import com.android.settings.SettingsActivity; @@ -65,4 +66,13 @@ public class SettingsHomepageActivityTest { assertThat(actualPaddingTop).isEqualTo( statusBarHeight + searchBarHeight + searchBarMargin * 2); } + + @Test + public void launch_shouldHaveAnimationForIaFragment() { + final SettingsHomepageActivity activity = Robolectric.buildActivity( + SettingsHomepageActivity.class).create().get(); + final FrameLayout frameLayout = activity.findViewById(R.id.main_content); + + assertThat(frameLayout.getLayoutTransition()).isNotNull(); + } }