之前,我使用Video
中提到的技术实施了Google+卡喜欢动画(New Google Now and Google+ card interface)LinearLayout
' onGlobalLayout
以启动动画,以便在首次启动活动时,我们可以看到卡片的上滑动画。ScrollView
' onScrollChanged
以启动动画,以便在滚动期间,我们可以看到新显示的卡片已设为动画。到目前为止,我还没有看到RecylerView
示例中的任何技术。
我想知道,在不使用LinearLayout
和ScrollView
的情况下,使用RecylerView
可以达到相同的结果吗?有没有可用的代码示例? (到目前为止,我还找不到一个)
答案 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方法的视图设置动画,以便对整个视图进行自定义。