Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
P
PDF Viewer Scanner White ago
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
kuxulei
PDF Viewer Scanner White ago
Commits
64faa5bc
Commit
64faa5bc
authored
Sep 29, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
a132ef93
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
1482 additions
and
55 deletions
+1482
-55
build.gradle.kts
app/build.gradle.kts
+11
-1
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+4
-0
DocumentBean.kt
.../java/com/base/pdfviewerscannerwhite/bean/DocumentBean.kt
+1
-0
PdfLoadingActivity.kt
...fviewerscannerwhite/ui/document/pdf/PdfLoadingActivity.kt
+16
-0
PdfMergeActivity.kt
...pdfviewerscannerwhite/ui/document/pdf/PdfMergeActivity.kt
+61
-5
PdfMergeAdapter.kt
.../pdfviewerscannerwhite/ui/document/pdf/PdfMergeAdapter.kt
+5
-0
PdfPresenter.kt
...ase/pdfviewerscannerwhite/ui/document/pdf/PdfPresenter.kt
+18
-5
PdfSplitActivity.kt
...pdfviewerscannerwhite/ui/document/pdf/PdfSplitActivity.kt
+8
-1
BookmarkFragment.kt
...om/base/pdfviewerscannerwhite/ui/main/BookmarkFragment.kt
+118
-0
DocumentPageFragment.kt
...ase/pdfviewerscannerwhite/ui/main/DocumentPageFragment.kt
+233
-0
DocumentView.kt
...va/com/base/pdfviewerscannerwhite/ui/main/DocumentView.kt
+1
-1
MainActivity.kt
...va/com/base/pdfviewerscannerwhite/ui/main/MainActivity.kt
+31
-33
MainActivity2.kt
...a/com/base/pdfviewerscannerwhite/ui/main/MainActivity2.kt
+115
-0
RecentFragment.kt
.../com/base/pdfviewerscannerwhite/ui/main/RecentFragment.kt
+128
-0
SplashActivity.kt
...om/base/pdfviewerscannerwhite/ui/splash/SplashActivity.kt
+2
-1
DialogView.kt
...java/com/base/pdfviewerscannerwhite/ui/view/DialogView.kt
+2
-3
PdfDialog.kt
.../java/com/base/pdfviewerscannerwhite/ui/view/PdfDialog.kt
+16
-5
activity_main.xml
app/src/main/res/layout/activity_main.xml
+9
-0
activity_main2.xml
app/src/main/res/layout/activity_main2.xml
+247
-0
fragment_bookmark.xml
app/src/main/res/layout/fragment_bookmark.xml
+211
-0
fragment_document_page.xml
app/src/main/res/layout/fragment_document_page.xml
+45
-0
fragment_recent.xml
app/src/main/res/layout/fragment_recent.xml
+200
-0
No files found.
app/build.gradle.kts
View file @
64faa5bc
import
java.text.SimpleDateFormat
import
java.util.Locale
plugins
{
plugins
{
alias
(
libs
.
plugins
.
androidApplication
)
alias
(
libs
.
plugins
.
androidApplication
)
alias
(
libs
.
plugins
.
jetbrainsKotlinAndroid
)
alias
(
libs
.
plugins
.
jetbrainsKotlinAndroid
)
...
@@ -11,10 +14,17 @@ android {
...
@@ -11,10 +14,17 @@ android {
applicationId
=
"com.base.pdfviewerscannerwhite"
applicationId
=
"com.base.pdfviewerscannerwhite"
minSdk
=
24
minSdk
=
24
targetSdk
=
34
targetSdk
=
34
versionCode
=
1
versionCode
=
2
versionName
=
"1.0"
versionName
=
"1.0"
testInstrumentationRunner
=
"androidx.test.runner.AndroidJUnitRunner"
testInstrumentationRunner
=
"androidx.test.runner.AndroidJUnitRunner"
fun
Long
.
toFormatTime3
():
String
{
return
SimpleDateFormat
(
"yyyy-MM-dd HH-mm-ss"
,
Locale
.
ENGLISH
).
format
(
this
)
}
setProperty
(
"archivesBaseName"
,
"pdf-v${System.currentTimeMillis().toFormatTime3()}"
)
// ndk {
// ndk {
// abiFilters.add("arm64-v8a")
// abiFilters.add("arm64-v8a")
// // 取消注释以下行以添加更多 ABI 支持
// // 取消注释以下行以添加更多 ABI 支持
...
...
app/src/main/AndroidManifest.xml
View file @
64faa5bc
...
@@ -19,6 +19,10 @@
...
@@ -19,6 +19,10 @@
android:theme=
"@style/Theme.PDFViewerScannerWhite"
android:theme=
"@style/Theme.PDFViewerScannerWhite"
android:usesCleartextTraffic=
"true"
android:usesCleartextTraffic=
"true"
tools:targetApi=
"34"
>
tools:targetApi=
"34"
>
<activity
android:name=
".ui.main.MainActivity2"
android:exported=
"false"
android:launchMode=
"singleTask"
/>
<meta-data
<meta-data
android:name=
"com.google.android.gms.version"
android:name=
"com.google.android.gms.version"
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/bean/DocumentBean.kt
View file @
64faa5bc
...
@@ -11,6 +11,7 @@ data class DocumentBean(
...
@@ -11,6 +11,7 @@ data class DocumentBean(
var
uiType
:
Int
=
0
//0首页模式 1合并选择模式 2拆分模式 3解锁加锁模式 4搜索模式
var
uiType
:
Int
=
0
//0首页模式 1合并选择模式 2拆分模式 3解锁加锁模式 4搜索模式
var
isSelect
:
Boolean
=
false
var
isSelect
:
Boolean
=
false
var
state
:
Int
=
-
1
//0正常状态 1 锁定
var
state
:
Int
=
-
1
//0正常状态 1 锁定
var
password
:
String
=
""
companion
object
{
companion
object
{
const
val
TYPE_PDF
=
"type_pdf"
const
val
TYPE_PDF
=
"type_pdf"
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/document/pdf/PdfLoadingActivity.kt
View file @
64faa5bc
...
@@ -8,10 +8,13 @@ import com.base.pdfviewerscannerwhite.bean.ConstObject.DO_SAVE_PDF
...
@@ -8,10 +8,13 @@ import com.base.pdfviewerscannerwhite.bean.ConstObject.DO_SAVE_PDF
import
com.base.pdfviewerscannerwhite.bean.ConstObject.DO_SPLIT_PDF
import
com.base.pdfviewerscannerwhite.bean.ConstObject.DO_SPLIT_PDF
import
com.base.pdfviewerscannerwhite.databinding.ActivityPdfLoadingBinding
import
com.base.pdfviewerscannerwhite.databinding.ActivityPdfLoadingBinding
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
import
com.base.pdfviewerscannerwhite.utils.LogEx
import
com.base.pdfviewerscannerwhite.utils.ToastUtils.toast
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.isActive
import
kotlinx.coroutines.isActive
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
import
java.io.File
import
kotlin.random.Random
import
kotlin.random.Random
class
PdfLoadingActivity
:
BaseActivity
<
ActivityPdfLoadingBinding
>()
{
class
PdfLoadingActivity
:
BaseActivity
<
ActivityPdfLoadingBinding
>()
{
...
@@ -20,6 +23,7 @@ class PdfLoadingActivity : BaseActivity<ActivityPdfLoadingBinding>() {
...
@@ -20,6 +23,7 @@ class PdfLoadingActivity : BaseActivity<ActivityPdfLoadingBinding>() {
private
var
doWhat
=
""
private
var
doWhat
=
""
private
var
srcPath
:
String
=
""
private
var
srcPath
:
String
=
""
private
var
newPath
:
String
=
""
private
var
newPath
:
String
=
""
private
var
pwd
:
String
?
=
null
private
var
splitIndex
:
List
<
Int
>
=
listOf
()
private
var
splitIndex
:
List
<
Int
>
=
listOf
()
private
lateinit
var
pdfPresenter
:
PdfPresenter
private
lateinit
var
pdfPresenter
:
PdfPresenter
...
@@ -30,16 +34,26 @@ class PdfLoadingActivity : BaseActivity<ActivityPdfLoadingBinding>() {
...
@@ -30,16 +34,26 @@ class PdfLoadingActivity : BaseActivity<ActivityPdfLoadingBinding>() {
private
var
isFinishBoolean
:
Boolean
=
false
private
var
isFinishBoolean
:
Boolean
=
false
private
var
progressFinishAction
:
(()
->
Unit
)?
=
null
private
var
progressFinishAction
:
(()
->
Unit
)?
=
null
var
resultFile
:
File
?
=
null
override
fun
initView
()
{
override
fun
initView
()
{
pdfPresenter
=
PdfPresenter
(
this
)
pdfPresenter
=
PdfPresenter
(
this
)
initSpPa
()
initSpPa
()
pdfPresenter
.
password
=
pwd
when
(
doWhat
)
{
when
(
doWhat
)
{
DO_SPLIT_PDF
->
{
DO_SPLIT_PDF
->
{
progressFinishAction
=
{
progressFinishAction
=
{
if
(
resultFile
!=
null
)
{
startActivity
(
Intent
(
this
,
PdfActivity
::
class
.
java
).
apply
{
putExtra
(
"path"
,
resultFile
?.
absolutePath
?:
""
)
})
}
else
{
toast
(
"split pdf failed"
)
}
finish
()
finish
()
}
}
pdfPresenter
.
splitPdf
(
srcPath
,
newPath
,
splitIndex
,
finishAction
=
{
pdfPresenter
.
splitPdf
(
srcPath
,
newPath
,
splitIndex
,
finishAction
=
{
resultFile
=
it
isFinishBoolean
=
true
isFinishBoolean
=
true
})
})
}
}
...
@@ -90,8 +104,10 @@ class PdfLoadingActivity : BaseActivity<ActivityPdfLoadingBinding>() {
...
@@ -90,8 +104,10 @@ class PdfLoadingActivity : BaseActivity<ActivityPdfLoadingBinding>() {
private
fun
initSpPa
()
{
private
fun
initSpPa
()
{
doWhat
=
intent
?.
extras
?.
getString
(
"doWhat"
,
""
)
?:
""
doWhat
=
intent
?.
extras
?.
getString
(
"doWhat"
,
""
)
?:
""
srcPath
=
intent
?.
extras
?.
getString
(
"srcPath"
,
""
)
?:
""
srcPath
=
intent
?.
extras
?.
getString
(
"srcPath"
,
""
)
?:
""
pwd
=
intent
.
extras
?.
getString
(
"pwd"
)
newPath
=
intent
?.
extras
?.
getString
(
"newPath"
,
""
)
?:
""
newPath
=
intent
?.
extras
?.
getString
(
"newPath"
,
""
)
?:
""
splitIndex
=
intent
.
extras
?.
getString
(
"splitIndex"
)
?.
split
(
","
)
?.
map
{
it
.
toInt
()
}
?:
listOf
()
splitIndex
=
intent
.
extras
?.
getString
(
"splitIndex"
)
?.
split
(
","
)
?.
map
{
it
.
toInt
()
}
?:
listOf
()
LogEx
.
logDebug
(
TAG
,
"initSpPa doWhat=$doWhat srcPath=$srcPath pwd=$pwd newPath=$newPath splitIndex=$splitIndex"
)
}
}
companion
object
{
companion
object
{
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/document/pdf/PdfMergeActivity.kt
View file @
64faa5bc
...
@@ -2,14 +2,22 @@ package com.base.pdfviewerscannerwhite.ui.document.pdf
...
@@ -2,14 +2,22 @@ package com.base.pdfviewerscannerwhite.ui.document.pdf
import
android.content.Intent
import
android.content.Intent
import
androidx.activity.addCallback
import
androidx.activity.addCallback
import
androidx.lifecycle.lifecycleScope
import
androidx.recyclerview.widget.ItemTouchHelper
import
androidx.recyclerview.widget.ItemTouchHelper
import
com.base.pdfviewerscannerwhite.bean.ConstObject.DO_MERGE_PDF
import
com.base.pdfviewerscannerwhite.bean.ConstObject.DO_MERGE_PDF
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.ui.view.DialogView.showDocumentRenameDialog
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentRenameDialog
import
com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfPwdDialog
import
com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime2
import
com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime2
import
com.base.pdfviewerscannerwhite.utils.LogEx
import
com.base.pdfviewerscannerwhite.utils.LogEx
import
kotlinx.coroutines.cancel
import
kotlinx.coroutines.isActive
import
kotlinx.coroutines.launch
import
java.util.concurrent.ArrayBlockingQueue
import
java.util.concurrent.BlockingQueue
class
PdfMergeActivity
:
BaseActivity
<
ActivityPdfMergeBinding
>()
{
class
PdfMergeActivity
:
BaseActivity
<
ActivityPdfMergeBinding
>()
{
...
@@ -38,15 +46,63 @@ class PdfMergeActivity : BaseActivity<ActivityPdfMergeBinding>() {
...
@@ -38,15 +46,63 @@ class PdfMergeActivity : BaseActivity<ActivityPdfMergeBinding>() {
finish
()
finish
()
}
}
binding
.
tvBtnNext
.
setOnClickListener
{
binding
.
tvBtnNext
.
setOnClickListener
{
verificationPasswordDialogs
{
showDocumentRenameDialog
(
name
=
"Merge_${System.currentTimeMillis().toFormatTime2()}"
,
okAction
=
{
name
->
startActivity
(
Intent
(
this
,
PdfLoadingActivity
::
class
.
java
).
apply
{
putExtra
(
"doWhat"
,
DO_MERGE_PDF
)
putExtra
(
"newPath"
,
pdfPresenter
.
createNewPdfPath
(
name
))
})
showDocumentRenameDialog
(
name
=
"Merge_${System.currentTimeMillis().toFormatTime2()}"
,
okAction
=
{
name
->
startActivity
(
Intent
(
this
,
PdfLoadingActivity
::
class
.
java
).
apply
{
putExtra
(
"doWhat"
,
DO_MERGE_PDF
)
putExtra
(
"newPath"
,
pdfPresenter
.
createNewPdfPath
(
name
))
})
})
}
}
}
private
fun
verificationPasswordDialogs
(
callBack
:
(
isContinue
:
Boolean
)
->
Unit
)
{
val
queue
:
BlockingQueue
<
DocumentBean
>
=
ArrayBlockingQueue
(
1
)
})
val
pwdItemList
=
mergePdfList
.
filter
{
it
.
state
==
1
}
if
(
pwdItemList
.
isNotEmpty
())
{
LogEx
.
logDebug
(
TAG
,
"verificationPasswordDialogs1"
)
val
verifiedList
=
arrayListOf
<
DocumentBean
>()
val
first
=
pwdItemList
[
0
]
queue
.
put
(
first
)
mergePdfList
.
removeAt
(
0
)
var
isCancel
:
Boolean
=
false
LogEx
.
logDebug
(
TAG
,
"verificationPasswordDialogs2"
)
lifecycleScope
.
launch
()
{
while
(
isActive
)
{
val
item
:
DocumentBean
=
queue
.
take
()
LogEx
.
logDebug
(
TAG
,
"verificationPasswordDialogs3"
)
showPdfPwdDialog
(
item
.
state
,
item
.
path
,
isCheckPwd
=
true
,
verificationAction
=
{
pwd
->
item
.
password
=
pwd
verifiedList
.
add
(
item
)
if
(
pwdItemList
.
isNotEmpty
())
{
val
next
=
mergePdfList
[
0
]
queue
.
put
(
next
)
}
else
{
cancel
()
}
},
cancelAction
=
{
isCancel
=
true
cancel
()
})
}
}
if
(
isCancel
)
{
callBack
.
invoke
(
false
)
return
}
else
{
verifiedList
.
forEach
{
verifiedItem
->
mergePdfList
.
find
{
it
.
path
==
verifiedItem
.
path
}
?.
password
=
verifiedItem
.
password
}
}
mergePdfList
.
forEach
{
LogEx
.
logDebug
(
TAG
,
"密码="
+
it
.
password
)
}
}
}
callBack
.
invoke
(
true
)
}
}
private
fun
initAdapter
()
{
private
fun
initAdapter
()
{
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/document/pdf/PdfMergeAdapter.kt
View file @
64faa5bc
...
@@ -36,6 +36,11 @@ class PdfMergeAdapter(
...
@@ -36,6 +36,11 @@ class PdfMergeAdapter(
val
file
=
File
(
item
.
path
)
val
file
=
File
(
item
.
path
)
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
()
if
(
item
.
state
==
0
){
binding
.
iv
.
setImageResource
(
R
.
mipmap
.
h_pdfiocn
)
}
else
{
binding
.
iv
.
setImageResource
(
R
.
mipmap
.
suoding
)
}
binding
.
flClose
.
setOnClickListener
{
binding
.
flClose
.
setOnClickListener
{
remove
(
item
)
remove
(
item
)
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/document/pdf/PdfPresenter.kt
View file @
64faa5bc
...
@@ -13,6 +13,8 @@ import com.base.pdfviewerscannerwhite.utils.LogEx
...
@@ -13,6 +13,8 @@ import com.base.pdfviewerscannerwhite.utils.LogEx
import
com.base.pdfviewerscannerwhite.utils.UriUtils.readFileToByteArray
import
com.base.pdfviewerscannerwhite.utils.UriUtils.readFileToByteArray
import
com.tom_roush.pdfbox.multipdf.PDFMergerUtility
import
com.tom_roush.pdfbox.multipdf.PDFMergerUtility
import
com.tom_roush.pdfbox.pdmodel.PDDocument
import
com.tom_roush.pdfbox.pdmodel.PDDocument
import
java.io.ByteArrayInputStream
import
java.io.ByteArrayOutputStream
import
java.io.File
import
java.io.File
...
@@ -42,8 +44,6 @@ class PdfPresenter(
...
@@ -42,8 +44,6 @@ class PdfPresenter(
}
}
fun
iniPdfPage
(
filePath
:
String
,
uri
:
String
?
=
null
)
{
fun
iniPdfPage
(
filePath
:
String
,
uri
:
String
?
=
null
)
{
val
list
=
arrayListOf
<
PdfPageBean
>()
val
list
=
arrayListOf
<
PdfPageBean
>()
val
number
=
PdfBoxUtils
.
getNumberOfPages
(
filePath
,
password
,
uri
)
val
number
=
PdfBoxUtils
.
getNumberOfPages
(
filePath
,
password
,
uri
)
...
@@ -55,13 +55,16 @@ class PdfPresenter(
...
@@ -55,13 +55,16 @@ class PdfPresenter(
fun
splitPdf
(
fun
splitPdf
(
srcPath
:
String
,
newPath
:
String
,
splitIndex
:
List
<
Int
>,
srcPath
:
String
,
newPath
:
String
,
splitIndex
:
List
<
Int
>,
finishAction
:
(
newFile
:
File
?)
->
Unit
finishAction
:
(
newFile
:
File
?)
->
Unit
)
=
Thread
{
)
=
Thread
{
try
{
try
{
// 加载现有 PDF 文档
// 加载现有 PDF 文档
val
sourceDocument
=
PDDocument
.
load
(
File
(
srcPath
),
password
)
val
sourceDocument
=
PDDocument
.
load
(
File
(
srcPath
),
password
)
LogEx
.
logDebug
(
TAG
,
"sourceDocument open"
)
// 创建新的 PDF 文档
// 创建新的 PDF 文档
val
newDocument
=
PDDocument
()
val
newDocument
=
PDDocument
()
...
@@ -76,7 +79,7 @@ class PdfPresenter(
...
@@ -76,7 +79,7 @@ class PdfPresenter(
newDocument
.
close
()
newDocument
.
close
()
sourceDocument
.
close
()
sourceDocument
.
close
()
}
catch
(
e
:
Exception
)
{
}
catch
(
e
:
Exception
)
{
println
(
"Error occurred while splitting PDF.
"
)
LogEx
.
logDebug
(
TAG
,
"splitPdf error
"
)
finishAction
.
invoke
(
null
)
finishAction
.
invoke
(
null
)
return
@Thread
return
@Thread
}
}
...
@@ -132,7 +135,17 @@ class PdfPresenter(
...
@@ -132,7 +135,17 @@ class PdfPresenter(
mergerUtility
.
destinationFileName
=
mergePath
mergerUtility
.
destinationFileName
=
mergePath
PdfMergeActivity
.
mergePdfList
.
forEach
{
documentBean
->
PdfMergeActivity
.
mergePdfList
.
forEach
{
documentBean
->
mergerUtility
.
addSource
(
File
(
documentBean
.
path
))
if
(
documentBean
.
state
==
0
)
{
mergerUtility
.
addSource
(
File
(
documentBean
.
path
))
}
else
{
LogEx
.
logDebug
(
TAG
,
"documentBean.password=${documentBean.password}"
)
val
pdfDocument
=
PDDocument
.
load
(
File
(
documentBean
.
path
),
documentBean
.
password
)
val
byteArrayOutputStream
=
ByteArrayOutputStream
()
pdfDocument
.
save
(
byteArrayOutputStream
)
pdfDocument
.
close
()
val
inputStream
=
ByteArrayInputStream
(
byteArrayOutputStream
.
toByteArray
())
mergerUtility
.
addSource
(
inputStream
)
}
}
}
mergerUtility
.
mergeDocuments
(
null
)
mergerUtility
.
mergeDocuments
(
null
)
mergePdfList
.
clear
()
mergePdfList
.
clear
()
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/document/pdf/PdfSplitActivity.kt
View file @
64faa5bc
...
@@ -3,6 +3,7 @@ package com.base.pdfviewerscannerwhite.ui.document.pdf
...
@@ -3,6 +3,7 @@ package com.base.pdfviewerscannerwhite.ui.document.pdf
import
android.content.Intent
import
android.content.Intent
import
androidx.activity.addCallback
import
androidx.activity.addCallback
import
com.base.pdfviewerscannerwhite.R
import
com.base.pdfviewerscannerwhite.R
import
com.base.pdfviewerscannerwhite.bean.ConstObject
import
com.base.pdfviewerscannerwhite.bean.PdfPageBean
import
com.base.pdfviewerscannerwhite.bean.PdfPageBean
import
com.base.pdfviewerscannerwhite.databinding.ActivityPdfSplitBinding
import
com.base.pdfviewerscannerwhite.databinding.ActivityPdfSplitBinding
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
...
@@ -13,6 +14,7 @@ class PdfSplitActivity : BaseActivity<ActivityPdfSplitBinding>(), PdfView {
...
@@ -13,6 +14,7 @@ class PdfSplitActivity : BaseActivity<ActivityPdfSplitBinding>(), PdfView {
private
lateinit
var
pdfPresenter
:
PdfPresenter
private
lateinit
var
pdfPresenter
:
PdfPresenter
private
lateinit
var
pdfPagerAdapter
:
PdfPagerAdapter
private
lateinit
var
pdfPagerAdapter
:
PdfPagerAdapter
private
var
path
:
String
=
""
private
var
path
:
String
=
""
private
var
pwd
:
String
?
=
""
override
val
binding
:
ActivityPdfSplitBinding
by
lazy
{
override
val
binding
:
ActivityPdfSplitBinding
by
lazy
{
ActivityPdfSplitBinding
.
inflate
(
layoutInflater
)
ActivityPdfSplitBinding
.
inflate
(
layoutInflater
)
...
@@ -21,6 +23,8 @@ class PdfSplitActivity : BaseActivity<ActivityPdfSplitBinding>(), PdfView {
...
@@ -21,6 +23,8 @@ class PdfSplitActivity : BaseActivity<ActivityPdfSplitBinding>(), PdfView {
override
fun
initView
()
{
override
fun
initView
()
{
pdfPresenter
=
PdfPresenter
(
this
,
this
)
pdfPresenter
=
PdfPresenter
(
this
,
this
)
path
=
intent
.
extras
?.
getString
(
"path"
,
""
)
?:
""
path
=
intent
.
extras
?.
getString
(
"path"
,
""
)
?:
""
pwd
=
intent
.
extras
?.
getString
(
"pwd"
,
""
)
?:
""
pdfPresenter
.
password
=
pwd
initAdapter
()
initAdapter
()
...
@@ -43,7 +47,9 @@ class PdfSplitActivity : BaseActivity<ActivityPdfSplitBinding>(), PdfView {
...
@@ -43,7 +47,9 @@ class PdfSplitActivity : BaseActivity<ActivityPdfSplitBinding>(), PdfView {
val
splitIndex
=
pdfPagerAdapter
.
items
.
filter
{
it
.
isSelect
}.
map
{
it
.
pageIndex
}
val
splitIndex
=
pdfPagerAdapter
.
items
.
filter
{
it
.
isSelect
}.
map
{
it
.
pageIndex
}
showDocumentRenameDialog
{
newName
->
showDocumentRenameDialog
{
newName
->
startActivity
(
Intent
(
this
,
PdfLoadingActivity
::
class
.
java
).
apply
{
startActivity
(
Intent
(
this
,
PdfLoadingActivity
::
class
.
java
).
apply
{
putExtra
(
"doWhat"
,
ConstObject
.
DO_SPLIT_PDF
)
putExtra
(
"srcPath"
,
path
)
putExtra
(
"srcPath"
,
path
)
putExtra
(
"pwd"
,
pwd
)
putExtra
(
"newPath"
,
pdfPresenter
.
createNewPdfPath
(
newName
))
putExtra
(
"newPath"
,
pdfPresenter
.
createNewPdfPath
(
newName
))
putExtra
(
"splitIndex"
,
splitIndex
.
joinToString
(
separator
=
","
))
putExtra
(
"splitIndex"
,
splitIndex
.
joinToString
(
separator
=
","
))
})
})
...
@@ -53,7 +59,8 @@ class PdfSplitActivity : BaseActivity<ActivityPdfSplitBinding>(), PdfView {
...
@@ -53,7 +59,8 @@ class PdfSplitActivity : BaseActivity<ActivityPdfSplitBinding>(), PdfView {
}
}
private
fun
initAdapter
()
{
private
fun
initAdapter
()
{
pdfPagerAdapter
=
PdfPagerAdapter
(
path
,
null
,
R
.
layout
.
item_pdf_pager_split
)
pdfPagerAdapter
=
PdfPagerAdapter
(
path
,
null
,
R
.
layout
.
item_pdf_pager_split
)
pdfPagerAdapter
.
mPassword
=
pwd
pdfPagerAdapter
.
selectAction
=
{
enable
,
allSelect
->
pdfPagerAdapter
.
selectAction
=
{
enable
,
allSelect
->
binding
.
tvBtnSplit
.
isEnabled
=
enable
binding
.
tvBtnSplit
.
isEnabled
=
enable
binding
.
ivSelector
.
isSelected
=
allSelect
binding
.
ivSelector
.
isSelected
=
allSelect
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/BookmarkFragment.kt
0 → 100644
View file @
64faa5bc
package
com.base.pdfviewerscannerwhite.ui.main
import
androidx.core.content.ContextCompat
import
androidx.fragment.app.Fragment
import
androidx.viewpager2.adapter.FragmentStateAdapter
import
androidx.viewpager2.widget.ViewPager2
import
com.angcyo.tablayout.DslTabIndicator
import
com.angcyo.tablayout.delegate2.ViewPager2Delegate
import
com.base.pdfviewerscannerwhite.R
import
com.base.pdfviewerscannerwhite.bean.DocumentBean
import
com.base.pdfviewerscannerwhite.databinding.FragmentBookmarkBinding
import
com.base.pdfviewerscannerwhite.helper.BaseFragment
class
BookmarkFragment
:
BaseFragment
<
FragmentBookmarkBinding
>()
{
override
val
binding
:
FragmentBookmarkBinding
by
lazy
{
FragmentBookmarkBinding
.
inflate
(
layoutInflater
)
}
private
val
pdfPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
(
DocumentBean
.
TYPE_PDF
)
}
private
val
wordPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
(
DocumentBean
.
TYPE_WORD
)
}
private
val
excelPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
()
}
private
val
pptPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
()
}
private
val
fragments
by
lazy
{
mutableListOf
(
pdfPage
,
wordPage
,
excelPage
,
pptPage
)
}
override
fun
setView
()
{
initPageViewer
()
initTabLayout
()
}
private
fun
initPageViewer
()
{
binding
.
viewPager2
.
run
{
isUserInputEnabled
=
true
adapter
=
object
:
FragmentStateAdapter
(
this
@BookmarkFragment
)
{
override
fun
getItemCount
():
Int
{
return
fragments
.
size
}
override
fun
createFragment
(
position
:
Int
):
Fragment
{
return
fragments
[
position
]
}
}
}
binding
.
viewPager2
.
registerOnPageChangeCallback
(
object
:
ViewPager2
.
OnPageChangeCallback
()
{
override
fun
onPageScrolled
(
position
:
Int
,
positionOffset
:
Float
,
positionOffsetPixels
:
Int
)
{
super
.
onPageScrolled
(
position
,
positionOffset
,
positionOffsetPixels
)
if
(
position
==
3
&&
positionOffset
>
0
)
{
binding
.
viewPager2
.
setCurrentItem
(
position
,
false
)
}
}
override
fun
onPageSelected
(
position
:
Int
)
{
}
})
}
private
fun
initTabLayout
()
{
val
colorPdf
=
ContextCompat
.
getColor
(
requireContext
(),
R
.
color
.
color_f02f2b
)
val
colorWord
=
ContextCompat
.
getColor
(
requireContext
(),
R
.
color
.
color_0592ee
)
val
colorExcel
=
ContextCompat
.
getColor
(
requireContext
(),
R
.
color
.
color_149b55
)
val
colorPpt
=
ContextCompat
.
getColor
(
requireContext
(),
R
.
color
.
color_ffa127
)
binding
.
tabLayoutDocument
.
apply
{
tabIndicator
.
indicatorWidth
=
this
.
resources
.
getDimensionPixelOffset
(
R
.
dimen
.
dp_50
)
tabIndicator
.
indicatorHeight
=
this
.
resources
.
getDimensionPixelOffset
(
R
.
dimen
.
dp_4
)
tabIndicator
.
indicatorStyle
=
DslTabIndicator
.
INDICATOR_STYLE_BOTTOM
configTabLayoutConfig
{
onSelectIndexChange
=
{
fromIndex
,
selectIndexList
,
reselect
,
fromUser
->
val
toIndex
=
selectIndexList
.
first
()
when
(
toIndex
)
{
0
->
{
tabSelectColor
=
colorPdf
tabIndicator
.
indicatorColor
=
colorPdf
binding
.
viewPager2
.
currentItem
=
0
}
1
->
{
tabSelectColor
=
colorWord
tabIndicator
.
indicatorColor
=
colorWord
binding
.
viewPager2
.
currentItem
=
1
}
2
->
{
tabSelectColor
=
colorExcel
tabIndicator
.
indicatorColor
=
colorExcel
binding
.
viewPager2
.
currentItem
=
2
}
3
->
{
tabSelectColor
=
colorPpt
tabIndicator
.
indicatorColor
=
colorPpt
binding
.
viewPager2
.
currentItem
=
3
}
}
dslSelector
.
updateStyle
()
}
}
}
ViewPager2Delegate
.
install
(
binding
.
viewPager2
,
binding
.
tabLayoutDocument
)
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/DocumentPageFragment.kt
0 → 100644
View file @
64faa5bc
package
com.base.pdfviewerscannerwhite.ui.main
import
android.annotation.SuppressLint
import
android.app.Activity
import
android.content.Intent
import
androidx.core.view.isVisible
import
androidx.lifecycle.lifecycleScope
import
com.base.pdfviewerscannerwhite.bean.ConstObject
import
com.base.pdfviewerscannerwhite.bean.DocumentBean
import
com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_EXCEL
import
com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_PDF
import
com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_PPT
import
com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_WORD
import
com.base.pdfviewerscannerwhite.databinding.FragmentDocumentPageBinding
import
com.base.pdfviewerscannerwhite.helper.BaseFragment
import
com.base.pdfviewerscannerwhite.ui.adapter.DocumentAdapter
import
com.base.pdfviewerscannerwhite.ui.document.excel.ExcelActivity
import
com.base.pdfviewerscannerwhite.ui.document.pdf.PdfActivity
import
com.base.pdfviewerscannerwhite.ui.document.pdf.PdfSelectActivity
import
com.base.pdfviewerscannerwhite.ui.document.pdf.PdfSplitActivity
import
com.base.pdfviewerscannerwhite.ui.document.ppt.PptActivity
import
com.base.pdfviewerscannerwhite.ui.document.word.WordActivity
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentHomeMoreDialog
import
com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfHomeMoreDialog
import
com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfPwdDialog
import
com.base.pdfviewerscannerwhite.utils.LogEx
import
com.base.pdfviewerscannerwhite.utils.PermissionUtils.checkStorePermission
import
java.io.File
import
java.util.Locale
class
DocumentPageFragment
()
:
BaseFragment
<
FragmentDocumentPageBinding
>(),
DocumentView
{
private
val
TAG
=
"DocumentFragment"
var
type
=
TYPE_PDF
private
var
documentList
:
ArrayList
<
DocumentBean
>
=
arrayListOf
()
lateinit
var
adapter
:
DocumentAdapter
lateinit
var
documentPresenter
:
DocumentPresenter
constructor
(
type
:
String
)
:
this
()
{
this
.
type
=
type
}
override
val
binding
:
FragmentDocumentPageBinding
by
lazy
{
FragmentDocumentPageBinding
.
inflate
(
layoutInflater
)
}
override
fun
setView
()
{
documentPresenter
=
DocumentPresenter
(
requireContext
(),
this
,
type
,
lifecycleScope
)
initAdapter
()
}
override
fun
onResume
()
{
super
.
onResume
()
initData
()
}
fun
initData
()
{
if
(
requireContext
().
checkStorePermission
())
{
documentPresenter
.
initData
()
}
}
override
fun
refreshDocumentRv
(
documentList
:
List
<
DocumentBean
>)
{
binding
.
llEmpty
.
isVisible
=
documentList
.
isEmpty
()
this
.
documentList
.
clear
()
this
.
documentList
.
addAll
(
documentList
)
adapter
.
submitList
(
documentList
)
}
private
fun
initAdapter
()
{
adapter
=
DocumentAdapter
()
adapter
.
bookmarkAction
=
{
addRemove
,
path
->
documentPresenter
.
saveBookmarkChange
(
addRemove
,
path
)
}
adapter
.
itemClick
=
{
item
->
requireActivity
().
jumpDocument
(
item
)
}
adapter
.
moreAction
=
{
item
->
documentMoreAction
.
invoke
(
item
)
}
binding
.
rv
.
adapter
=
adapter
}
var
documentMoreAction
:
(
item
:
DocumentBean
)
->
Unit
=
{
item
->
val
mainActivity
=
(
requireActivity
()
as
MainActivity
)
if
(
item
.
type
==
TYPE_PDF
)
{
requireContext
().
showPdfHomeMoreDialog
(
item
,
adapter
,
this
,
mainActivity
)
}
if
(
item
.
type
==
TYPE_WORD
||
item
.
type
==
TYPE_EXCEL
||
item
.
type
==
TYPE_PPT
)
{
requireContext
().
showDocumentHomeMoreDialog
(
item
,
this
,
mainActivity
)
}
}
override
fun
splitPdf
(
path
:
String
,
pwd
:
String
?)
{
startActivity
(
Intent
(
requireContext
(),
PdfSplitActivity
::
class
.
java
).
apply
{
putExtra
(
"path"
,
path
)
putExtra
(
"pwd"
,
pwd
)
})
}
override
fun
mergePdf
(
path
:
String
)
{
startActivity
(
Intent
(
requireContext
(),
PdfSelectActivity
::
class
.
java
).
apply
{
putExtra
(
"doWhat"
,
ConstObject
.
DO_MERGE_PDF
)
})
}
override
fun
deleteDocument
(
item
:
DocumentBean
)
{
val
flag
=
documentList
.
removeIf
{
it
.
path
==
item
.
path
}
LogEx
.
logDebug
(
TAG
,
"deleteDocument $item.path flag=$flag"
)
adapter
.
submitList
(
documentList
)
binding
.
llEmpty
.
isVisible
=
adapter
.
items
.
isEmpty
()
}
fun
setRecentList
()
{
if
(
isVisible
)
{
val
recentList
=
documentList
.
filter
{
(
System
.
currentTimeMillis
()
-
File
(
it
.
path
).
lastModified
())
<
300L
*
24
*
60
*
60
*
1000
}
binding
.
llEmpty
.
isVisible
=
recentList
.
isEmpty
()
adapter
.
submitList
(
recentList
)
}
}
fun
setAllList
()
{
if
(
isVisible
)
{
adapter
.
submitList
(
documentList
)
binding
.
llEmpty
.
isVisible
=
documentList
.
isEmpty
()
}
}
fun
setBookmarkList
()
{
if
(
isVisible
)
{
val
bookmarkList
=
documentList
.
filter
{
it
.
isBookmarked
}
binding
.
llEmpty
.
isVisible
=
bookmarkList
.
isEmpty
()
adapter
.
submitList
(
bookmarkList
)
}
}
@SuppressLint
(
"NotifyDataSetChanged"
)
fun
changeSelectUi
(
select
:
Boolean
)
{
if
(
isVisible
)
{
adapter
.
items
.
forEach
{
if
(
select
)
{
it
.
uiType
=
1
}
else
{
it
.
isSelect
=
false
it
.
uiType
=
0
}
}
adapter
.
notifyDataSetChanged
()
}
}
@SuppressLint
(
"NotifyDataSetChanged"
)
fun
changItemSelect
(
select
:
Boolean
)
{
adapter
.
items
.
forEach
{
it
.
isSelect
=
select
}
adapter
.
notifyDataSetChanged
()
}
fun
getSelectItems
():
List
<
DocumentBean
>
{
return
adapter
.
items
.
filter
{
it
.
isSelect
}
}
fun
removeList
(
list
:
List
<
DocumentBean
>)
{
list
.
forEach
{
adapter
.
remove
(
it
)
}
}
fun
getSearchItems
(
search
:
String
):
List
<
DocumentBean
>
{
if
(
isVisible
)
{
return
adapter
.
items
.
filter
{
File
(
it
.
path
).
name
.
lowercase
(
Locale
.
ENGLISH
).
contains
(
search
.
lowercase
(
Locale
.
ENGLISH
))
}
}
return
listOf
()
}
@SuppressLint
(
"NotifyDataSetChanged"
)
fun
changeHomeUI
()
{
if
(
isVisible
)
{
adapter
.
items
.
map
{
it
.
uiType
==
0
}
adapter
.
notifyDataSetChanged
()
}
}
companion
object
{
fun
Activity
.
jumpDocument
(
item
:
DocumentBean
)
{
if
(
item
.
type
==
TYPE_PDF
)
{
if
(
item
.
state
==
0
)
{
startActivity
(
Intent
(
this
,
PdfActivity
::
class
.
java
).
apply
{
putExtra
(
"path"
,
item
.
path
)
})
}
if
(
item
.
state
==
1
)
{
showPdfPwdDialog
(
state
=
item
.
state
,
path
=
item
.
path
,
isCheckPwd
=
true
,
verificationAction
=
{
pwd
->
startActivity
(
Intent
(
this
,
PdfActivity
::
class
.
java
).
apply
{
putExtra
(
"path"
,
item
.
path
)
putExtra
(
"pwd"
,
pwd
)
})
})
}
}
if
(
item
.
type
==
TYPE_WORD
)
{
WordActivity
.
wordDocumentBean
=
item
WordActivity
.
launchDocViewer
(
this
,
3
,
item
.
path
,
-
1
,
100
)
}
if
(
item
.
type
==
TYPE_EXCEL
)
{
ExcelActivity
.
excelDocumentBean
=
item
ExcelActivity
.
launchDocViewer
(
this
,
3
,
item
.
path
,
-
1
,
100
)
}
if
(
item
.
type
==
TYPE_PPT
)
{
PptActivity
.
pptDocumentBean
=
item
PptActivity
.
launchDocViewer
(
this
,
3
,
item
.
path
,
-
1
,
100
)
}
}
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/DocumentView.kt
View file @
64faa5bc
...
@@ -7,7 +7,7 @@ interface DocumentView {
...
@@ -7,7 +7,7 @@ interface DocumentView {
fun
refreshDocumentRv
(
documentList
:
List
<
DocumentBean
>)
=
Unit
fun
refreshDocumentRv
(
documentList
:
List
<
DocumentBean
>)
=
Unit
fun
splitPdf
(
path
:
String
)
=
Unit
fun
splitPdf
(
path
:
String
,
pwd
:
String
?
=
null
)
=
Unit
fun
deleteDocument
(
item
:
DocumentBean
)
=
Unit
fun
deleteDocument
(
item
:
DocumentBean
)
=
Unit
fun
mergePdf
(
path
:
String
)
=
Unit
fun
mergePdf
(
path
:
String
)
=
Unit
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/MainActivity.kt
View file @
64faa5bc
...
@@ -16,10 +16,9 @@ import com.base.pdfviewerscannerwhite.BuildConfig
...
@@ -16,10 +16,9 @@ import com.base.pdfviewerscannerwhite.BuildConfig
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.ActivityMainBinding
import
com.base.pdfviewerscannerwhite.databinding.ActivityMainBinding
import
com.base.pdfviewerscannerwhite.databinding.ItemDocumentBinding
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
import
com.base.pdfviewerscannerwhite.ui.adapter.DocumentAdapter
import
com.base.pdfviewerscannerwhite.ui.adapter.DocumentAdapter
import
com.base.pdfviewerscannerwhite.ui.main.DocumentFragment.Companion.jumpDocument
import
com.base.pdfviewerscannerwhite.ui.main.Document
Page
Fragment.Companion.jumpDocument
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentRenameDialog
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentRenameDialog
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showStoragePermission
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showStoragePermission
...
@@ -32,7 +31,6 @@ import com.base.pdfviewerscannerwhite.utils.LogEx
...
@@ -32,7 +31,6 @@ import com.base.pdfviewerscannerwhite.utils.LogEx
import
com.base.pdfviewerscannerwhite.utils.PermissionUtils.checkStorePermission
import
com.base.pdfviewerscannerwhite.utils.PermissionUtils.checkStorePermission
import
com.base.pdfviewerscannerwhite.utils.ToastUtils.toast
import
com.base.pdfviewerscannerwhite.utils.ToastUtils.toast
import
com.base.pdfviewerscannerwhite.utils.updateMediaStore
import
com.base.pdfviewerscannerwhite.utils.updateMediaStore
import
com.cherry.lib.doc.office.fc.ss.usermodel.charts.AxisPosition
@SuppressLint
(
"SetTextI18n"
)
@SuppressLint
(
"SetTextI18n"
)
class
MainActivity
:
BaseActivity
<
ActivityMainBinding
>(),
MainView
{
class
MainActivity
:
BaseActivity
<
ActivityMainBinding
>(),
MainView
{
...
@@ -43,17 +41,17 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
...
@@ -43,17 +41,17 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
override
val
binding
:
ActivityMainBinding
by
lazy
{
override
val
binding
:
ActivityMainBinding
by
lazy
{
ActivityMainBinding
.
inflate
(
layoutInflater
)
ActivityMainBinding
.
inflate
(
layoutInflater
)
}
}
private
val
pdfFragment
:
DocumentFragment
by
lazy
{
private
val
pdfFragment
:
Document
Page
Fragment
by
lazy
{
DocumentFragment
(
DocumentBean
.
TYPE_PDF
)
Document
Page
Fragment
(
DocumentBean
.
TYPE_PDF
)
}
}
private
val
wordFragment
:
DocumentFragment
by
lazy
{
private
val
wordFragment
:
Document
Page
Fragment
by
lazy
{
DocumentFragment
(
DocumentBean
.
TYPE_WORD
)
Document
Page
Fragment
(
DocumentBean
.
TYPE_WORD
)
}
}
private
val
excelFragment
:
DocumentFragment
by
lazy
{
private
val
excelFragment
:
Document
Page
Fragment
by
lazy
{
DocumentFragment
(
DocumentBean
.
TYPE_EXCEL
)
Document
Page
Fragment
(
DocumentBean
.
TYPE_EXCEL
)
}
}
private
val
pptFragment
:
DocumentFragment
by
lazy
{
private
val
pptFragment
:
Document
Page
Fragment
by
lazy
{
DocumentFragment
(
DocumentBean
.
TYPE_PPT
)
Document
Page
Fragment
(
DocumentBean
.
TYPE_PPT
)
}
}
private
val
toolFragment
:
ToolFragment
by
lazy
{
private
val
toolFragment
:
ToolFragment
by
lazy
{
ToolFragment
()
ToolFragment
()
...
@@ -110,8 +108,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
...
@@ -110,8 +108,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
searchAdapter
=
DocumentAdapter
()
searchAdapter
=
DocumentAdapter
()
binding
.
rvSearch
.
adapter
=
searchAdapter
binding
.
rvSearch
.
adapter
=
searchAdapter
searchAdapter
.
moreAction
=
{
item
->
searchAdapter
.
moreAction
=
{
item
->
if
(
currentFragment
is
DocumentFragment
)
{
if
(
currentFragment
is
Document
Page
Fragment
)
{
(
currentFragment
as
DocumentFragment
).
documentMoreAction
.
invoke
(
item
)
(
currentFragment
as
Document
Page
Fragment
).
documentMoreAction
.
invoke
(
item
)
}
}
}
}
searchAdapter
.
itemClick
=
{
searchAdapter
.
itemClick
=
{
...
@@ -236,8 +234,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
...
@@ -236,8 +234,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
}
}
binding
.
llDelete
.
setOnClickListener
{
binding
.
llDelete
.
setOnClickListener
{
if
(
currentFragment
is
DocumentFragment
)
{
if
(
currentFragment
is
Document
Page
Fragment
)
{
val
fragment
=
(
currentFragment
as
DocumentFragment
)
val
fragment
=
(
currentFragment
as
Document
Page
Fragment
)
showDeleteDialog
{
showDeleteDialog
{
val
list
=
fragment
.
getSelectItems
()
val
list
=
fragment
.
getSelectItems
()
mainPresenter
.
deleteList
(
list
)
mainPresenter
.
deleteList
(
list
)
...
@@ -273,8 +271,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
...
@@ -273,8 +271,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
private
fun
searchDocument
()
{
private
fun
searchDocument
()
{
if
(
binding
.
editSearch
.
text
.
isNotEmpty
())
{
if
(
binding
.
editSearch
.
text
.
isNotEmpty
())
{
val
search
=
binding
.
editSearch
.
text
.
toString
()
val
search
=
binding
.
editSearch
.
text
.
toString
()
if
(
currentFragment
is
DocumentFragment
)
{
if
(
currentFragment
is
Document
Page
Fragment
)
{
val
item
=
(
currentFragment
as
DocumentFragment
).
getSearchItems
(
search
)
val
item
=
(
currentFragment
as
Document
Page
Fragment
).
getSearchItems
(
search
)
if
(
item
.
isNotEmpty
())
{
if
(
item
.
isNotEmpty
())
{
item
.
map
{
it
.
uiType
=
4
}
item
.
map
{
it
.
uiType
=
4
}
searchAdapter
.
submitList
(
item
)
searchAdapter
.
submitList
(
item
)
...
@@ -287,8 +285,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
...
@@ -287,8 +285,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
private
fun
shareDocument
()
{
private
fun
shareDocument
()
{
if
(
currentFragment
is
DocumentFragment
)
{
if
(
currentFragment
is
Document
Page
Fragment
)
{
val
documentFragment
=
(
currentFragment
as
DocumentFragment
)
val
documentFragment
=
(
currentFragment
as
Document
Page
Fragment
)
val
items
=
documentFragment
.
getSelectItems
()
val
items
=
documentFragment
.
getSelectItems
()
if
(
items
.
isNotEmpty
())
{
if
(
items
.
isNotEmpty
())
{
shareMutDocuments
(
documentFragment
.
type
,
items
.
map
{
it
.
uri
}
as
ArrayList
<
Uri
>)
shareMutDocuments
(
documentFragment
.
type
,
items
.
map
{
it
.
uri
}
as
ArrayList
<
Uri
>)
...
@@ -298,8 +296,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
...
@@ -298,8 +296,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
}
}
private
fun
changePageSelect
(
select
:
Boolean
)
{
private
fun
changePageSelect
(
select
:
Boolean
)
{
if
(
currentFragment
is
DocumentFragment
)
{
if
(
currentFragment
is
Document
Page
Fragment
)
{
(
currentFragment
as
DocumentFragment
).
changItemSelect
(
select
)
(
currentFragment
as
Document
Page
Fragment
).
changItemSelect
(
select
)
}
}
}
}
...
@@ -393,8 +391,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
...
@@ -393,8 +391,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
binding
.
llTool
.
visibility
=
View
.
VISIBLE
binding
.
llTool
.
visibility
=
View
.
VISIBLE
binding
.
ivXuanze
.
visibility
=
View
.
VISIBLE
binding
.
ivXuanze
.
visibility
=
View
.
VISIBLE
if
(
currentFragment
is
DocumentFragment
)
{
if
(
currentFragment
is
Document
Page
Fragment
)
{
(
currentFragment
as
DocumentFragment
).
changeSelectUi
(
false
)
(
currentFragment
as
Document
Page
Fragment
).
changeSelectUi
(
false
)
}
}
}
}
...
@@ -412,8 +410,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
...
@@ -412,8 +410,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
changeTabSelect
(
binding
.
llDocument
)
changeTabSelect
(
binding
.
llDocument
)
if
(
currentFragment
is
DocumentFragment
)
{
if
(
currentFragment
is
Document
Page
Fragment
)
{
(
currentFragment
as
DocumentFragment
).
setAllList
()
(
currentFragment
as
Document
Page
Fragment
).
setAllList
()
}
}
}
}
...
@@ -431,8 +429,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
...
@@ -431,8 +429,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
changeTabSelect
(
binding
.
llRecent
)
changeTabSelect
(
binding
.
llRecent
)
if
(
currentFragment
is
DocumentFragment
)
{
if
(
currentFragment
is
Document
Page
Fragment
)
{
(
currentFragment
as
DocumentFragment
).
setRecentList
()
(
currentFragment
as
Document
Page
Fragment
).
setRecentList
()
}
}
}
}
...
@@ -447,8 +445,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
...
@@ -447,8 +445,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
binding
.
ivScan
.
visibility
=
View
.
VISIBLE
binding
.
ivScan
.
visibility
=
View
.
VISIBLE
binding
.
ivScan
.
visibility
=
View
.
VISIBLE
binding
.
ivScan
.
visibility
=
View
.
VISIBLE
changeTabSelect
(
binding
.
llBookmark
)
changeTabSelect
(
binding
.
llBookmark
)
if
(
currentFragment
is
DocumentFragment
)
{
if
(
currentFragment
is
Document
Page
Fragment
)
{
(
currentFragment
as
DocumentFragment
).
setBookmarkList
()
(
currentFragment
as
Document
Page
Fragment
).
setBookmarkList
()
}
}
}
}
...
@@ -491,8 +489,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
...
@@ -491,8 +489,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
binding
.
viewPager2
.
isUserInputEnabled
=
false
binding
.
viewPager2
.
isUserInputEnabled
=
false
binding
.
vTabLayoutPlace
.
visibility
=
View
.
VISIBLE
binding
.
vTabLayoutPlace
.
visibility
=
View
.
VISIBLE
if
(
currentFragment
is
DocumentFragment
)
{
if
(
currentFragment
is
Document
Page
Fragment
)
{
(
currentFragment
as
DocumentFragment
).
changeSelectUi
(
true
)
(
currentFragment
as
Document
Page
Fragment
).
changeSelectUi
(
true
)
}
}
}
}
...
@@ -528,8 +526,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
...
@@ -528,8 +526,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), MainView {
binding
.
ivPaixu
.
visibility
=
View
.
VISIBLE
binding
.
ivPaixu
.
visibility
=
View
.
VISIBLE
binding
.
ivXuanze
.
visibility
=
View
.
VISIBLE
binding
.
ivXuanze
.
visibility
=
View
.
VISIBLE
if
(
currentFragment
is
DocumentFragment
)
{
if
(
currentFragment
is
Document
Page
Fragment
)
{
(
currentFragment
as
DocumentFragment
).
changeHomeUI
()
(
currentFragment
as
Document
Page
Fragment
).
changeHomeUI
()
}
}
}
}
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/MainActivity2.kt
0 → 100644
View file @
64faa5bc
package
com.base.pdfviewerscannerwhite.ui.main
import
android.view.View
import
androidx.core.view.isNotEmpty
import
androidx.fragment.app.Fragment
import
androidx.lifecycle.Lifecycle
import
com.base.pdfviewerscannerwhite.R
import
com.base.pdfviewerscannerwhite.databinding.ActivityMain2Binding
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
class
MainActivity2
:
BaseActivity
<
ActivityMain2Binding
>()
{
override
val
binding
:
ActivityMain2Binding
by
lazy
{
ActivityMain2Binding
.
inflate
(
layoutInflater
)
}
private
val
documentFragment
:
DocumentFragment
by
lazy
{
DocumentFragment
()
}
private
val
recentFragment
:
RecentFragment
by
lazy
{
RecentFragment
()
}
private
val
bookmarkFragment
:
BookmarkFragment
by
lazy
{
BookmarkFragment
()
}
private
val
toolFragment
:
ToolFragment
by
lazy
{
ToolFragment
()
}
private
var
currentFragment
:
Fragment
=
documentFragment
override
fun
initView
()
{
}
var
isDocumentAdd
:
Boolean
=
false
var
isRecentAdd
:
Boolean
=
false
var
isBookmarkAdd
:
Boolean
=
false
var
isToolAdd
:
Boolean
=
false
override
fun
initListener
()
{
super
.
initListener
()
binding
.
llDocument
.
setOnClickListener
{
changeTabSelect
(
it
)
supportFragmentManager
.
beginTransaction
().
apply
{
if
(!
isDocumentAdd
)
{
add
(
R
.
id
.
fl_container
,
documentFragment
)
}
hide
(
bookmarkFragment
)
hide
(
toolFragment
)
hide
(
recentFragment
)
show
(
documentFragment
)
commit
()
}
currentFragment
=
documentFragment
isDocumentAdd
=
true
}
binding
.
llDocument
.
callOnClick
()
binding
.
llRecent
.
setOnClickListener
{
changeTabSelect
(
it
)
supportFragmentManager
.
beginTransaction
().
apply
{
if
(!
isRecentAdd
)
{
add
(
R
.
id
.
fl_container
,
recentFragment
)
}
hide
(
documentFragment
)
hide
(
bookmarkFragment
)
hide
(
toolFragment
)
show
(
recentFragment
)
commit
()
}
currentFragment
=
recentFragment
isRecentAdd
=
true
}
binding
.
llBookmark
.
setOnClickListener
{
changeTabSelect
(
it
)
supportFragmentManager
.
beginTransaction
().
apply
{
if
(!
isBookmarkAdd
)
{
add
(
R
.
id
.
fl_container
,
bookmarkFragment
)
}
hide
(
documentFragment
)
hide
(
recentFragment
)
hide
(
toolFragment
)
show
(
bookmarkFragment
)
commit
()
}
currentFragment
=
bookmarkFragment
isBookmarkAdd
=
true
}
binding
.
llTool
.
setOnClickListener
{
changeTabSelect
(
it
)
supportFragmentManager
.
beginTransaction
().
apply
{
if
(!
isToolAdd
)
{
add
(
R
.
id
.
fl_container
,
toolFragment
)
}
hide
(
documentFragment
)
hide
(
recentFragment
)
hide
(
bookmarkFragment
)
show
(
toolFragment
)
commit
()
}
currentFragment
=
toolFragment
isToolAdd
=
true
}
}
private
fun
changeTabSelect
(
selectView
:
View
)
{
binding
.
llDocument
.
isSelected
=
selectView
==
binding
.
llDocument
binding
.
llRecent
.
isSelected
=
selectView
==
binding
.
llRecent
binding
.
llBookmark
.
isSelected
=
selectView
==
binding
.
llBookmark
binding
.
llTool
.
isSelected
=
selectView
==
binding
.
llTool
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/RecentFragment.kt
0 → 100644
View file @
64faa5bc
package
com.base.pdfviewerscannerwhite.ui.main
import
android.os.Bundle
import
androidx.core.content.ContextCompat
import
androidx.fragment.app.Fragment
import
androidx.viewpager2.adapter.FragmentStateAdapter
import
androidx.viewpager2.widget.ViewPager2
import
com.angcyo.tablayout.DslTabIndicator
import
com.angcyo.tablayout.delegate2.ViewPager2Delegate
import
com.base.pdfviewerscannerwhite.R
import
com.base.pdfviewerscannerwhite.bean.DocumentBean
import
com.base.pdfviewerscannerwhite.databinding.FragmentRecentBinding
import
com.base.pdfviewerscannerwhite.helper.BaseFragment
class
RecentFragment
:
BaseFragment
<
FragmentRecentBinding
>()
{
override
val
binding
:
FragmentRecentBinding
by
lazy
{
FragmentRecentBinding
.
inflate
(
layoutInflater
)
}
private
val
pdfPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
(
DocumentBean
.
TYPE_PDF
)
}
private
val
wordPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
(
DocumentBean
.
TYPE_WORD
)
}
private
val
excelPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
()
}
private
val
pptPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
()
}
private
val
fragments
by
lazy
{
mutableListOf
(
pdfPage
,
wordPage
,
excelPage
,
pptPage
)
}
override
fun
setView
()
{
initPageViewer
()
initTabLayout
()
}
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
}
private
fun
initPageViewer
()
{
binding
.
viewPager2
.
run
{
isUserInputEnabled
=
true
adapter
=
object
:
FragmentStateAdapter
(
this
@RecentFragment
)
{
override
fun
getItemCount
():
Int
{
return
fragments
.
size
}
override
fun
createFragment
(
position
:
Int
):
Fragment
{
return
fragments
[
position
]
}
}
}
binding
.
viewPager2
.
registerOnPageChangeCallback
(
object
:
ViewPager2
.
OnPageChangeCallback
()
{
override
fun
onPageScrolled
(
position
:
Int
,
positionOffset
:
Float
,
positionOffsetPixels
:
Int
)
{
super
.
onPageScrolled
(
position
,
positionOffset
,
positionOffsetPixels
)
if
(
position
==
3
&&
positionOffset
>
0
)
{
binding
.
viewPager2
.
setCurrentItem
(
position
,
false
)
}
}
override
fun
onPageSelected
(
position
:
Int
)
{
}
})
}
private
fun
initTabLayout
()
{
val
colorPdf
=
ContextCompat
.
getColor
(
requireContext
(),
R
.
color
.
color_f02f2b
)
val
colorWord
=
ContextCompat
.
getColor
(
requireContext
(),
R
.
color
.
color_0592ee
)
val
colorExcel
=
ContextCompat
.
getColor
(
requireContext
(),
R
.
color
.
color_149b55
)
val
colorPpt
=
ContextCompat
.
getColor
(
requireContext
(),
R
.
color
.
color_ffa127
)
binding
.
tabLayoutDocument
.
apply
{
tabIndicator
.
indicatorWidth
=
this
.
resources
.
getDimensionPixelOffset
(
R
.
dimen
.
dp_50
)
tabIndicator
.
indicatorHeight
=
this
.
resources
.
getDimensionPixelOffset
(
R
.
dimen
.
dp_4
)
tabIndicator
.
indicatorStyle
=
DslTabIndicator
.
INDICATOR_STYLE_BOTTOM
configTabLayoutConfig
{
onSelectIndexChange
=
{
fromIndex
,
selectIndexList
,
reselect
,
fromUser
->
val
toIndex
=
selectIndexList
.
first
()
when
(
toIndex
)
{
0
->
{
tabSelectColor
=
colorPdf
tabIndicator
.
indicatorColor
=
colorPdf
binding
.
viewPager2
.
currentItem
=
0
}
1
->
{
tabSelectColor
=
colorWord
tabIndicator
.
indicatorColor
=
colorWord
binding
.
viewPager2
.
currentItem
=
1
}
2
->
{
tabSelectColor
=
colorExcel
tabIndicator
.
indicatorColor
=
colorExcel
binding
.
viewPager2
.
currentItem
=
2
}
3
->
{
tabSelectColor
=
colorPpt
tabIndicator
.
indicatorColor
=
colorPpt
binding
.
viewPager2
.
currentItem
=
3
}
}
dslSelector
.
updateStyle
()
}
}
}
ViewPager2Delegate
.
install
(
binding
.
viewPager2
,
binding
.
tabLayoutDocument
)
}
companion
object
{
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfviewerscannerwhite/ui/splash/SplashActivity.kt
View file @
64faa5bc
...
@@ -11,6 +11,7 @@ import com.base.pdfviewerscannerwhite.bean.ConstObject.ifAgreePrivacy
...
@@ -11,6 +11,7 @@ import com.base.pdfviewerscannerwhite.bean.ConstObject.ifAgreePrivacy
import
com.base.pdfviewerscannerwhite.databinding.ActivitySplashBinding
import
com.base.pdfviewerscannerwhite.databinding.ActivitySplashBinding
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
import
com.base.pdfviewerscannerwhite.ui.main.MainActivity
import
com.base.pdfviewerscannerwhite.ui.main.MainActivity
import
com.base.pdfviewerscannerwhite.ui.main.MainActivity2
import
com.base.pdfviewerscannerwhite.utils.BarUtils
import
com.base.pdfviewerscannerwhite.utils.BarUtils
import
com.base.pdfviewerscannerwhite.utils.LogEx
import
com.base.pdfviewerscannerwhite.utils.LogEx
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
...
@@ -112,7 +113,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(), SplashView {
...
@@ -112,7 +113,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(), SplashView {
LogEx
.
logDebug
(
TAG
,
"jumpNext"
)
LogEx
.
logDebug
(
TAG
,
"jumpNext"
)
binding
.
progressBar
.
progress
=
100
binding
.
progressBar
.
progress
=
100
binding
.
root
.
postDelayed
({
binding
.
root
.
postDelayed
({
startActivity
(
Intent
(
this
,
MainActivity
::
class
.
java
))
startActivity
(
Intent
(
this
,
MainActivity
2
::
class
.
java
))
finish
()
finish
()
},
200
)
},
200
)
}
}
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/view/DialogView.kt
View file @
64faa5bc
...
@@ -20,8 +20,7 @@ import com.base.pdfviewerscannerwhite.databinding.DialogDocumentMoreBinding
...
@@ -20,8 +20,7 @@ import com.base.pdfviewerscannerwhite.databinding.DialogDocumentMoreBinding
import
com.base.pdfviewerscannerwhite.databinding.DialogDocumentRenameBinding
import
com.base.pdfviewerscannerwhite.databinding.DialogDocumentRenameBinding
import
com.base.pdfviewerscannerwhite.databinding.DialogPageNumberBinding
import
com.base.pdfviewerscannerwhite.databinding.DialogPageNumberBinding
import
com.base.pdfviewerscannerwhite.databinding.DialogStoragePermissionBinding
import
com.base.pdfviewerscannerwhite.databinding.DialogStoragePermissionBinding
import
com.base.pdfviewerscannerwhite.ui.main.DocumentFragment
import
com.base.pdfviewerscannerwhite.ui.main.DocumentPageFragment
import
com.base.pdfviewerscannerwhite.ui.main.DocumentView
import
com.base.pdfviewerscannerwhite.ui.main.MainActivity
import
com.base.pdfviewerscannerwhite.ui.main.MainActivity
import
com.base.pdfviewerscannerwhite.utils.ActivityLauncher
import
com.base.pdfviewerscannerwhite.utils.ActivityLauncher
import
com.base.pdfviewerscannerwhite.utils.IntentShareUtils.documentShare
import
com.base.pdfviewerscannerwhite.utils.IntentShareUtils.documentShare
...
@@ -102,7 +101,7 @@ object DialogView {
...
@@ -102,7 +101,7 @@ object DialogView {
@SuppressLint
(
"SetTextI18n"
,
"NotifyDataSetChanged"
)
@SuppressLint
(
"SetTextI18n"
,
"NotifyDataSetChanged"
)
fun
Context
.
showDocumentHomeMoreDialog
(
fun
Context
.
showDocumentHomeMoreDialog
(
item
:
DocumentBean
,
item
:
DocumentBean
,
documentFragment
:
DocumentFragment
,
documentFragment
:
Document
Page
Fragment
,
mainActivity
:
MainActivity
,
mainActivity
:
MainActivity
,
):
BottomSheetDialog
{
):
BottomSheetDialog
{
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/view/PdfDialog.kt
View file @
64faa5bc
...
@@ -18,7 +18,7 @@ import com.base.pdfviewerscannerwhite.databinding.DialogPdfPasswordBinding
...
@@ -18,7 +18,7 @@ import com.base.pdfviewerscannerwhite.databinding.DialogPdfPasswordBinding
import
com.base.pdfviewerscannerwhite.ui.adapter.DocumentAdapter
import
com.base.pdfviewerscannerwhite.ui.adapter.DocumentAdapter
import
com.base.pdfviewerscannerwhite.ui.document.pdf.PdfBoxUtils
import
com.base.pdfviewerscannerwhite.ui.document.pdf.PdfBoxUtils
import
com.base.pdfviewerscannerwhite.ui.document.pdf.PdfView
import
com.base.pdfviewerscannerwhite.ui.document.pdf.PdfView
import
com.base.pdfviewerscannerwhite.ui.main.DocumentFragment
import
com.base.pdfviewerscannerwhite.ui.main.Document
Page
Fragment
import
com.base.pdfviewerscannerwhite.ui.main.MainActivity
import
com.base.pdfviewerscannerwhite.ui.main.MainActivity
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentDetail
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentDetail
...
@@ -40,7 +40,7 @@ object PdfDialog {
...
@@ -40,7 +40,7 @@ object PdfDialog {
fun
Context
.
showPdfHomeMoreDialog
(
fun
Context
.
showPdfHomeMoreDialog
(
item
:
DocumentBean
,
item
:
DocumentBean
,
adapter
:
DocumentAdapter
,
adapter
:
DocumentAdapter
,
documentFragment
:
DocumentFragment
,
documentFragment
:
Document
Page
Fragment
,
mainActivity
:
MainActivity
mainActivity
:
MainActivity
):
BottomSheetDialog
{
):
BottomSheetDialog
{
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
...
@@ -86,7 +86,14 @@ object PdfDialog {
...
@@ -86,7 +86,14 @@ object PdfDialog {
}
}
binding
.
llSplit
.
setOnClickListener
{
binding
.
llSplit
.
setOnClickListener
{
dialog
.
dismiss
()
dialog
.
dismiss
()
documentFragment
.
splitPdf
(
item
.
path
)
if
(
item
.
state
==
1
)
{
showPdfPwdDialog
(
state
=
item
.
state
,
path
=
item
.
path
,
firstDialog
=
dialog
,
isCheckPwd
=
true
,
verificationAction
=
{
documentFragment
.
splitPdf
(
item
.
path
,
it
)
})
}
else
{
documentFragment
.
splitPdf
(
item
.
path
)
}
}
}
binding
.
llMerge
.
setOnClickListener
{
binding
.
llMerge
.
setOnClickListener
{
dialog
.
dismiss
()
dialog
.
dismiss
()
...
@@ -97,7 +104,7 @@ object PdfDialog {
...
@@ -97,7 +104,7 @@ object PdfDialog {
showDeleteDialog
{
showDeleteDialog
{
runCatching
{
runCatching
{
val
flag
=
File
(
item
.
path
).
delete
()
val
flag
=
File
(
item
.
path
).
delete
()
if
(
flag
){
if
(
flag
)
{
documentFragment
.
deleteDocument
(
item
)
documentFragment
.
deleteDocument
(
item
)
mainActivity
.
deleteDocument
(
item
)
mainActivity
.
deleteDocument
(
item
)
}
}
...
@@ -123,7 +130,8 @@ object PdfDialog {
...
@@ -123,7 +130,8 @@ object PdfDialog {
binding
.
llLock
.
setOnClickListener
{
binding
.
llLock
.
setOnClickListener
{
showPdfPwdDialog
(
state
=
item
.
state
,
path
=
item
.
path
,
firstDialog
=
dialog
,
encryptionAction
=
{
showPdfPwdDialog
(
state
=
item
.
state
,
path
=
item
.
path
,
firstDialog
=
dialog
,
encryptionAction
=
{
dialog
.
dismiss
()
dialog
.
dismiss
()
mainActivity
?.
refreshSearchRv
()
documentFragment
.
adapter
.
notifyDataSetChanged
()
mainActivity
.
refreshSearchRv
()
})
})
}
}
dialog
.
setOnDismissListener
{
dialog
.
setOnDismissListener
{
...
@@ -188,6 +196,7 @@ object PdfDialog {
...
@@ -188,6 +196,7 @@ object PdfDialog {
isCheckPwd
:
Boolean
=
false
,
isCheckPwd
:
Boolean
=
false
,
verificationAction
:
((
pwd
:
String
)
->
Unit
)?
=
null
,
verificationAction
:
((
pwd
:
String
)
->
Unit
)?
=
null
,
encryptionAction
:
(()
->
Unit
)?
=
null
,
encryptionAction
:
(()
->
Unit
)?
=
null
,
cancelAction
:
(()
->
Unit
)?
=
null
,
)
{
)
{
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
binding
=
DialogPdfPasswordBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
val
binding
=
DialogPdfPasswordBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
...
@@ -229,6 +238,7 @@ object PdfDialog {
...
@@ -229,6 +238,7 @@ object PdfDialog {
binding
.
tvCancel
.
setOnClickListener
{
binding
.
tvCancel
.
setOnClickListener
{
dialog
.
dismiss
()
dialog
.
dismiss
()
cancelAction
?.
invoke
()
}
}
binding
.
tvConfirm
.
setOnClickListener
{
binding
.
tvConfirm
.
setOnClickListener
{
...
@@ -259,5 +269,6 @@ object PdfDialog {
...
@@ -259,5 +269,6 @@ object PdfDialog {
}
}
}
}
}
}
}
}
\ No newline at end of file
app/src/main/res/layout/activity_main.xml
View file @
64faa5bc
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
android:id=
"@+id/cl_top"
android:id=
"@+id/cl_top"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:layout_height=
"60dp"
android:visibility=
"gone"
app:layout_constraintTop_toTopOf=
"parent"
>
app:layout_constraintTop_toTopOf=
"parent"
>
<FrameLayout
<FrameLayout
...
@@ -118,6 +119,7 @@
...
@@ -118,6 +119,7 @@
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_height=
"0dp"
android:orientation=
"vertical"
android:orientation=
"vertical"
android:visibility=
"gone"
app:layout_constraintBottom_toTopOf=
"@id/ll_bottom"
app:layout_constraintBottom_toTopOf=
"@id/ll_bottom"
app:layout_constraintTop_toBottomOf=
"@id/cl_top"
>
app:layout_constraintTop_toBottomOf=
"@id/cl_top"
>
...
@@ -229,6 +231,13 @@
...
@@ -229,6 +231,13 @@
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
app:layout_constraintTop_toTopOf=
"parent"
/>
<FrameLayout
android:id=
"@+id/fl_container"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
app:layout_constraintBottom_toTopOf=
"@id/ll_bottom"
app:layout_constraintTop_toTopOf=
"parent"
/>
<androidx.constraintlayout.widget.ConstraintLayout
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/ll_bottom"
android:id=
"@+id/ll_bottom"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
...
app/src/main/res/layout/activity_main2.xml
0 → 100644
View file @
64faa5bc
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:id=
"@+id/main"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.main.MainActivity2"
>
<FrameLayout
android:id=
"@+id/fl_container"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
app:layout_constraintBottom_toTopOf=
"@id/ll_bottom"
app:layout_constraintTop_toTopOf=
"parent"
/>
<ImageView
android:id=
"@+id/iv_scan"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"15dp"
android:layout_marginBottom=
"50dp"
android:src=
"@mipmap/saoyisao"
app:layout_constraintBottom_toTopOf=
"@id/ll_bottom"
app:layout_constraintEnd_toEndOf=
"parent"
tools:ignore=
"ContentDescription"
/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/ll_bottom"
android:layout_width=
"match_parent"
android:layout_height=
"64dp"
android:orientation=
"horizontal"
app:layout_constraintBottom_toBottomOf=
"parent"
>
<LinearLayout
android:id=
"@+id/ll_document"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_marginHorizontal=
"5dp"
android:layout_weight=
"1"
android:background=
"@drawable/ripple_normal"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
android:splitMotionEvents=
"true"
app:layout_constraintEnd_toStartOf=
"@id/ll_recent"
app:layout_constraintStart_toStartOf=
"parent"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"9dp"
android:src=
"@drawable/bg_selector_document"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"2.5dp"
android:text=
"document"
android:textColor=
"@color/color_tab_selector"
android:textSize=
"11sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_recent"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_marginHorizontal=
"5dp"
android:layout_weight=
"1"
android:background=
"@drawable/ripple_normal"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
app:layout_constraintEnd_toStartOf=
"@id/ll_bookmark"
app:layout_constraintStart_toEndOf=
"@id/ll_document"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"9dp"
android:src=
"@drawable/bg_selector_recent"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"2.5dp"
android:text=
"Recent"
android:textColor=
"@color/color_tab_selector"
android:textSize=
"11sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_bookmark"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_marginHorizontal=
"5dp"
android:layout_weight=
"1"
android:background=
"@drawable/ripple_normal"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
android:splitMotionEvents=
"false"
app:layout_constraintEnd_toStartOf=
"@id/ll_tool"
app:layout_constraintStart_toEndOf=
"@id/ll_recent"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"9dp"
android:src=
"@drawable/bg_selector_bookmark"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"2.5dp"
android:text=
"Bookmark"
android:textColor=
"@color/color_tab_selector"
android:textSize=
"11sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_tool"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_marginHorizontal=
"5dp"
android:layout_weight=
"1"
android:background=
"@drawable/ripple_normal"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
android:splitMotionEvents=
"false"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toEndOf=
"@id/ll_bookmark"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"9dp"
android:src=
"@drawable/bg_selector_tool"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"2.5dp"
android:text=
"Tool"
android:textColor=
"@color/color_tab_selector"
android:textSize=
"11sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_delete"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_marginHorizontal=
"5dp"
android:layout_weight=
"1"
android:background=
"@drawable/ripple_normal"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
android:splitMotionEvents=
"false"
android:visibility=
"gone"
app:layout_constraintEnd_toStartOf=
"@id/ll_share"
app:layout_constraintStart_toStartOf=
"parent"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"9dp"
android:src=
"@mipmap/x_delete"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"2.5dp"
android:text=
"Delete"
android:textColor=
"#333333"
android:textSize=
"11sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_share"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_marginHorizontal=
"5dp"
android:layout_weight=
"1"
android:background=
"@drawable/ripple_normal"
android:clickable=
"true"
android:focusable=
"true"
android:orientation=
"vertical"
android:splitMotionEvents=
"false"
android:visibility=
"gone"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toEndOf=
"@id/ll_delete"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"9dp"
android:src=
"@mipmap/x_share"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"2.5dp"
android:text=
"Share"
android:textColor=
"#333333"
android:textSize=
"11sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_bookmark.xml
0 → 100644
View file @
64faa5bc
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.main.RecentFragment"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/cl_top"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
app:layout_constraintTop_toTopOf=
"parent"
>
<FrameLayout
android:id=
"@+id/fl_fanhui"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:padding=
"15dp"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/fanhui_b"
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
<EditText
android:id=
"@+id/edit_search"
android:layout_width=
"0dp"
android:layout_height=
"40dp"
android:layout_marginStart=
"10dp"
android:layout_marginEnd=
"20dp"
android:background=
"@drawable/bg_f8f9fe_10"
android:hint=
"Enter the file name to search for"
android:imeOptions=
"actionDone"
android:paddingHorizontal=
"18dp"
android:singleLine=
"true"
android:textColor=
"@color/black"
android:textColorHint=
"#B8B9BD"
android:textSize=
"14sp"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toStartOf=
"@id/iv_search"
app:layout_constraintStart_toEndOf=
"@id/fl_fanhui"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"Autofill,HardcodedText,RtlSymmetry,TextFields"
/>
<TextView
android:id=
"@+id/tv_tittle"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"15dp"
android:text=
"Bookmark"
android:textColor=
"@color/black"
android:textSize=
"19sp"
android:textStyle=
"bold"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:id=
"@+id/iv_paixu"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"16dp"
android:src=
"@mipmap/h_paixu"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toStartOf=
"@id/iv_xuanze"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
/>
<ImageView
android:id=
"@+id/iv_xuanze"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"16dp"
android:src=
"@mipmap/h_xuanze"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toStartOf=
"@id/iv_search"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
/>
<ImageView
android:id=
"@+id/iv_search"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"16dp"
android:src=
"@mipmap/h_sousuo"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
/>
<ImageView
android:id=
"@+id/iv_all_selector"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@drawable/bg_selector_select"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"@id/iv_search"
app:layout_constraintStart_toStartOf=
"@id/iv_search"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:id=
"@+id/ll_main_content"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:orientation=
"vertical"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/cl_top"
>
<!-- 外层FrameLayout设置背景用来限定水波纹大小-->
<FrameLayout
android:id=
"@+id/cl_tabLayout"
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:background=
"#00000000"
>
<com.angcyo.tablayout.DslTabLayout
android:id=
"@+id/tabLayout_document"
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
app:tab_badge_gravity=
"center"
app:tab_badge_offset_x=
"20dp"
app:tab_draw_indicator=
"true"
app:tab_enable_text_color=
"true"
app:tab_indicator_drawable=
"@drawable/indicator_bottom_line"
app:tab_indicator_height=
"3dp"
app:tab_item_is_equ_width=
"true"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@drawable/ripple_select"
android:clipChildren=
"false"
android:clipToPadding=
"false"
android:gravity=
"center"
android:text=
"PDF"
android:textSize=
"16sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:background=
"@drawable/ripple_select"
android:clipChildren=
"false"
android:clipToPadding=
"false"
android:gravity=
"center"
android:paddingVertical=
"5dp"
android:text=
"Word"
android:textSize=
"16sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@drawable/ripple_select"
android:clipChildren=
"false"
android:clipToPadding=
"false"
android:gravity=
"center"
android:text=
"Excel"
android:textSize=
"16sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@drawable/ripple_select"
android:clipChildren=
"false"
android:clipToPadding=
"false"
android:gravity=
"center"
android:text=
"PPT"
android:textSize=
"16sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
</com.angcyo.tablayout.DslTabLayout>
<View
android:id=
"@+id/v_tabLayout_place"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:visibility=
"gone"
/>
</FrameLayout>
<androidx.viewpager2.widget.ViewPager2
android:id=
"@+id/viewPager2"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"1"
/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_document_page.xml
0 → 100644
View file @
64faa5bc
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.main.DocumentPageFragment"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem=
"@layout/item_document"
/>
<LinearLayout
android:id=
"@+id/ll_empty"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_marginBottom=
"60dp"
android:orientation=
"vertical"
android:visibility=
"gone"
tools:ignore=
"UseCompoundDrawables,UselessParent"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/empty"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"20dp"
android:text=
"Empty"
android:textColor=
"#B1B4B9"
android:textSize=
"16sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
</FrameLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_recent.xml
0 → 100644
View file @
64faa5bc
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.main.RecentFragment"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/cl_top"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
app:layout_constraintTop_toTopOf=
"parent"
>
<FrameLayout
android:id=
"@+id/fl_fanhui"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:padding=
"15dp"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/fanhui_b"
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
<EditText
android:id=
"@+id/edit_search"
android:layout_width=
"0dp"
android:layout_height=
"40dp"
android:layout_marginStart=
"10dp"
android:layout_marginEnd=
"20dp"
android:background=
"@drawable/bg_f8f9fe_10"
android:hint=
"Enter the file name to search for"
android:imeOptions=
"actionDone"
android:paddingHorizontal=
"18dp"
android:singleLine=
"true"
android:textColor=
"@color/black"
android:textColorHint=
"#B8B9BD"
android:textSize=
"14sp"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toStartOf=
"@id/iv_search"
app:layout_constraintStart_toEndOf=
"@id/fl_fanhui"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"Autofill,HardcodedText,RtlSymmetry,TextFields"
/>
<TextView
android:id=
"@+id/tv_tittle"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"15dp"
android:text=
"Recent"
android:textColor=
"@color/black"
android:textSize=
"19sp"
android:textStyle=
"bold"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:id=
"@+id/iv_xuanze"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"16dp"
android:src=
"@mipmap/h_xuanze"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toStartOf=
"@id/iv_search"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
/>
<ImageView
android:id=
"@+id/iv_search"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"16dp"
android:src=
"@mipmap/h_sousuo"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
/>
<ImageView
android:id=
"@+id/iv_all_selector"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@drawable/bg_selector_select"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"@id/iv_search"
app:layout_constraintStart_toStartOf=
"@id/iv_search"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:id=
"@+id/ll_main_content"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:orientation=
"vertical"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/cl_top"
>
<!-- 外层FrameLayout设置背景用来限定水波纹大小-->
<FrameLayout
android:id=
"@+id/cl_tabLayout"
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:background=
"#00000000"
>
<com.angcyo.tablayout.DslTabLayout
android:id=
"@+id/tabLayout_document"
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
app:tab_badge_gravity=
"center"
app:tab_badge_offset_x=
"20dp"
app:tab_draw_indicator=
"true"
app:tab_enable_text_color=
"true"
app:tab_indicator_drawable=
"@drawable/indicator_bottom_line"
app:tab_indicator_height=
"3dp"
app:tab_item_is_equ_width=
"true"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@drawable/ripple_select"
android:clipChildren=
"false"
android:clipToPadding=
"false"
android:gravity=
"center"
android:text=
"PDF"
android:textSize=
"16sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:background=
"@drawable/ripple_select"
android:clipChildren=
"false"
android:clipToPadding=
"false"
android:gravity=
"center"
android:paddingVertical=
"5dp"
android:text=
"Word"
android:textSize=
"16sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@drawable/ripple_select"
android:clipChildren=
"false"
android:clipToPadding=
"false"
android:gravity=
"center"
android:text=
"Excel"
android:textSize=
"16sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@drawable/ripple_select"
android:clipChildren=
"false"
android:clipToPadding=
"false"
android:gravity=
"center"
android:text=
"PPT"
android:textSize=
"16sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
</com.angcyo.tablayout.DslTabLayout>
<View
android:id=
"@+id/v_tabLayout_place"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:visibility=
"gone"
/>
</FrameLayout>
<androidx.viewpager2.widget.ViewPager2
android:id=
"@+id/viewPager2"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"1"
/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ 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