我有5张卡的水平回收视图,点击每张卡我必须翻转该卡并在点击的卡位置显示新卡,我该怎么做。?
我曾尝试使用ViewFlipper,但没有运气。
答案 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