Android 单击recyclerview元素时的动画

Android 单击recyclerview元素时的动画,android,android-recyclerview,android-animation,Android,Android Recyclerview,Android Animation,当我点击recyclerview元素时,我需要制作一个类似于下拉列表的动画。在Item2 xml标记中,1是主标记,第二个标记在单击时可见。根据这个想法,它应该是这样的:我点击元素,它以一个退出动画打开。再次按下时,它关闭。还有动画。目前,这些元素只是突然出现,也突然消失。如果可能的话,我不想使用第三方库。我想做一些像 在这段代码中,我要么打开消息活动,要么打开有关用户的其他信息 布局: <LinearLayout xmlns:android="http://schemas.an

当我点击recyclerview元素时,我需要制作一个类似于下拉列表的动画。在Item2 xml标记中,1是主标记,第二个标记在单击时可见。根据这个想法,它应该是这样的:我点击元素,它以一个退出动画打开。再次按下时,它关闭。还有动画。目前,这些元素只是突然出现,也突然消失。如果可能的话,我不想使用第三方库。我想做一些像

在这段代码中,我要么打开消息活动,要么打开有关用户的其他信息

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:padding="10dp"
    android:layout_height="wrap_content">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/info_about">
            ///Info about users(username and him photo)

        </RelativeLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/info_about"
            android:paddingTop="5dp"
            android:layout_marginTop="45dp"
            android:layout_centerHorizontal="true"
            android:orientation="vertical"
            android:visibility="gone"
            android:id="@+id/info">

            ///Info about users(call_number, email... When i clicked on item)
        </LinearLayout>
    </androidx.cardview.widget.CardView>
</LinearLayout>

///关于用户的信息(用户名和他的照片)
///关于用户的信息(当我点击项目时,电话号码、电子邮件等)
试试这个

holder.binding.cardview.setOnClickListener(v -> {


                    if (holder.binding.expandableView.getVisibility()==View.GONE){
                        TransitionManager.beginDelayedTransition(holder.binding.cardview, new AutoTransition());
                        holder.binding.expandableView.setVisibility(View.VISIBLE);
                    } else {
                        TransitionManager.beginDelayedTransition(holder.binding.cardview, new AutoTransition());
                        holder.binding.expandableView.setVisibility(View.GONE);

                    }

                    if (holder.binding.playlayout.getVisibility()==View.GONE){
                        TransitionManager.beginDelayedTransition(holder.binding.cardview, new AutoTransition());
                        holder.binding.playlayout.setVisibility(View.VISIBLE);
                    } else {
                        TransitionManager.beginDelayedTransition(holder.binding.cardview, new AutoTransition());
                        holder.binding.playlayout.setVisibility(View.GONE);

                    }

                });
            }

谢谢您的回答,但是您的解决方案中的约束是什么?我的clicklistener如下所示:holder.itemView.setOnClickListener(new View.OnClickListener(){@Override public void onClick(View v){一些代码。。。。
holder.binding.cardview.setOnClickListener(v -> {


                    if (holder.binding.expandableView.getVisibility()==View.GONE){
                        TransitionManager.beginDelayedTransition(holder.binding.cardview, new AutoTransition());
                        holder.binding.expandableView.setVisibility(View.VISIBLE);
                    } else {
                        TransitionManager.beginDelayedTransition(holder.binding.cardview, new AutoTransition());
                        holder.binding.expandableView.setVisibility(View.GONE);

                    }

                    if (holder.binding.playlayout.getVisibility()==View.GONE){
                        TransitionManager.beginDelayedTransition(holder.binding.cardview, new AutoTransition());
                        holder.binding.playlayout.setVisibility(View.VISIBLE);
                    } else {
                        TransitionManager.beginDelayedTransition(holder.binding.cardview, new AutoTransition());
                        holder.binding.playlayout.setVisibility(View.GONE);

                    }

                });
            }