使用CardView动画显示父级布局边界的视图

时间:2016-04-21 12:27:26

标签: android animation android-cardview clip

我正在尝试将我的视图设置为父级布局之外的视图。正如我在其他问题中所说的那样:

        android:clipChildren="false"
        android:clipToPadding="false"

适用于普通视图!但是,我需要为CardView中的视图设置动画。出于某种原因,当我的视图位于CardView内部时,它没有动画显示它,它只是停在边界处。

我的布局文件非常简单,只是一个LinearLayout,一些视图和一个带有动画视图的cardview:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
android:clipChildren="false"
android:clipToPadding="false">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!" />

<android.support.v7.widget.CardView
    android:layout_width="350dp"
    android:layout_height="200dp"
    android:clipChildren="false"
    android:clipToPadding="false">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clipChildren="false"
        android:clipToPadding="false">
        <View
            android:id="@+id/animate"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:background="@android:color/holo_red_light"/>
    </LinearLayout>
</android.support.v7.widget.CardView>

</LinearLayout>

我用于动画的代码是:

View view = findViewById(R.id.animate);
    ObjectAnimator animation2 = ObjectAnimator.ofFloat(view, "translationY", -500);
    animation2.setDuration(5000);
    animation2.setTarget(view);
    animation2.start();

现在的问题是,当我使用CardView时,视图会停止在边框处制作动画。它只是消失了。当我使用普通的FrameLayout时,它会从父级进行动画处理。

CardView是否有任何奇怪的行为并且没有动画效果?

1 个答案:

答案 0 :(得分:2)

事实证明,在CardView上

cardView.setClipToOutline(false);
需要调用

。这样可以防止项目在边界处消失。