【问题标题】:Android. Animation on gravity change安卓。重力变化动画
【发布时间】:2017-05-20 14:27:06
【问题描述】:

我在另一个框架中有一个 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>

【问题讨论】:

    标签: android android-animation


    【解决方案1】:

    添加

    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);
        });
    

    【讨论】:

    • 动画完成时有回调吗?
    • 试试这个: val transition = AutoTransition() transition.addListener(object : TransitionListenerAdapter() { override fun onTransitionEnd(transition: Transition) { // 你的代码 } }) TransitionManager.beginDelayedTransition(parentOfAnimatedView, transition )
    猜你喜欢
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 2011-12-04
    • 1970-01-01
    • 2013-10-13
    • 2010-10-27
    • 2016-11-13
    相关资源
    最近更新 更多