Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
Super PDF Reader
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
Super PDF Reader
Commits
07eacbb3
Commit
07eacbb3
authored
Jun 26, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...提交部分功能...
parent
8ad2b48e
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
184 additions
and
40 deletions
+184
-40
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+28
-7
ImageSelectionActivity.kt
...om/base/superpdfreader/activity/ImageSelectionActivity.kt
+1
-1
ImageToPdfActivity.kt
...va/com/base/superpdfreader/activity/ImageToPdfActivity.kt
+18
-2
PdfBrowserActivity.kt
...va/com/base/superpdfreader/activity/PdfBrowserActivity.kt
+2
-1
PdfConvertedActivity.kt
.../com/base/superpdfreader/activity/PdfConvertedActivity.kt
+5
-0
ImageDragAdapter.kt
.../java/com/base/superpdfreader/adapter/ImageDragAdapter.kt
+23
-1
MyItemTouchHelperCallBack.kt
...perpdfreader/utils/itemtouch/MyItemTouchHelperCallBack.kt
+75
-0
DocumentDetailDialog.kt
...java/com/base/superpdfreader/view/DocumentDetailDialog.kt
+2
-7
item_image_drag.xml
app/src/main/res/layout/item_image_drag.xml
+30
-21
No files found.
app/src/main/AndroidManifest.xml
View file @
07eacbb3
...
...
@@ -20,25 +20,46 @@
tools:targetApi=
"31"
>
<activity
android:name=
".activity.PdfConvertedActivity"
android:exported=
"false"
/>
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".activity.ImageToPdfActivity"
android:exported=
"false"
/>
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".activity.XlsBrowserActivity"
android:exported=
"false"
/>
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".activity.DocBrowserActivity"
android:exported=
"false"
/>
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".activity.ImageSelectionActivity"
android:exported=
"false"
/>
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".activity.PdfBrowserActivity"
android:exported=
"false"
/>
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".MainActivity"
android:exported=
"true"
>
android:exported=
"true"
android:launchMode=
"singleTask"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
...
...
app/src/main/java/com/base/superpdfreader/activity/ImageSelectionActivity.kt
View file @
07eacbb3
...
...
@@ -93,8 +93,8 @@ class ImageSelectionActivity : BaseActivity<ActivityImageSelectionBinding>() {
val
pathList
=
selectedAdapter
.
getSelectBean
().
map
{
it
.
path
}
putExtra
(
"PathList"
,
pathList
.
toTypedArray
())
})
finish
()
}
finish
()
}
}
...
...
app/src/main/java/com/base/superpdfreader/activity/ImageToPdfActivity.kt
View file @
07eacbb3
...
...
@@ -2,12 +2,16 @@ package com.base.superpdfreader.activity
import
android.content.Intent
import
android.graphics.Color
import
android.widget.Toast
import
androidx.activity.addCallback
import
androidx.recyclerview.widget.ItemTouchHelper
import
com.base.superpdfreader.adapter.ImageDragAdapter
import
com.base.superpdfreader.bean.ImageBean
import
com.base.superpdfreader.databinding.ActivityImageDragBinding
import
com.base.superpdfreader.helps.BaseActivity
import
com.base.superpdfreader.helps.LogEx
import
com.base.superpdfreader.utils.BarUtils
import
com.base.superpdfreader.utils.itemtouch.MyItemTouchHelperCallBack
import
com.base.superpdfreader.view.PDFSaveDialog.showPDFSaveDialog
import
com.google.gson.Gson
...
...
@@ -16,7 +20,9 @@ class ImageToPdfActivity : BaseActivity<ActivityImageDragBinding>() {
override
val
binding
:
ActivityImageDragBinding
by
lazy
{
ActivityImageDragBinding
.
inflate
(
layoutInflater
)
}
private
val
TAG
=
"ImageToPdfActivity"
private
lateinit
var
imageDragAdapter
:
ImageDragAdapter
private
lateinit
var
itemTouchHelper
:
ItemTouchHelper
private
val
pathList
by
lazy
{
val
beans
=
intent
.
getStringArrayExtra
(
"PathList"
)
?:
arrayOf
()
...
...
@@ -25,12 +31,22 @@ class ImageToPdfActivity : BaseActivity<ActivityImageDragBinding>() {
}
}
override
fun
initView
()
{
BarUtils
.
setStatusBarLightMode
(
this
,
true
)
BarUtils
.
setStatusBarColor
(
this
,
Color
.
TRANSPARENT
)
imageDragAdapter
=
ImageDragAdapter
()
imageDragAdapter
=
ImageDragAdapter
(
longDrag
=
{
holder
->
itemTouchHelper
.
startDrag
(
holder
)
})
binding
.
rv
.
adapter
=
imageDragAdapter
imageDragAdapter
.
setData
(
pathList
)
val
myItemTouchHelperCallBack
=
MyItemTouchHelperCallBack
(
changeDataPosition
=
{
oldPosition
,
newPosition
->
imageDragAdapter
.
changeDataPosition
(
oldPosition
,
newPosition
)
})
itemTouchHelper
=
ItemTouchHelper
(
myItemTouchHelperCallBack
)
itemTouchHelper
.
attachToRecyclerView
(
binding
.
rv
)
}
override
fun
initListener
()
{
...
...
@@ -56,7 +72,7 @@ class ImageToPdfActivity : BaseActivity<ActivityImageDragBinding>() {
binding
.
tvConvert
.
setOnClickListener
{
showPDFSaveDialog
{
pdfParameterBean
->
startActivity
(
Intent
(
this
,
PdfConvertedActivity
::
class
.
java
).
apply
{
pdfParameterBean
.
pathArray
=
pathList
.
map
{
it
.
path
}.
toTyped
Array
()
pdfParameterBean
.
pathArray
=
imageDragAdapter
.
getPath
Array
()
putExtra
(
"Parameter"
,
Gson
().
toJson
(
pdfParameterBean
))
})
finish
()
...
...
app/src/main/java/com/base/superpdfreader/activity/PdfBrowserActivity.kt
View file @
07eacbb3
...
...
@@ -9,6 +9,7 @@ import android.view.View
import
androidx.activity.addCallback
import
androidx.core.animation.addListener
import
androidx.lifecycle.lifecycleScope
import
com.base.superpdfreader.bean.PdfParameterBean
import
com.base.superpdfreader.databinding.ActivityPdfBrowserBinding
import
com.base.superpdfreader.helps.BaseActivity
import
com.base.superpdfreader.helps.LogEx
...
...
@@ -27,6 +28,7 @@ class PdfBrowserActivity : BaseActivity<ActivityPdfBrowserBinding>() {
private
val
TAG
=
"PdfBrowserActivity"
override
val
binding
:
ActivityPdfBrowserBinding
by
lazy
{
ActivityPdfBrowserBinding
.
inflate
(
layoutInflater
)
}
...
...
@@ -124,5 +126,4 @@ class PdfBrowserActivity : BaseActivity<ActivityPdfBrowserBinding>() {
toolsFadeShow
()
}
}
}
\ No newline at end of file
app/src/main/java/com/base/superpdfreader/activity/PdfConvertedActivity.kt
View file @
07eacbb3
package
com.base.superpdfreader.activity
import
android.content.Intent
import
android.graphics.Color
import
android.os.Environment
import
android.util.Log
import
androidx.lifecycle.lifecycleScope
...
...
@@ -10,6 +11,7 @@ import com.base.superpdfreader.databinding.ActivityPdfConvertedBinding
import
com.base.superpdfreader.helps.BaseActivity
import
com.base.superpdfreader.helps.LogEx
import
com.base.superpdfreader.helps.pdf.PdfHelp.convertImagesToPdf
import
com.base.superpdfreader.utils.BarUtils
import
com.google.gson.Gson
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
...
...
@@ -25,6 +27,9 @@ class PdfConvertedActivity : BaseActivity<ActivityPdfConvertedBinding>() {
private
var
pdfParameterBean
:
PdfParameterBean
?
=
null
override
fun
initView
()
{
BarUtils
.
setStatusBarLightMode
(
this
,
true
)
BarUtils
.
setStatusBarColor
(
this
,
Color
.
TRANSPARENT
)
val
json
=
intent
.
extras
?.
getString
(
"Parameter"
)
?:
""
pdfParameterBean
=
Gson
().
fromJson
(
json
,
PdfParameterBean
::
class
.
java
)
LogEx
.
logDebug
(
TAG
,
"pdfParameterBean=$pdfParameterBean"
)
...
...
app/src/main/java/com/base/superpdfreader/adapter/ImageDragAdapter.kt
View file @
07eacbb3
package
com.base.superpdfreader.adapter
import
android.view.View
import
android.view.View.OnLongClickListener
import
android.view.ViewGroup
import
androidx.recyclerview.widget.RecyclerView
import
androidx.recyclerview.widget.RecyclerView.ViewHolder
import
com.base.superpdfreader.R
import
com.base.superpdfreader.bean.ImageBean
import
com.base.superpdfreader.databinding.ItemImageDragBinding
import
com.base.superpdfreader.helps.LogEx
import
com.base.superpdfreader.view.XmlEx.inflate
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
>()
inner
class
AAA
(
view
:
View
)
:
ViewHolder
(
view
)
...
...
@@ -30,6 +33,10 @@ class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() {
val
bean
=
beanList
[
position
]
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
)
{
...
...
@@ -39,4 +46,19 @@ class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() {
beanList
.
addAll
(
data
)
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
app/src/main/java/com/base/superpdfreader/utils/itemtouch/MyItemTouchHelperCallBack.kt
0 → 100644
View file @
07eacbb3
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
app/src/main/java/com/base/superpdfreader/view/DocumentDetailDialog.kt
View file @
07eacbb3
package
com.base.superpdfreader.view
import
android.annotation.SuppressLint
import
android.app.AlertDialog
import
android.content.Context
import
android.content.Intent
import
android.net.Uri
import
android.view.LayoutInflater
import
android.view.View
import
android.widget.EditText
import
android.widget.Toast
import
androidx.core.content.ContextCompat
import
com.base.superpdfreader.R
import
com.base.superpdfreader.activity.DocBrowserActivity
import
com.base.superpdfreader.activity.PdfBrowserActivity
import
com.base.superpdfreader.activity.XlsBrowserActivity
import
com.base.superpdfreader.bean.DocumentBean
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_PDF
import
com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PPT
...
...
@@ -120,8 +115,7 @@ object DocumentDetailDialog {
dialog
.
dismiss
()
val
emailIntent
=
Intent
(
Intent
.
ACTION_SEND
).
apply
{
setType
(
"plain/text"
);
setType
(
"application/pdf"
)
// 附加文件
putExtra
(
Intent
.
EXTRA_STREAM
,
bean
.
uri
)
addFlags
(
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
)
...
...
@@ -160,6 +154,7 @@ object DocumentDetailDialog {
val
shareIntent
=
Intent
(
Intent
.
ACTION_SEND
).
apply
{
setType
(
"application/pdf"
)
putExtra
(
Intent
.
EXTRA_STREAM
,
bean
.
uri
)
addFlags
(
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
)
}
val
chooser
:
Intent
=
Intent
.
createChooser
(
shareIntent
,
"share pdf"
)
...
...
app/src/main/res/layout/item_image_drag.xml
View file @
07eacbb3
...
...
@@ -14,28 +14,37 @@
android:layout_height=
"match_parent"
tools:ignore=
"ContentDescription"
/>
<ImageView
android:id=
"@+id/iv_clip"
android:layout_width=
"wrap_content"
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"start|bottom"
android:layout_marginStart=
"16dp"
android:layout_marginBottom=
"8dp"
android:minWidth=
"26dp"
android:minHeight=
"26dp"
android:src=
"@mipmap/clip"
tools:ignore=
"ContentDescription"
/>
android:layout_gravity=
"bottom"
android:background=
"#4DBFBFBF"
>
<ImageView
android:id=
"@+id/iv_clip"
android:layout_width=
"wrap_content"
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>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment