RecyclerView Animation on Item Click

后端 未结 2 545
逝去的感伤
逝去的感伤 2020-12-23 10:41

I am trying to implement my own recyclerview Animation - I would like to achieve this without using any external libraries. Here is what the theoretical animation should

2条回答
  •  忘掉有多难
    2020-12-23 11:11

    An easier alternative for @AndyRoid's answer is to use android:animateLayoutChanges="true" property. This way you don't need to write any animation code; however, this is not a way to go if you need to have a control over animation.

    You still need to create an OnClickListener:

    class CardTapListener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            View someView = v.findViewById(R.id.view_to_expand);
    
            if (someView.getVisibility() == View.GONE) {
                someView.setVisibility(View.VISIBLE);
            }
            else if (someView.getVisibility() == View.VISIBLE){
                someView.setVisibility(View.GONE);
            }
    
        }
    }
    

    Attach it to every ViewHolder:

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.view_holder_layout, viewGroup, false);
        v.setOnClickListener(new CardTapListener());
        return new ItemViewHolder(v);
    }
    

    Don't forget to collapse views when binding a new item:

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
        ...
        // Collapse (probably opened by user previously) view
        ItemViewHolder itemHolder = (ItemViewHolder) viewHolder;
        itemHolder.description.setVisibility(View.GONE);
        ...
    
    }
    

    view_holder_layout.xml:

    
    
     ...
    
        
    
     
    

提交回复
热议问题