安卓 重力变化动画

Tim*_*ima 0 android android-animation

我在另一个框架内。它与中心对齐。

不,我想通过更改其重力使其与顶部对齐,但我也想为该更改设置动画。

我已经在这里/sf/answers/2323463481/找到了这个答案,但是在那里使用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>
Run Code Online (Sandbox Code Playgroud)

pri*_*xes 5

compile 'com.android.support:transition:25.2.0'
Run Code Online (Sandbox Code Playgroud)

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

TransitionManager.beginDelayedTransition(parentOfAnimatedView);
Run Code Online (Sandbox Code Playgroud)

例如

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