通过RecylerView实施Google+卡喜欢的动画

时间:2015-02-04 05:32:51

标签: android animation

之前,我使用Video

中提到的技术实施了Google+卡喜欢动画(New Google Now and Google+ card interface
  1. 覆盖LinearLayout' onGlobalLayout以启动动画,以便在首次启动活动时,我们可以看到卡片的上滑动画。
  2. 覆盖ScrollView' onScrollChanged以启动动画,以便在滚动期间,我们可以看到新显示的卡片已设为动画。
  3. 到目前为止,我还没有看到RecylerView示例中的任何技术。

    我想知道,在不使用LinearLayoutScrollView的情况下,使用RecylerView可以达到相同的结果吗?有没有可用的代码示例? (到目前为止,我还找不到一个)

1 个答案:

答案 0 :(得分:0)

在RecyclerView的适配器中添加这些行。为每张卡制作一个变量,即(convertView),并初始化它。

int mLastPosition = 0;
public static class ViewHolder extends RecyclerView.ViewHolder {
 TextView card_head, card_body;
 View convertView;
      @SuppressLint("NewApi")
      public ViewHolder(View v) {
       super(v);
      convertView = v;
    }
 }

绑定您按位置查看

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {

// do your thing here

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {
        float initialTranslation = (mLastPosition <= position ? 150f
                : -150f);

        holder.convertView.setTranslationY(initialTranslation);
        holder.convertView.animate()
                .setInterpolator(new DecelerateInterpolator(1.0f))
                .translationY(0f).setDuration(900l).setListener(null);
    }
    // Keep track of the last position we loaded
    mLastPosition = position;
}

在这里,您必须为创建新卡时动画调用onBindViewHolder方法的视图设置动画,以便对整个视图进行自定义。