在RecyclerView中翻转卡片的动画

时间:2016-09-07 09:44:19

标签: android-recyclerview viewflipper

我有5张卡的水平回收视图,点击每张卡我必须翻转该卡并在点击的卡位置显示新卡,我该怎么做。?

我曾尝试使用ViewFlipper,但没有运气。

1 个答案:

答案 0 :(得分:1)

可能的解决方案是使用以下库:EasyFlipView

在RecycleView中如何使用它的简短示例:

使用此.xml布局作为“适配器”视图项。 请注意在EasyFlipView之后首先添加背面布局(卡片的背面翻转),因为这是该库识别哪种布局为正面或背面的方式。

<com.wajahatkarim3.easyflipview.EasyFlipView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/flipView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:flipDuration="400"
    app:flipEnabled="true"
    app:flipType="horizontal"
    app:flipOnTouch="false">
    <!--Back-->
    <include
        android:id="@+id/backSide"
        layout="@layout/back_activity" />

    <!--Front-->
    <include
        android:id="@+id/frontSide"
        layout="@layout/front_activity" />

</com.wajahatkarim3.easyflipview.EasyFlipView>

CustomRecycleViewAdapter之后,您将绑定视图。 如图所示,将ClickListener设置为具有主体的backSide和frontSide来翻转卡片(如下所示(以Kotlin为例):

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.bind(data[position])
}

inner class ViewHolder(private val view: View) : 
       RecyclerView.ViewHolder(view) {
 private val backSide: ConstraintLayout = view.findViewById(R.id.backSide)
 private val frontSide: ConstraintLayout = view.findViewById(R.id.frontSide)
 private val flipView: EasyFlipView = view.findViewById(R.id.flipView)

 init{
  backSide.setOnClickListener {
            flipView.flipDuration = 1000
            flipView.flipTheView()
        }
   frontSide.setOnClickListener {
            flipView.flipDuration = 1000
            flipView.flipTheView()
        }
 }
 fun bind(item: SomeData) {//.... }

}

此库作者的全部功劳,链接-https://github.com/wajahatkarim3/EasyFlipView