gpt4 book ai didi

android - 回收站 View : different ItemAnimators for different viewTypes

转载 作者:太空宇宙 更新时间:2023-11-03 12:30:43 25 4
gpt4 key购买 nike

我有一个具有不同 viewType 的 RecylerView,并且想为每个 viewType 应用不同的动画。

使用 RecyclerView.setItemAnimator() 我只能为 RecyclerView 的所有元素应用动画。

有没有办法为每个 View 类型实现不同的动画?

最佳答案

每个 RecyclerView.ViewHolder 都有返回 View 类型的方法方法。假设在您的适配器中,getItemViewType(int position) 返回 VIEW_TYPE_HEADER,ViewHolder 方法 getItemViewType() 以您在 中覆盖的任何方法返回>ItemAnimator 将返回此 VIEW_TYPE_HEADER

如果您已经在适配器中执行此操作,则很容易在动画器中区分 View 类型:

  1. 创建一个通用的 ItemAnimator 来包装所有不同的动画师,将此动画师设置为您的 RecyclerView
  2. 在以下方法中做:

     @Override
    public boolean animateAppearance(RecyclerView.ViewHolder viewHolder, RecyclerView.ItemAnimator.ItemHolderInfo preLayoutInfo, RecyclerView.ItemAnimator.ItemHolderInfo postLayoutInfo){

    if(viewHolder.getItemViewType() == MyAdapter.VIEW_TYPE_ITEM){
    //perform animation of usual item
    mItemAnimator.animateAppearance(viewHolder, preLayoutInfo, postLayoutInfo);
    }else if(viewHolder.getItemViewType() == MyAdapter.VIEW_TYPE_HEADER){
    //perform animation of the header
    mHeaderAnimator.animateAppearance(viewHolder, preLayoutInfo, postLayoutInfo);
    }else if(viewHolder.getItemViewType() == MyAdapter.VIEW_TYPE_FOOTER){
    //perform animation of the footer.
    mFooterAnimator.animateAppearance(viewHolder, preLayoutInfo, postLayoutInfo);
    }else return false;
    return true;

    }
  3. 对您要覆盖的其余方法执行相同的操作。

关于android - 回收站 View : different ItemAnimators for different viewTypes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34808175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com