Android CardView无法正确设置动画

时间:2018-08-20 17:39:17

标签: java android xml android-animation android-cardview

实现Array.from(entries); 并尝试将动画应用于箭头文本视图后,单击箭头时动画显示异常行为。如何修复动画并获得与预期动画图像相似的结果?

预期动画

enter image description here

当前动画

enter image description here

recyclerview_item

CardView

MyRecyclerAdapter.java

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:animateLayoutChanges="true"
    android:clickable="true"
    android:focusable="true"
    android:foreground="?android:attr/selectableItemBackground"
    android:id="@+id/cv"
    android:layout_marginBottom="20dp"
    >

    <LinearLayout
        android:id="@+id/cardview_main"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="10dp"
        android:animateLayoutChanges="true">

        <LinearLayout
            android:id="@+id/cardview_titlerow"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginBottom="2dp"
            android:weightSum="100">

            <TextView
                android:id="@+id/tv_A"
                android:layout_weight="90"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                style="@android:style/TextAppearance.Medium" />

            <TextView
                android:id="@+id/tv_expandcollapsearrow"
                android:clickable="true"
                android:focusable="true"
                android:layout_weight="10"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="10dp"
                android:textColor="@android:color/white"
                style="@android:style/TextAppearance.Medium" />
        </LinearLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >

            <TextView
                android:id="@+id/tv_B"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="@android:style/TextAppearance.Large"
                />

        </RelativeLayout>

    </LinearLayout>
</android.support.v7.widget.CardView>

Sourabh的建议

enter image description here

2 个答案:

答案 0 :(得分:1)

一种更简单的方法是设置可隐藏视图的可见性,并使用TransitionManager为这些布局更改设置动画。

TransitionManager.beginDelayedTransition(rootView) 
// rootView can be the container view of all cards

这将有助于增加卡的高度并淡入这些视图。我不确定它是否也可以旋转箭头,但是您可以尝试。或者您可以使用RotateAnimation

答案 1 :(得分:-2)

预期的动画似乎是矢量可绘制动画,而您遵循的方法将视图动画化,而不是可绘制动画。

您需要使用Animated Vector drawable才能获得所需的结果。