Android系统。关于重力变化的动画

时间:2017-05-19 14:11:51

标签: android android-animation

我在另一个中有一个FrameLayout。它与中心对齐。

不,我想通过改变引力来将它与顶部对齐,但我也希望为此更改设置动画。

我已经在https://stackoverflow.com/a/33192335/408780找到了这个答案,但在那里使用的LayoutTransition.CHANGING需要API 16.

我们的应用程序然而minSdk是14.有任何关于重力变化动画的建议吗?

提前谢谢

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/background"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/bg"
        android:scaleType="centerCrop"/>

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:animateLayoutChanges="true">
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scaleType="fitXY"
            android:src="@drawable/container_bg"/>
        <EditText
            android:layout_gravity="center_vertical"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"/>
    </FrameLayout>
</FrameLayout>

1 个答案:

答案 0 :(得分:5)

添加

compile 'com.android.support:transition:25.2.0'

到您的应用依赖项。 然后,在更改重力之前添加此行(来自android.support.transition包的TransitionManager)

TransitionManager.beginDelayedTransition(parentOfAnimatedView);

例如

mContainer.setOnClickListener(v -> {
        TransitionManager.beginDelayedTransition((ViewGroup) mContainer.getParent());
        FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) mContainer.getLayoutParams();
        layoutParams.gravity = Gravity.TOP;
        mContainer.setLayoutParams(layoutParams);
    });