我有 5 张卡片的水平回收器 View ,单击每张卡片时,我必须翻转该卡片并在单击的卡片位置显示新卡片,我该怎么做。?
我尝试过 ViewFlipper,但没有成功。
最佳答案
可能的解决方案是使用此库:EasyFlipView
如何在 RecycleView 中使用它的简短示例:
使用此 .xml 布局作为适配器 View 项。
请注意在 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>
在您将绑定(bind) View 的 CustomRecycleViewAdapter
之后。
为 backSide 和 frontSide 设置 ClickListener
以及 body 来翻转卡片,如下所示(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
关于android-recyclerview - RecyclerView 中卡片的翻转动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39366484/