Commit 25febf49 authored by wanglei's avatar wanglei

...

parent b74d2ed5
package com.base.pdfviewerscannerwhite.ui.document.pdf package com.base.pdfviewerscannerwhite.ui.document.pdf
import androidx.activity.addCallback
import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.ItemTouchHelper
import com.base.pdfviewerscannerwhite.bean.DocumentBean import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.databinding.ActivityPdfMergeBinding import com.base.pdfviewerscannerwhite.databinding.ActivityPdfMergeBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.utils.LogEx
class PdfMergeActivity : BaseActivity<ActivityPdfMergeBinding>() { class PdfMergeActivity : BaseActivity<ActivityPdfMergeBinding>() {
private val TAG = "PdfMergeActivity"
override val binding: ActivityPdfMergeBinding by lazy { override val binding: ActivityPdfMergeBinding by lazy {
ActivityPdfMergeBinding.inflate(layoutInflater) ActivityPdfMergeBinding.inflate(layoutInflater)
} }
...@@ -17,14 +20,38 @@ class PdfMergeActivity : BaseActivity<ActivityPdfMergeBinding>() { ...@@ -17,14 +20,38 @@ class PdfMergeActivity : BaseActivity<ActivityPdfMergeBinding>() {
initAdapter() initAdapter()
} }
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
finish()
}
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
}
private fun initAdapter() { private fun initAdapter() {
val callBack = PdfMergeItemTouchHelperCallBack() val callBack = PdfMergeItemTouchHelperCallBack()
val itemTouchHelper = ItemTouchHelper(callBack) val itemTouchHelper = ItemTouchHelper(callBack)
itemTouchHelper.attachToRecyclerView(binding.rv) itemTouchHelper.attachToRecyclerView(binding.rv)
adapter = PdfMergeAdapter(itemTouchHelper,callBack)
binding.rv.adapter = adapter
callBack.changeListOrder = { olderPosition, newPosition ->
val bean = mergePdfList[olderPosition]
mergePdfList.remove(bean)
mergePdfList.add(newPosition, bean)
adapter = PdfMergeAdapter(callBack) mergePdfList.forEach {
binding.rv.adapter = adapter LogEx.logDebug(TAG, "mergePdfList ${it.path}")
}
adapter.items.forEach {
LogEx.logDebug(TAG, "items ${it.path}")
}
// adapter.items = mergePdfList
}
mergePdfList.let { adapter.submitList(it) } mergePdfList.let { adapter.submitList(it) }
} }
......
...@@ -2,23 +2,24 @@ package com.base.pdfviewerscannerwhite.ui.document.pdf ...@@ -2,23 +2,24 @@ package com.base.pdfviewerscannerwhite.ui.document.pdf
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.view.GestureDetector
import android.view.GestureDetector.SimpleOnGestureListener
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.base.pdfviewerscannerwhite.R import com.base.pdfviewerscannerwhite.R
import com.base.pdfviewerscannerwhite.bean.DocumentBean import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.databinding.ItemPdfMergeBinding import com.base.pdfviewerscannerwhite.databinding.ItemPdfMergeBinding
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatSize import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatSize
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime4 import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime4
import com.base.pdfviewerscannerwhite.utils.LogEx
import com.base.pdfviewerscannerwhite.utils.XmlEx.inflate import com.base.pdfviewerscannerwhite.utils.XmlEx.inflate
import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.BaseQuickAdapter
import java.io.File import java.io.File
class PdfMergeAdapter( class PdfMergeAdapter(
val itemTouchHelper: ItemTouchHelper,
val callBack: PdfMergeItemTouchHelperCallBack val callBack: PdfMergeItemTouchHelperCallBack
) : BaseQuickAdapter<DocumentBean, PdfMergeAdapter.PdfMergeViewHolder>() { ) : BaseQuickAdapter<DocumentBean, PdfMergeAdapter.PdfMergeViewHolder>() {
...@@ -35,15 +36,23 @@ class PdfMergeAdapter( ...@@ -35,15 +36,23 @@ class PdfMergeAdapter(
binding.tvName.text = file.name binding.tvName.text = file.name
binding.tvInfo.text = file.lastModified().toFormatTime4() + " " + file.length().toFormatSize() binding.tvInfo.text = file.lastModified().toFormatTime4() + " " + file.length().toFormatSize()
binding.ivMove.setOnTouchListener(object : View.OnTouchListener {
binding.ivMove.setOnLongClickListener { override fun onTouch(v: View?, event: MotionEvent?): Boolean {
if (event?.action == MotionEvent.ACTION_DOWN) {
callBack.enableLongPress = true callBack.enableLongPress = true
true LogEx.logDebug(TAG, "ACTION_DOWN ${System.currentTimeMillis()}")
// 长按时启动拖动
itemTouchHelper.startDrag(holder)
return true
} }
return false
}
})
} }
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): PdfMergeViewHolder { override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): PdfMergeViewHolder {
return PdfMergeViewHolder(R.layout.item_pdf_merge.inflate(parent)) return PdfMergeViewHolder(R.layout.item_pdf_merge.inflate(parent))
} }
} }
\ No newline at end of file
...@@ -6,17 +6,22 @@ import com.base.pdfviewerscannerwhite.utils.LogEx ...@@ -6,17 +6,22 @@ import com.base.pdfviewerscannerwhite.utils.LogEx
class PdfMergeItemTouchHelperCallBack : ItemTouchHelper.Callback() { class PdfMergeItemTouchHelperCallBack : ItemTouchHelper.Callback() {
var changeListOrder: ((olderPosition: Int, newPosition: Int) -> Unit)? = null
var enableLongPress: Boolean = false var enableLongPress: Boolean = false
private val TAG = "PdfMergeItemTouchHelperCallBack" private val TAG = "PdfMergeItemTouchHelperCallBack"
override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int { override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int {
//支持上下左右拖动 //支持上下左右拖动
//ACTION_STATE_IDLE item默认滑动方向 // ACTION_STATE_IDLE item默认滑动方向
return makeMovementFlags( return makeMovementFlags(
ItemTouchHelper.UP or ItemTouchHelper.DOWN or ItemTouchHelper.START or ItemTouchHelper.END, ItemTouchHelper.UP or ItemTouchHelper.DOWN or ItemTouchHelper.START or ItemTouchHelper.END,
ItemTouchHelper.ACTION_STATE_IDLE ItemTouchHelper.ACTION_STATE_IDLE
) )
// 禁用默认的拖动和滑动
// return makeMovementFlags(0, 0);
} }
/** /**
...@@ -29,6 +34,8 @@ class PdfMergeItemTouchHelperCallBack : ItemTouchHelper.Callback() { ...@@ -29,6 +34,8 @@ class PdfMergeItemTouchHelperCallBack : ItemTouchHelper.Callback() {
viewHolder.adapterPosition, viewHolder.adapterPosition,
target.adapterPosition target.adapterPosition
) )
changeListOrder?.invoke(viewHolder.layoutPosition, target.layoutPosition)
enableLongPress = false enableLongPress = false
return true return true
} }
...@@ -37,8 +44,19 @@ class PdfMergeItemTouchHelperCallBack : ItemTouchHelper.Callback() { ...@@ -37,8 +44,19 @@ class PdfMergeItemTouchHelperCallBack : ItemTouchHelper.Callback() {
override fun isLongPressDragEnabled(): Boolean { override fun isLongPressDragEnabled(): Boolean {
LogEx.logDebug(TAG, "isLongPressDragEnabled $enableLongPress") LogEx.logDebug(TAG, "isLongPressDragEnabled $enableLongPress ${System.currentTimeMillis()}")
return enableLongPress return enableLongPress
} }
override fun onSelectedChanged(viewHolder: RecyclerView.ViewHolder?, actionState: Int) {
super.onSelectedChanged(viewHolder, actionState)
if (actionState == ItemTouchHelper.ACTION_STATE_IDLE) {
// 当没有动作时,取消拖动状态
viewHolder?.itemView?.setPressed(false)
} else if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
// 当滑动时,设置拖动状态
viewHolder?.itemView?.setPressed(true)
}
}
} }
\ No newline at end of file
...@@ -55,6 +55,7 @@ ...@@ -55,6 +55,7 @@
<LinearLayout <LinearLayout
android:id="@+id/ll"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="15dp" android:layout_marginStart="15dp"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment