【发布时间】:2016-07-02 18:07:28
【问题描述】:
我想延迟动画每个视图。目前所有项目都在创建时一起动画。并且只有当我滚动新添加的项目时才会有动画,所以我想在回收站视图中为最初创建的项目设置动画这是我在回收站视图适配器中的代码
private void setAnimation(View viewToAnimate, int position)
{
// If the bound view wasn't previously displayed on screen, it's animated
if (position > lastPosition)
{
Animation animation = AnimationUtils.loadAnimation(context, R.anim.slide_left);
animation.setDuration(1000);
viewToAnimate.startAnimation(animation);
lastPosition = position;
}
}
@Override
public void onBindViewHolder(RecyclerViewHolder holder, int position) {
Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/gothamlight.ttf");
NavigationData navigationData = arrayList.get(position);
holder.NavigationImage.setImageResource(navigationData.getImg_res());
holder.NavigationTitle.setText(navigationData.getNavigationTitle());
holder.NavigationTitle.setTypeface(tf);
setAnimation(holder.Container, position);
}
【问题讨论】:
-
问题是你在 onBindViewHolder 中启动动画,它声明:“/** * 由 RecyclerView 调用以在指定位置显示数据。此方法 * 应该更新 { @link ViewHolder#itemView} 在给定位置反映项目。”因此,每当屏幕上显示一个项目时,它就会启动动画。
标签: android animation android-recyclerview adapter