Commit 07eacbb3 authored by wanglei's avatar wanglei

...提交部分功能...

parent 8ad2b48e
...@@ -20,25 +20,46 @@ ...@@ -20,25 +20,46 @@
tools:targetApi="31"> tools:targetApi="31">
<activity <activity
android:name=".activity.PdfConvertedActivity" android:name=".activity.PdfConvertedActivity"
android:exported="false" /> android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <activity
android:name=".activity.ImageToPdfActivity" android:name=".activity.ImageToPdfActivity"
android:exported="false" /> android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <activity
android:name=".activity.XlsBrowserActivity" android:name=".activity.XlsBrowserActivity"
android:exported="false" /> android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <activity
android:name=".activity.DocBrowserActivity" android:name=".activity.DocBrowserActivity"
android:exported="false" /> android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <activity
android:name=".activity.ImageSelectionActivity" android:name=".activity.ImageSelectionActivity"
android:exported="false" /> android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <activity
android:name=".activity.PdfBrowserActivity" android:name=".activity.PdfBrowserActivity"
android:exported="false" /> android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true"> android:exported="true"
android:launchMode="singleTask"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
......
...@@ -93,8 +93,8 @@ class ImageSelectionActivity : BaseActivity<ActivityImageSelectionBinding>() { ...@@ -93,8 +93,8 @@ class ImageSelectionActivity : BaseActivity<ActivityImageSelectionBinding>() {
val pathList = selectedAdapter.getSelectBean().map { it.path } val pathList = selectedAdapter.getSelectBean().map { it.path }
putExtra("PathList", pathList.toTypedArray()) putExtra("PathList", pathList.toTypedArray())
}) })
finish()
} }
finish()
} }
} }
......
...@@ -2,12 +2,16 @@ package com.base.superpdfreader.activity ...@@ -2,12 +2,16 @@ package com.base.superpdfreader.activity
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.widget.Toast
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.recyclerview.widget.ItemTouchHelper
import com.base.superpdfreader.adapter.ImageDragAdapter import com.base.superpdfreader.adapter.ImageDragAdapter
import com.base.superpdfreader.bean.ImageBean import com.base.superpdfreader.bean.ImageBean
import com.base.superpdfreader.databinding.ActivityImageDragBinding import com.base.superpdfreader.databinding.ActivityImageDragBinding
import com.base.superpdfreader.helps.BaseActivity import com.base.superpdfreader.helps.BaseActivity
import com.base.superpdfreader.helps.LogEx
import com.base.superpdfreader.utils.BarUtils import com.base.superpdfreader.utils.BarUtils
import com.base.superpdfreader.utils.itemtouch.MyItemTouchHelperCallBack
import com.base.superpdfreader.view.PDFSaveDialog.showPDFSaveDialog import com.base.superpdfreader.view.PDFSaveDialog.showPDFSaveDialog
import com.google.gson.Gson import com.google.gson.Gson
...@@ -16,7 +20,9 @@ class ImageToPdfActivity : BaseActivity<ActivityImageDragBinding>() { ...@@ -16,7 +20,9 @@ class ImageToPdfActivity : BaseActivity<ActivityImageDragBinding>() {
override val binding: ActivityImageDragBinding by lazy { override val binding: ActivityImageDragBinding by lazy {
ActivityImageDragBinding.inflate(layoutInflater) ActivityImageDragBinding.inflate(layoutInflater)
} }
private val TAG = "ImageToPdfActivity"
private lateinit var imageDragAdapter: ImageDragAdapter private lateinit var imageDragAdapter: ImageDragAdapter
private lateinit var itemTouchHelper: ItemTouchHelper
private val pathList by lazy { private val pathList by lazy {
val beans = intent.getStringArrayExtra("PathList") ?: arrayOf() val beans = intent.getStringArrayExtra("PathList") ?: arrayOf()
...@@ -25,12 +31,22 @@ class ImageToPdfActivity : BaseActivity<ActivityImageDragBinding>() { ...@@ -25,12 +31,22 @@ class ImageToPdfActivity : BaseActivity<ActivityImageDragBinding>() {
} }
} }
override fun initView() { override fun initView() {
BarUtils.setStatusBarLightMode(this, true) BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT) BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
imageDragAdapter = ImageDragAdapter()
imageDragAdapter = ImageDragAdapter(longDrag = { holder ->
itemTouchHelper.startDrag(holder)
})
binding.rv.adapter = imageDragAdapter binding.rv.adapter = imageDragAdapter
imageDragAdapter.setData(pathList) imageDragAdapter.setData(pathList)
val myItemTouchHelperCallBack = MyItemTouchHelperCallBack(changeDataPosition = { oldPosition, newPosition ->
imageDragAdapter.changeDataPosition(oldPosition, newPosition)
})
itemTouchHelper = ItemTouchHelper(myItemTouchHelperCallBack)
itemTouchHelper.attachToRecyclerView(binding.rv)
} }
override fun initListener() { override fun initListener() {
...@@ -56,7 +72,7 @@ class ImageToPdfActivity : BaseActivity<ActivityImageDragBinding>() { ...@@ -56,7 +72,7 @@ class ImageToPdfActivity : BaseActivity<ActivityImageDragBinding>() {
binding.tvConvert.setOnClickListener { binding.tvConvert.setOnClickListener {
showPDFSaveDialog { pdfParameterBean -> showPDFSaveDialog { pdfParameterBean ->
startActivity(Intent(this, PdfConvertedActivity::class.java).apply { startActivity(Intent(this, PdfConvertedActivity::class.java).apply {
pdfParameterBean.pathArray = pathList.map { it.path }.toTypedArray() pdfParameterBean.pathArray = imageDragAdapter.getPathArray()
putExtra("Parameter", Gson().toJson(pdfParameterBean)) putExtra("Parameter", Gson().toJson(pdfParameterBean))
}) })
finish() finish()
......
...@@ -9,6 +9,7 @@ import android.view.View ...@@ -9,6 +9,7 @@ import android.view.View
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.animation.addListener import androidx.core.animation.addListener
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.superpdfreader.bean.PdfParameterBean
import com.base.superpdfreader.databinding.ActivityPdfBrowserBinding import com.base.superpdfreader.databinding.ActivityPdfBrowserBinding
import com.base.superpdfreader.helps.BaseActivity import com.base.superpdfreader.helps.BaseActivity
import com.base.superpdfreader.helps.LogEx import com.base.superpdfreader.helps.LogEx
...@@ -27,6 +28,7 @@ class PdfBrowserActivity : BaseActivity<ActivityPdfBrowserBinding>() { ...@@ -27,6 +28,7 @@ class PdfBrowserActivity : BaseActivity<ActivityPdfBrowserBinding>() {
private val TAG = "PdfBrowserActivity" private val TAG = "PdfBrowserActivity"
override val binding: ActivityPdfBrowserBinding by lazy { override val binding: ActivityPdfBrowserBinding by lazy {
ActivityPdfBrowserBinding.inflate(layoutInflater) ActivityPdfBrowserBinding.inflate(layoutInflater)
} }
...@@ -124,5 +126,4 @@ class PdfBrowserActivity : BaseActivity<ActivityPdfBrowserBinding>() { ...@@ -124,5 +126,4 @@ class PdfBrowserActivity : BaseActivity<ActivityPdfBrowserBinding>() {
toolsFadeShow() toolsFadeShow()
} }
} }
} }
\ No newline at end of file
package com.base.superpdfreader.activity package com.base.superpdfreader.activity
import android.content.Intent import android.content.Intent
import android.graphics.Color
import android.os.Environment import android.os.Environment
import android.util.Log import android.util.Log
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
...@@ -10,6 +11,7 @@ import com.base.superpdfreader.databinding.ActivityPdfConvertedBinding ...@@ -10,6 +11,7 @@ import com.base.superpdfreader.databinding.ActivityPdfConvertedBinding
import com.base.superpdfreader.helps.BaseActivity import com.base.superpdfreader.helps.BaseActivity
import com.base.superpdfreader.helps.LogEx import com.base.superpdfreader.helps.LogEx
import com.base.superpdfreader.helps.pdf.PdfHelp.convertImagesToPdf import com.base.superpdfreader.helps.pdf.PdfHelp.convertImagesToPdf
import com.base.superpdfreader.utils.BarUtils
import com.google.gson.Gson import com.google.gson.Gson
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
...@@ -25,6 +27,9 @@ class PdfConvertedActivity : BaseActivity<ActivityPdfConvertedBinding>() { ...@@ -25,6 +27,9 @@ class PdfConvertedActivity : BaseActivity<ActivityPdfConvertedBinding>() {
private var pdfParameterBean: PdfParameterBean? = null private var pdfParameterBean: PdfParameterBean? = null
override fun initView() { override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
val json = intent.extras?.getString("Parameter") ?: "" val json = intent.extras?.getString("Parameter") ?: ""
pdfParameterBean = Gson().fromJson(json, PdfParameterBean::class.java) pdfParameterBean = Gson().fromJson(json, PdfParameterBean::class.java)
LogEx.logDebug(TAG, "pdfParameterBean=$pdfParameterBean") LogEx.logDebug(TAG, "pdfParameterBean=$pdfParameterBean")
......
package com.base.superpdfreader.adapter package com.base.superpdfreader.adapter
import android.view.View import android.view.View
import android.view.View.OnLongClickListener
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.superpdfreader.R import com.base.superpdfreader.R
import com.base.superpdfreader.bean.ImageBean import com.base.superpdfreader.bean.ImageBean
import com.base.superpdfreader.databinding.ItemImageDragBinding import com.base.superpdfreader.databinding.ItemImageDragBinding
import com.base.superpdfreader.helps.LogEx
import com.base.superpdfreader.view.XmlEx.inflate import com.base.superpdfreader.view.XmlEx.inflate
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() { class ImageDragAdapter(val longDrag: (holder: ViewHolder) -> Unit) : RecyclerView.Adapter<ImageDragAdapter.AAA>() {
private val TAG = "ImageDragAdapter"
private val beanList = arrayListOf<ImageBean>() private val beanList = arrayListOf<ImageBean>()
inner class AAA(view: View) : ViewHolder(view) inner class AAA(view: View) : ViewHolder(view)
...@@ -30,6 +33,10 @@ class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() { ...@@ -30,6 +33,10 @@ class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() {
val bean = beanList[position] val bean = beanList[position]
Glide.with(context).load(bean.path).centerCrop().into(binding.iv) Glide.with(context).load(bean.path).centerCrop().into(binding.iv)
binding.ivDrag.setOnLongClickListener { v: View? ->
longDrag.invoke(holder)
true
}
} }
fun setData(data: List<ImageBean>, isClean: Boolean = true) { fun setData(data: List<ImageBean>, isClean: Boolean = true) {
...@@ -39,4 +46,19 @@ class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() { ...@@ -39,4 +46,19 @@ class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() {
beanList.addAll(data) beanList.addAll(data)
notifyDataSetChanged() notifyDataSetChanged()
} }
/**
* 切换数据位置
*/
fun changeDataPosition(oldPosition: Int, newPosition: Int) {
LogEx.logDebug(TAG, "oldPosition=$oldPosition newPosition=$newPosition")
val data = beanList[oldPosition]
beanList.removeAt(oldPosition)
beanList.add(newPosition, data)
}
fun getPathArray(): Array<String> {
return beanList.map { it.path }.toTypedArray()
}
} }
\ No newline at end of file
package com.base.superpdfreader.utils.itemtouch
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
import com.base.superpdfreader.helps.LogEx
class MyItemTouchHelperCallBack(
val changeDataPosition: ((oldPosition: Int, newPosition: Int) -> Unit)? = null
) : ItemTouchHelper.Callback() {
private val TAG = "MyItemTouchHelperCallBack"
/**
* 设置拖拽和item滑动的可支持方向
*/
override fun getMovementFlags(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder
): Int {
//支持上下左右拖动
//ACTION_STATE_IDLE item默认滑动方向
return makeMovementFlags(
ItemTouchHelper.UP or ItemTouchHelper.DOWN or ItemTouchHelper.START or ItemTouchHelper.END,
ItemTouchHelper.ACTION_STATE_IDLE
)
}
/**
* 拖拽结束后(手指抬起)会回调的方法
*/
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
//更新item holder对应位置
recyclerView.adapter?.notifyItemMoved(
viewHolder.adapterPosition,
target.adapterPosition
)
LogEx.logDebug(
TAG, "adapterPosition=${viewHolder.adapterPosition} " +
"layoutPosition=${viewHolder.layoutPosition} " +
"oldPosition=${viewHolder.oldPosition} " +
"target.adapterPosition=${target.adapterPosition} " +
"target.layoutPosition=${target.layoutPosition}"
)
changeDataPosition?.invoke(
viewHolder.layoutPosition,
target.layoutPosition
)
return true
}
/**
* 侧滑回调
*/
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) = Unit
/**
* 长点击拖动
*/
override fun isLongPressDragEnabled() = false
/**
* 可结束拖动
*/
override fun canDropOver(
recyclerView: RecyclerView,
current: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
) = true
}
\ No newline at end of file
package com.base.superpdfreader.view package com.base.superpdfreader.view
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.AlertDialog
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View
import android.widget.EditText
import android.widget.Toast import android.widget.Toast
import androidx.core.content.ContextCompat
import com.base.superpdfreader.R import com.base.superpdfreader.R
import com.base.superpdfreader.activity.DocBrowserActivity import com.base.superpdfreader.activity.DocBrowserActivity
import com.base.superpdfreader.activity.PdfBrowserActivity import com.base.superpdfreader.activity.PdfBrowserActivity
import com.base.superpdfreader.activity.XlsBrowserActivity import com.base.superpdfreader.activity.XlsBrowserActivity
import com.base.superpdfreader.bean.DocumentBean import com.base.superpdfreader.bean.DocumentBean
import com.base.superpdfreader.databinding.DialogDocumentDetailBinding import com.base.superpdfreader.databinding.DialogDocumentDetailBinding
import com.base.superpdfreader.databinding.ItemEditBinding
import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_EXCEL import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_EXCEL
import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PDF import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PDF
import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PPT import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PPT
...@@ -120,8 +115,7 @@ object DocumentDetailDialog { ...@@ -120,8 +115,7 @@ object DocumentDetailDialog {
dialog.dismiss() dialog.dismiss()
val emailIntent = Intent(Intent.ACTION_SEND).apply { val emailIntent = Intent(Intent.ACTION_SEND).apply {
setType("plain/text"); setType("application/pdf")
// 附加文件 // 附加文件
putExtra(Intent.EXTRA_STREAM, bean.uri) putExtra(Intent.EXTRA_STREAM, bean.uri)
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
...@@ -160,6 +154,7 @@ object DocumentDetailDialog { ...@@ -160,6 +154,7 @@ object DocumentDetailDialog {
val shareIntent = Intent(Intent.ACTION_SEND).apply { val shareIntent = Intent(Intent.ACTION_SEND).apply {
setType("application/pdf") setType("application/pdf")
putExtra(Intent.EXTRA_STREAM, bean.uri) putExtra(Intent.EXTRA_STREAM, bean.uri)
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
} }
val chooser: Intent = Intent.createChooser(shareIntent, "share pdf") val chooser: Intent = Intent.createChooser(shareIntent, "share pdf")
......
...@@ -14,28 +14,37 @@ ...@@ -14,28 +14,37 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <FrameLayout
android:id="@+id/iv_clip" android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="start|bottom" android:layout_gravity="bottom"
android:layout_marginStart="16dp" android:background="#4DBFBFBF">
android:layout_marginBottom="8dp"
android:minWidth="26dp" <ImageView
android:minHeight="26dp" android:id="@+id/iv_clip"
android:src="@mipmap/clip" android:layout_width="wrap_content"
tools:ignore="ContentDescription" /> android:layout_height="wrap_content"
android:layout_gravity="start|center_vertical"
android:layout_marginVertical="2dp"
android:layout_marginStart="16dp"
android:minWidth="26dp"
android:minHeight="26dp"
android:src="@mipmap/clip"
android:visibility="gone"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_drag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:layout_marginVertical="2dp"
android:layout_marginEnd="16dp"
android:minWidth="26dp"
android:minHeight="26dp"
android:src="@mipmap/yidong"
tools:ignore="ContentDescription" />
</FrameLayout>
<ImageView
android:id="@+id/iv_drag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
android:minWidth="26dp"
android:minHeight="26dp"
android:src="@mipmap/yidong"
tools:ignore="ContentDescription" />
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
\ No newline at end of file
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