未知的动画名称:decelerateInterpolator

ant*_*009 10 android android-animation

Android Studio 1.5
Device Samsung 4.4.2
Run Code Online (Sandbox Code Playgroud)

我正在尝试将从ArrayList加载的项目动画化为recyclerview.我在单击下拉箭头时,项目应在展开时设置动画(减速),并在折叠时设置动画.但是,目前只显示列表项.

调用setAnimation的代码

 @Override
    public void onBindChildViewHolder(ChatChildViewHolder childViewHolder, int position, Object childListItem) {
        ChatChildTitles chatChildTitles = (ChatChildTitles)childListItem;
        childViewHolder.tvChildTitle.setText(chatChildTitles.getTitle());

        setAnimation(childViewHolder.cvChildRooms, position);
    }
Run Code Online (Sandbox Code Playgroud)

用于设置动画的代码

  private void setAnimation(CardView viewToAnimate, int position) {
        Animation animation = AnimationUtils.loadAnimation(mContext, android.R.anim.fade_in);
        animation.setInterpolator(mContext, android.R.anim.decelerate_interpolator);
        viewToAnimate.startAnimation(animation);
    }
Run Code Online (Sandbox Code Playgroud)

这是一些截图:

在崩溃的状态

在此输入图像描述

单击箭头后,解释列表 在此输入图像描述

这是我正在使用的布局,它代表将在recyclerView中显示的行:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    android:id="@+id/cvChildRooms"
    xmlns:card="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card:cardBackgroundColor="@color/child_header_lighter_grey"
    card:contentPadding="4dp"
    card:cardPreventCornerOverlap="true">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/profile_image"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_gravity="center_vertical|start"
        android:src="@drawable/photorace"/>

    <TextView
        android:id="@+id/tvChildTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center"
        android:text="Coffee Latte Room"
        android:fontFamily="sans-serif-light"
        android:textSize="16sp"
        android:textColor="@android:color/black"/>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)

我有一个应该启动动画的功能.

private void setAnimation(CardView viewToAnimate, int position) {
    Animation animation = AnimationUtils.loadAnimation(mContext, android.R.anim.decelerate_interpolator);
    viewToAnimate.startAnimation(animation);
}
Run Code Online (Sandbox Code Playgroud)

我已经测试过使用以下可以正常使用的slide_in_left.但是,我不希望它们从左侧滑入

Animation animation = AnimationUtils.loadAnimation(mContext, android.R.anim.slide_in_left);
viewToAnimate.startAnimation(animation);
Run Code Online (Sandbox Code Playgroud)

非常感谢任何建议,

Mat*_*ini 7

你不能使用decelerate_interpolator因为它不是动画,它是一个插补器:

插值器定义动画的变化率.这允许加速,减速,重复等基本动画效果(alpha,缩放,平移,旋转).

参考:http:
//developer.android.com/reference/android/view/animation/Interpolator.html

正如您所看到的,描述它们的XML完全不同:

资料来源decelerate_interpolator.xml:

<decelerateInterpolator />
Run Code Online (Sandbox Code Playgroud)

资料来源slide_in_left.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-50%p" android:toXDelta="0"
            android:duration="@android:integer/config_mediumAnimTime"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
            android:duration="@android:integer/config_mediumAnimTime" />
</set>
Run Code Online (Sandbox Code Playgroud)


bon*_*nyz 7

如果要使用减速插补器 ,则需要将其设置为插值器,而不是动画师:

private void setAnimation(CardView viewToAnimate, int position) {
    Animation animation = AnimationUtils.loadAnimation(mContext, android.R.anim.fade_in); //change this with your desidered (or custom) animation
    animation.setInterpolator(mContext, android.R.anim.decelerate_interpolator);
    viewToAnimate.startAnimation(animation);
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

你说你使用的是com.bignerdranch.android:expandablerecyclerview:2.0.3.

从图书馆的官方文档中,它清楚地说明了如何创建展开/折叠动画:

您还可以通过覆盖创建自己的动画以进行扩展 ParentViewHolder#onExpansionToggled(boolean),这将在展开或折叠itemView时为您调用.

我建议你看看图书馆的官方例子.