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
This commit is contained in:
Mill Chen
2019-02-20 17:12:49 +08:00
parent 5f321d7921
commit 23452861e5
3 changed files with 16 additions and 1 deletions

View File

@@ -44,7 +44,8 @@
<FrameLayout <FrameLayout
android:id="@+id/main_content" android:id="@+id/main_content"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"/> android:layout_height="wrap_content"
android:animateLayoutChanges="true"/>
</LinearLayout> </LinearLayout>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>

View File

@@ -16,11 +16,13 @@
package com.android.settings.homepage; package com.android.settings.homepage;
import android.animation.LayoutTransition;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.FeatureFlagUtils; import android.util.FeatureFlagUtils;
import android.view.View; import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Toolbar; import android.widget.Toolbar;
@@ -64,6 +66,8 @@ public class SettingsHomepageActivity extends SettingsBaseActivity {
showFragment(new ContextualCardsFragment(), R.id.contextual_cards_content); showFragment(new ContextualCardsFragment(), R.id.contextual_cards_content);
showFragment(new TopLevelSettings(), R.id.main_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) { private void showFragment(Fragment fragment, int id) {

View File

@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;
import android.util.FeatureFlagUtils; import android.util.FeatureFlagUtils;
import android.view.View; import android.view.View;
import android.widget.FrameLayout;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
@@ -65,4 +66,13 @@ public class SettingsHomepageActivityTest {
assertThat(actualPaddingTop).isEqualTo( assertThat(actualPaddingTop).isEqualTo(
statusBarHeight + searchBarHeight + searchBarMargin * 2); 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();
}
} }