Skip to content

Instantly share code, notes, and snippets.

@RadiationX
Created June 6, 2018 09:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RadiationX/0f95de43397849a51584737a14d2eeca to your computer and use it in GitHub Desktop.
Save RadiationX/0f95de43397849a51584737a14d2eeca to your computer and use it in GitHub Desktop.
recyclerView.apply {
layoutManager = LinearLayoutManager(context)
adapter = this@ParkingVehicleFragment.adapter
val swipeHandler = ParkingVehicleItemDelegate.ItemTouchHelperExtensionCallback()
ItemTouchHelperExtension(swipeHandler).attachToRecyclerView(recyclerView)
}
class ItemTouchHelperExtensionCallback : ItemTouchHelperExtension.Callback() {
override fun getMovementFlags(recyclerView: RecyclerView?, viewHolder: RecyclerView.ViewHolder?): Int {
if (!(viewHolder is ViewHolder)) return 0
return makeMovementFlags(0, ItemTouchHelper.START)
}
override fun onMove(recyclerView: RecyclerView?, viewHolder: RecyclerView.ViewHolder?, target: RecyclerView.ViewHolder?): Boolean {
return false
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder?, direction: Int) {
// nothing
}
override fun onChildDraw(c: Canvas?, recyclerView: RecyclerView?, viewHolder: RecyclerView.ViewHolder?, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean) {
(viewHolder as? ViewHolder)?.itemView?.run {
itemCard.translationX = dX
var progress = Math.abs(dX / viewHolder.actionWidth)
progress = Math.min(progress, 1f)
itemBtnDelete.scaleX = progress
itemBtnDelete.scaleY = progress
}
}
}
Вьюхолдеру добавляешь интерфейс
private inner class ViewHolder(val view: View) : RecyclerView.ViewHolder(view), Extension
И в него добавляешь
override fun getActionWidth(): Float = view.itemBtnDelete.width.toFloat()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment