- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Android Studio 1.5
Device Samsung 4.4.2
我正在尝试对从 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);
}
设置动画的代码
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);
}
下面是一些截图:
处于折叠状态
这是我正在使用的布局,代表将在 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>
我有一个函数可以启动动画。
private void setAnimation(CardView viewToAnimate, int position) {
Animation animation = AnimationUtils.loadAnimation(mContext, android.R.anim.decelerate_interpolator);
viewToAnimate.startAnimation(animation);
}
我已经使用以下方法进行了测试,它可以与 slide_in_left
配合使用。但是,我不希望他们从左边滑入
Animation animation = AnimationUtils.loadAnimation(mContext, android.R.anim.slide_in_left);
viewToAnimate.startAnimation(animation);
非常感谢您的任何建议,
最佳答案
如果您想使用减速插值器 您需要将其设置为插值器,而不是动画器:
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);
}
更新
你说你正在使用com.bignerdranch.android:expandablerecyclerview:2.0.3 .
从库的官方文档中,清楚地说明了如何创建展开/折叠动画:
You can also create your own animations for expansion by overriding
ParentViewHolder#onExpansionToggled(boolean)
, which will be called for you when the itemView is expanded or collapsed.
我建议你看看 official example图书馆。
关于android - 未知动画名称 : decelerateInterpolator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33387450/
Android Studio 1.5 Device Samsung 4.4.2 我正在尝试对从 ArrayList 加载到 recyclerview 中的项目进行动画处理。当单击下拉箭头时,项目在展开
我是一名优秀的程序员,十分优秀!