Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
P
PDF Reader 2
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
PDF Reader 2
Commits
ca2fb258
Commit
ca2fb258
authored
Oct 25, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
初始化
parent
ecbcbb0b
Pipeline
#1290
canceled with stages
Changes
34
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
2062 additions
and
4 deletions
+2062
-4
DocumentAdapter.kt
.../main/java/com/base/pdfreader2/ui/main/DocumentAdapter.kt
+1
-1
DocumentFragment.kt
...main/java/com/base/pdfreader2/ui/main/DocumentFragment.kt
+69
-2
DocumentPresenter.kt
...ain/java/com/base/pdfreader2/ui/main/DocumentPresenter.kt
+35
-0
MainActivity.kt
...src/main/java/com/base/pdfreader2/ui/main/MainActivity.kt
+0
-1
DialogView.kt
app/src/main/java/com/base/pdfreader2/ui/view/DialogView.kt
+23
-0
DocumentDialog.kt
...c/main/java/com/base/pdfreader2/ui/view/DocumentDialog.kt
+122
-0
NameDialog.kt
app/src/main/java/com/base/pdfreader2/ui/view/NameDialog.kt
+71
-0
PdfDialog.kt
app/src/main/java/com/base/pdfreader2/ui/view/PdfDialog.kt
+276
-0
PwdDialog.kt
app/src/main/java/com/base/pdfreader2/ui/view/PwdDialog.kt
+131
-0
IntentShareUtils.kt
...c/main/java/com/base/pdfreader2/utils/IntentShareUtils.kt
+115
-0
ToastUtils.kt
app/src/main/java/com/base/pdfreader2/utils/ToastUtils.kt
+10
-0
bg_7fdcee_10.xml
app/src/main/res/drawable/bg_7fdcee_10.xml
+6
-0
bg_f1f1f1_tlr25.xml
app/src/main/res/drawable/bg_f1f1f1_tlr25.xml
+5
-0
bg_fb2b39_10.xml
app/src/main/res/drawable/bg_fb2b39_10.xml
+5
-0
bg_selector_btn.xml
app/src/main/res/drawable/bg_selector_btn.xml
+5
-0
bg_stoke_bababa_10.xml
app/src/main/res/drawable/bg_stoke_bababa_10.xml
+9
-0
dialog_delete.xml
app/src/main/res/layout/dialog_delete.xml
+86
-0
dialog_document_detail.xml
app/src/main/res/layout/dialog_document_detail.xml
+253
-0
dialog_document_home_more.xml
app/src/main/res/layout/dialog_document_home_more.xml
+241
-0
dialog_document_rename.xml
app/src/main/res/layout/dialog_document_rename.xml
+88
-0
dialog_pdf_home_more.xml
app/src/main/res/layout/dialog_pdf_home_more.xml
+358
-0
dialog_pdf_password.xml
app/src/main/res/layout/dialog_pdf_password.xml
+149
-0
delete.webp
app/src/main/res/mipmap-xxhdpi/delete.webp
+0
-0
jianotou.webp
app/src/main/res/mipmap-xxhdpi/jianotou.webp
+0
-0
lock.png
app/src/main/res/mipmap-xxhdpi/lock.png
+0
-0
merge.png
app/src/main/res/mipmap-xxhdpi/merge.png
+0
-0
particulars.png
app/src/main/res/mipmap-xxhdpi/particulars.png
+0
-0
rename.png
app/src/main/res/mipmap-xxhdpi/rename.png
+0
-0
share.png
app/src/main/res/mipmap-xxhdpi/share.png
+0
-0
split.png
app/src/main/res/mipmap-xxhdpi/split.png
+0
-0
suo.webp
app/src/main/res/mipmap-xxhdpi/suo.webp
+0
-0
weishuru.webp
app/src/main/res/mipmap-xxhdpi/weishuru.webp
+0
-0
yishuru.webp
app/src/main/res/mipmap-xxhdpi/yishuru.webp
+0
-0
strings.xml
app/src/main/res/values/strings.xml
+4
-0
No files found.
app/src/main/java/com/base/pdfreader2/ui/main/DocumentAdapter.kt
View file @
ca2fb258
...
...
@@ -123,7 +123,7 @@ class DocumentAdapter() : BaseQuickAdapter<DocumentBean, DocumentAdapter.Documen
fun
changeIcon
(
item
:
DocumentBean
,
binding
:
ItemDocumentBinding
)
{
if
(
item
.
type
==
TYPE_PDF
)
{
if
(
item
.
state
==
0
)
{
binding
.
iv
.
setImageResource
(
R
.
mipmap
.
h_pdfioc
n
)
binding
.
iv
.
setImageResource
(
R
.
mipmap
.
pdfico
n
)
}
if
(
item
.
state
==
1
)
{
binding
.
iv
.
setImageResource
(
R
.
mipmap
.
souding
)
...
...
app/src/main/java/com/base/pdfreader2/ui/main/DocumentFragment.kt
View file @
ca2fb258
package
com.base.pdfreader2.ui.main
import
android.annotation.SuppressLint
import
android.content.Intent
import
androidx.core.view.isVisible
import
androidx.lifecycle.lifecycleScope
import
com.base.pdfreader2.bean.ConstObject
import
com.base.pdfreader2.bean.DocumentBean
import
com.base.pdfreader2.bean.DocumentBean.Companion.TYPE_EXCEL
import
com.base.pdfreader2.bean.DocumentBean.Companion.TYPE_PDF
import
com.base.pdfreader2.bean.DocumentBean.Companion.TYPE_PPT
import
com.base.pdfreader2.bean.DocumentBean.Companion.TYPE_WORD
import
com.base.pdfreader2.databinding.FragmentDocumentBinding
import
com.base.pdfreader2.helper.BaseFragment
import
com.base.pdfreader2.ui.view.DocumentDialog.showDocumentHomeMoreDialog
import
com.base.pdfreader2.ui.view.PdfDialog.showPdfHomeMoreDialog
import
com.base.pdfreader2.utils.PdfBoxUtils.checkPdfEncryption
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
import
java.io.File
import
java.util.Locale
...
...
@@ -33,10 +39,44 @@ class DocumentFragment() : BaseFragment<FragmentDocumentBinding>() {
override
fun
setView
()
{
documentPresenter
=
DocumentPresenter
(
requireContext
())
initAdapter
()
binding
.
swipeRefreshLayout
.
isRefreshing
=
true
}
private
fun
initAdapter
()
{
adapter
=
DocumentAdapter
()
adapter
.
bookmarkAction
=
{
addRemove
,
path
->
documentPresenter
.
saveBookmarkChange
(
addRemove
,
path
)
}
adapter
.
itemClick
=
{
item
->
// if (AdmobHelper.isShowOpenDocumentInter()) {
// AdmobInterstitialUtils.showInterstitialAd(requireActivity()) {
// if (it) {
// lastOpenDocumentShowAd = System.currentTimeMillis()
// }
// requireActivity().jumpDocument(item)
// }
// } else {
// requireActivity().jumpDocument(item)
// }
}
adapter
.
moreAction
=
{
item
->
documentMoreAction
.
invoke
(
item
)
}
binding
.
rv
.
adapter
=
adapter
}
binding
.
swipeRefreshLayout
.
isRefreshing
=
true
private
var
documentMoreAction
:
(
item
:
DocumentBean
)
->
Unit
=
{
item
->
val
mainActivity
=
(
requireActivity
()
as
MainActivity
)
if
(
item
.
type
==
TYPE_PDF
)
{
requireContext
().
showPdfHomeMoreDialog
(
item
,
this
,
documentPresenter
)
}
if
(
item
.
type
==
TYPE_WORD
||
item
.
type
==
TYPE_EXCEL
||
item
.
type
==
TYPE_PPT
)
{
requireContext
().
showDocumentHomeMoreDialog
(
item
,
this
,
documentPresenter
)
}
}
override
fun
setListener
()
{
...
...
@@ -117,5 +157,32 @@ class DocumentFragment() : BaseFragment<FragmentDocumentBinding>() {
return
listOf
()
}
fun
splitPdf
(
path
:
String
,
pwd
:
String
?)
{
// startActivity(Intent(requireContext(), PdfSplitActivity::class.java).apply {
// putExtra("path", path)
// putExtra("pwd", pwd)
// })
}
fun
mergePdf
(
path
:
String
)
{
// startActivity(Intent(requireContext(), PdfSelectActivity::class.java).apply {
// putExtra("doWhat", ConstObject.DO_MERGE_PDF)
// })
}
fun
removeItem
(
item
:
DocumentBean
)
{
val
list
=
arrayListOf
<
DocumentBean
>()
list
.
addAll
(
adapter
.
items
)
list
.
removeIf
{
it
.
path
==
item
.
path
}
adapter
.
submitList
(
list
)
}
@SuppressLint
(
"NotifyDataSetChanged"
)
fun
changePdfLock
(
item
:
DocumentBean
)
{
val
pdf
=
adapter
.
items
.
find
{
it
.
path
==
item
.
path
}
pdf
?.
state
=
requireContext
().
checkPdfEncryption
(
item
.
path
)
adapter
.
notifyDataSetChanged
()
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfreader2/ui/main/DocumentPresenter.kt
View file @
ca2fb258
...
...
@@ -20,6 +20,8 @@ import com.base.pdfreader2.utils.SpStringUtils.BOOKMARK_KEY
import
com.base.pdfreader2.utils.SpStringUtils.LAST_VIEW_KEY
import
com.base.pdfreader2.utils.getMediaFile
import
com.base.pdfreader2.utils.upDateDemoStore
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
java.io.File
class
DocumentPresenter
(
...
...
@@ -198,6 +200,7 @@ class DocumentPresenter(
UI_SORT_NAME_A_Z
->
{
return
list
.
sortedBy
{
File
(
it
.
path
).
name
}
}
UI_SORT_NAME_Z_A
->
{
return
list
.
sortedByDescending
{
File
(
it
.
path
).
name
}
}
...
...
@@ -206,4 +209,36 @@ class DocumentPresenter(
return
list
}
fun
saveBookmarkChange
(
addRemove
:
Boolean
,
path
:
String
)
{
if
(
addRemove
)
{
SpStringUtils
.
addSpString
(
BOOKMARK_KEY
,
path
)
}
else
{
SpStringUtils
.
deleteSpString
(
BOOKMARK_KEY
,
path
)
}
}
fun
renameDocumentBean
(
file
:
File
,
newName
:
String
,
fragment
:
DocumentFragment
,
)
{
try
{
val
newFile
=
File
(
file
.
parentFile
,
newName
)
val
result
=
file
.
renameTo
(
newFile
)
if
(
result
)
{
}
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
}
fragment
.
refreshData
()
}
fun
deleteDocument
(
item
:
DocumentBean
,
documentFragment
:
DocumentFragment
)
{
val
flag
=
File
(
item
.
path
).
delete
()
if
(
flag
)
{
documentFragment
.
removeItem
(
item
)
}
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfreader2/ui/main/MainActivity.kt
View file @
ca2fb258
package
com.base.pdfreader2.ui.main
import
android.app.Activity
import
android.content.Intent
import
android.graphics.Color
import
android.view.View
import
android.view.inputmethod.EditorInfo
...
...
app/src/main/java/com/base/pdfreader2/ui/view/DialogView.kt
View file @
ca2fb258
...
...
@@ -9,6 +9,7 @@ import com.base.pdfreader2.bean.ConstObject.UI_SORT_FINAL_MODIFIED
import
com.base.pdfreader2.bean.ConstObject.UI_SORT_LAST_MODIFIED
import
com.base.pdfreader2.bean.ConstObject.UI_SORT_NAME_A_Z
import
com.base.pdfreader2.bean.ConstObject.UI_SORT_NAME_Z_A
import
com.base.pdfreader2.databinding.DialogDeleteBinding
import
com.base.pdfreader2.databinding.DialogSortBinding
import
com.google.android.material.bottomsheet.BottomSheetBehavior
import
com.google.android.material.bottomsheet.BottomSheetDialog
...
...
@@ -96,4 +97,26 @@ object DialogView {
okAction
.
invoke
()
}
}
fun
Context
.
showDeleteDialog
(
deleteAction
:
()
->
Unit
)
{
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
binding
=
DialogDeleteBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
dialog
.
setContentView
(
binding
.
root
)
dialog
.
setCanceledOnTouchOutside
(
false
)
dialog
.
show
()
val
parentView
=
binding
.
root
.
parent
as
View
val
behavior
=
BottomSheetBehavior
.
from
(
parentView
)
//展开
behavior
.
state
=
BottomSheetBehavior
.
STATE_EXPANDED
binding
.
tvCancel
.
setOnClickListener
{
dialog
.
dismiss
()
}
binding
.
tvDelete
.
setOnClickListener
{
dialog
.
dismiss
()
deleteAction
.
invoke
()
}
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfreader2/ui/view/DocumentDialog.kt
0 → 100644
View file @
ca2fb258
package
com.base.pdfreader2.ui.view
import
android.annotation.SuppressLint
import
android.content.Context
import
android.view.LayoutInflater
import
android.view.View
import
com.base.pdfreader2.R
import
com.base.pdfreader2.bean.DocumentBean
import
com.base.pdfreader2.bean.DocumentBean.Companion.TYPE_EXCEL
import
com.base.pdfreader2.bean.DocumentBean.Companion.TYPE_PPT
import
com.base.pdfreader2.bean.DocumentBean.Companion.TYPE_WORD
import
com.base.pdfreader2.databinding.DialogDocumentDetailBinding
import
com.base.pdfreader2.databinding.DialogDocumentHomeMoreBinding
import
com.base.pdfreader2.ui.main.DocumentFragment
import
com.base.pdfreader2.ui.main.DocumentPresenter
import
com.base.pdfreader2.ui.view.DialogView.showDeleteDialog
import
com.base.pdfreader2.ui.view.NameDialog.showDocumentRenameDialog
import
com.base.pdfreader2.utils.IntentShareUtils.documentShare
import
com.base.pdfreader2.utils.KotlinExt.toFormatSize
import
com.base.pdfreader2.utils.KotlinExt.toFormatTime3
import
com.base.pdfreader2.utils.KotlinExt.toFormatTime4
import
com.base.pdfreader2.utils.SpStringUtils
import
com.base.pdfreader2.utils.SpStringUtils.LAST_VIEW_KEY
import
com.google.android.material.bottomsheet.BottomSheetBehavior
import
com.google.android.material.bottomsheet.BottomSheetDialog
import
java.io.File
object
DocumentDialog
{
@SuppressLint
(
"SetTextI18n"
,
"NotifyDataSetChanged"
)
fun
Context
.
showDocumentHomeMoreDialog
(
item
:
DocumentBean
,
documentFragment
:
DocumentFragment
,
documentPresenter
:
DocumentPresenter
,
):
BottomSheetDialog
{
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
binding
=
DialogDocumentHomeMoreBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
dialog
.
setContentView
(
binding
.
root
)
dialog
.
setCanceledOnTouchOutside
(
false
)
dialog
.
show
()
val
parentView
=
binding
.
root
.
parent
as
View
val
behavior
=
BottomSheetBehavior
.
from
(
parentView
)
//展开
behavior
.
state
=
BottomSheetBehavior
.
STATE_EXPANDED
val
file
=
File
(
item
.
path
)
binding
.
tvName
.
text
=
file
.
name
binding
.
tvInfo
.
text
=
file
.
lastModified
().
toFormatTime4
()
+
" "
+
file
.
length
().
toFormatSize
()
if
(
item
.
isBookmarked
)
{
binding
.
ivBookmark
.
setImageResource
(
R
.
mipmap
.
h_soucang_s
)
}
else
{
binding
.
ivBookmark
.
setImageResource
(
R
.
mipmap
.
h_soucang_n
)
}
when
(
item
.
type
)
{
TYPE_WORD
->
{
binding
.
ivDocument
.
setImageResource
(
R
.
mipmap
.
wordicon
)
}
TYPE_EXCEL
->
{
binding
.
ivDocument
.
setImageResource
(
R
.
mipmap
.
excelicon
)
}
TYPE_PPT
->
{
binding
.
ivDocument
.
setImageResource
(
R
.
mipmap
.
ppticon
)
}
}
binding
.
llRename
.
setOnClickListener
{
showDocumentRenameDialog
(
file
.
name
,
okAction
=
{
newName
->
dialog
.
dismiss
()
documentPresenter
.
renameDocumentBean
(
file
,
newName
,
documentFragment
)
})
}
binding
.
llDetail
.
setOnClickListener
{
showDocumentDetail
(
item
.
path
)
}
binding
.
llShare
.
setOnClickListener
{
documentShare
(
item
)
}
binding
.
llDelete
.
setOnClickListener
{
dialog
.
dismiss
()
showDeleteDialog
{
documentPresenter
.
deleteDocument
(
item
,
documentFragment
)
}
}
return
dialog
}
fun
Context
.
showDocumentDetail
(
path
:
String
)
{
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
binding
=
DialogDocumentDetailBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
dialog
.
setContentView
(
binding
.
root
)
dialog
.
setCanceledOnTouchOutside
(
false
)
dialog
.
show
()
val
parentView
=
binding
.
root
.
parent
as
View
val
behavior
=
BottomSheetBehavior
.
from
(
parentView
)
//展开
behavior
.
state
=
BottomSheetBehavior
.
STATE_EXPANDED
val
file
=
File
(
path
)
binding
.
tvName
.
text
=
file
.
name
binding
.
tvPath
.
text
=
file
.
absolutePath
val
lastView
=
SpStringUtils
.
getSpStringList
(
LAST_VIEW_KEY
).
find
{
it
.
contains
(
file
.
absolutePath
)
}
if
(
lastView
!=
null
)
{
val
lastTime
=
lastView
.
split
(
"_/_"
)[
1
]
binding
.
tvLastView
.
text
=
lastTime
.
toLong
().
toFormatTime3
()
}
else
{
binding
.
tvLastView
.
text
=
file
.
lastModified
().
toFormatTime3
()
}
binding
.
tvLastChange
.
text
=
file
.
lastModified
().
toFormatTime3
()
binding
.
tvFileSize
.
text
=
file
.
length
().
toFormatSize
()
binding
.
tvBtnOk
.
setOnClickListener
{
dialog
.
dismiss
()
}
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfreader2/ui/view/NameDialog.kt
0 → 100644
View file @
ca2fb258
package
com.base.pdfreader2.ui.view
import
android.content.Context
import
android.view.LayoutInflater
import
android.view.View
import
android.view.WindowManager
import
androidx.core.widget.addTextChangedListener
import
com.base.pdfreader2.R
import
com.base.pdfreader2.databinding.DialogDocumentRenameBinding
import
com.base.pdfreader2.utils.KotlinExt.toFormatTime2
import
com.base.pdfreader2.utils.ToastUtils.toast
import
com.google.android.material.bottomsheet.BottomSheetBehavior
import
com.google.android.material.bottomsheet.BottomSheetDialog
object
NameDialog
{
/**
* 重命名
*/
fun
Context
.
showDocumentRenameDialog
(
name
:
String
?
=
null
,
okAction
:
((
newName
:
String
)
->
Unit
)?
=
null
,
dismissAction
:
(()
->
Unit
)?
=
null
)
{
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
binding
=
DialogDocumentRenameBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
dialog
.
setContentView
(
binding
.
root
)
dialog
.
setCanceledOnTouchOutside
(
false
)
val
window
=
dialog
.
window
window
?.
setSoftInputMode
(
WindowManager
.
LayoutParams
.
SOFT_INPUT_ADJUST_RESIZE
)
dialog
.
show
()
val
parentView
=
binding
.
root
.
parent
as
View
val
behavior
=
BottomSheetBehavior
.
from
(
parentView
)
//展开
behavior
.
state
=
BottomSheetBehavior
.
STATE_EXPANDED
binding
.
edit
.
addTextChangedListener
{
binding
.
tvOk
.
isEnabled
=
!
it
.
isNullOrEmpty
()
}
val
tempName
=
"Split_"
+
System
.
currentTimeMillis
().
toFormatTime2
()
binding
.
edit
.
setText
(
name
?:
tempName
)
if
(
name
==
null
)
{
binding
.
edit
.
selectAll
()
}
else
{
val
nameS
=
name
.
split
(
"."
)[
0
]
binding
.
edit
.
setSelection
(
0
,
nameS
.
length
)
}
binding
.
edit
.
requestFocus
()
binding
.
tvCancel
.
setOnClickListener
{
dialog
.
dismiss
()
}
binding
.
tvOk
.
setOnClickListener
{
dialog
.
dismiss
()
val
newName
=
binding
.
edit
.
text
.
toString
()
if
(
newName
.
isEmpty
())
{
toast
(
"name can't be empty!"
)
return
@setOnClickListener
}
okAction
?.
invoke
(
newName
)
}
dialog
.
setOnDismissListener
{
dismissAction
?.
invoke
()
}
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfreader2/ui/view/PdfDialog.kt
0 → 100644
View file @
ca2fb258
package
com.base.pdfreader2.ui.view
import
android.annotation.SuppressLint
import
android.content.Context
import
android.view.LayoutInflater
import
android.view.View
import
com.base.pdfreader2.R
import
com.base.pdfreader2.bean.DocumentBean
import
com.base.pdfreader2.databinding.DialogPdfHomeMoreBinding
import
com.base.pdfreader2.ui.main.DocumentFragment
import
com.base.pdfreader2.ui.main.DocumentPresenter
import
com.base.pdfreader2.ui.view.DialogView.showDeleteDialog
import
com.base.pdfreader2.ui.view.DocumentDialog.showDocumentDetail
import
com.base.pdfreader2.ui.view.NameDialog.showDocumentRenameDialog
import
com.base.pdfreader2.ui.view.PwdDialog.showPdfPwdDialog
import
com.base.pdfreader2.utils.IntentShareUtils
import
com.base.pdfreader2.utils.KotlinExt.toFormatSize
import
com.base.pdfreader2.utils.KotlinExt.toFormatTime
import
com.google.android.material.bottomsheet.BottomSheetBehavior
import
com.google.android.material.bottomsheet.BottomSheetDialog
import
java.io.File
object
PdfDialog
{
//pdf首页弹窗
@SuppressLint
(
"NotifyDataSetChanged"
,
"SetTextI18n"
)
fun
Context
.
showPdfHomeMoreDialog
(
item
:
DocumentBean
,
documentFragment
:
DocumentFragment
,
documentPresenter
:
DocumentPresenter
,
):
BottomSheetDialog
{
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
binding
=
DialogPdfHomeMoreBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
dialog
.
setContentView
(
binding
.
root
)
dialog
.
setCanceledOnTouchOutside
(
false
)
dialog
.
show
()
val
parentView
=
binding
.
root
.
parent
as
View
val
behavior
=
BottomSheetBehavior
.
from
(
parentView
)
//展开
behavior
.
state
=
BottomSheetBehavior
.
STATE_EXPANDED
val
file
=
File
(
item
.
path
)
binding
.
tvName
.
text
=
file
.
name
binding
.
tvInfo
.
text
=
file
.
lastModified
().
toFormatTime
()
+
" "
+
file
.
length
().
toFormatSize
()
if
(
item
.
isBookmarked
)
{
binding
.
ivBookmark
.
setImageResource
(
R
.
mipmap
.
h_soucang_s
)
}
else
{
binding
.
ivBookmark
.
setImageResource
(
R
.
mipmap
.
h_soucang_n
)
}
binding
.
ivBookmark
.
setOnClickListener
{
item
.
isBookmarked
=
!
item
.
isBookmarked
if
(
item
.
isBookmarked
)
{
binding
.
ivBookmark
.
setImageResource
(
R
.
mipmap
.
h_soucang_s
)
}
else
{
binding
.
ivBookmark
.
setImageResource
(
R
.
mipmap
.
h_soucang_n
)
}
documentPresenter
.
saveBookmarkChange
(
item
.
isBookmarked
,
item
.
path
)
documentFragment
.
refreshData
()
}
binding
.
llRename
.
setOnClickListener
{
showDocumentRenameDialog
(
file
.
name
,
okAction
=
{
newName
->
dialog
.
dismiss
()
documentPresenter
.
renameDocumentBean
(
file
,
newName
,
documentFragment
)
})
}
binding
.
llSplit
.
setOnClickListener
{
dialog
.
dismiss
()
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
,
null
)
}
}
binding
.
llMerge
.
setOnClickListener
{
dialog
.
dismiss
()
documentFragment
.
mergePdf
(
item
.
path
)
}
binding
.
llDelete
.
setOnClickListener
{
dialog
.
dismiss
()
showDeleteDialog
{
documentPresenter
.
deleteDocument
(
item
,
documentFragment
)
}
}
binding
.
llDetail
.
setOnClickListener
{
showDocumentDetail
(
item
.
path
)
}
binding
.
llShare
.
setOnClickListener
{
val
intent
=
IntentShareUtils
.
sharePdfIntent
(
item
.
uri
)
runCatching
{
startActivity
(
intent
)
}
}
if
(
item
.
state
==
1
)
{
binding
.
tvLock
.
text
=
getString
(
R
.
string
.
unlock_pdf
)
}
if
(
item
.
state
==
0
)
{
binding
.
tvLock
.
text
=
getString
(
R
.
string
.
lock_pdf
)
}
binding
.
llLock
.
setOnClickListener
{
showPdfPwdDialog
(
state
=
item
.
state
,
path
=
item
.
path
,
firstDialog
=
dialog
,
isCheckPwd
=
false
,
encryptionAction
=
{
dialog
.
dismiss
()
documentFragment
.
changePdfLock
(
item
)
})
}
dialog
.
setOnDismissListener
{
}
return
dialog
}
// fun Activity.showPdfMoreDialog(
// pdfView: PdfView,
// pageNumber: Int,
// pafPath: String,
// ) {
// val dialog = BottomSheetDialog(this, R.style.BottomSheetDialog)
// val binding = DialogPdfMoreBinding.inflate(LayoutInflater.from(this))
// dialog.setContentView(binding.root)
// dialog.setCanceledOnTouchOutside(false)
//
// dialog.show()
//
// val parentView = binding.root.parent as View
// val behavior = BottomSheetBehavior.from(parentView)
// //展开
// behavior.state = BottomSheetBehavior.STATE_EXPANDED
//
// binding.llJump.setOnClickListener {
// showJumpPageNumberDialog(pageNumber) { pageIndex ->
// dialog.dismiss()
// pdfView.jumpPage(pageIndex)
// }
// }
// binding.llSplit.setOnClickListener {
// dialog.dismiss()
// pdfView.jumpSplit()
// }
// binding.llDetail.setOnClickListener {
// showDocumentDetail(pafPath)
// }
// binding.llShare.setOnClickListener {
// dialog.dismiss()
// runCatching {
// val pkg = this.packageName
// LogEx.logDebug("showPdfMoreDialog", "pkg=$pkg")
// val uri = FileProvider.getUriForFile(
// this, this.packageName + ".provider", File(pafPath)
// )
// startActivity(Intent.createChooser(IntentShareUtils.sharePdfIntent(uri), "Share PDF"))
// }
// }
// binding.llPrint.setOnClickListener {
// val uri = FileProvider.getUriForFile(
// this, this.packageName + ".provider", File(pafPath)
// )
// startActivity(Intent.createChooser(IntentShareUtils.sharePdfPrintIntent(uri), "Print PDF"))
// }
//
// }
// @SuppressLint("SetTextI18n")
// fun Context.showPdfPwdDialog(
// state: Int,
// path: String = "",
// uri: String? = null,
// firstDialog: Dialog? = null,
// isCheckPwd: Boolean = false,
// verificationAction: ((pwd: String) -> Unit)? = null,
// encryptionAction: (() -> Unit)? = null,
// cancelAction: (() -> Unit)? = null,
// ) {
// val dialog = BottomSheetDialog(this, R.style.BottomSheetDialog)
// val binding = DialogPdfPasswordBinding.inflate(LayoutInflater.from(this))
// dialog.setContentView(binding.root)
// dialog.setCanceledOnTouchOutside(false)
//
// val window = dialog.window
// window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
//
// dialog.show()
//
// val parentView = binding.root.parent as View
// val behavior = BottomSheetBehavior.from(parentView)
// //展开
// behavior.state = BottomSheetBehavior.STATE_EXPANDED
//
// if (!isCheckPwd) {
// if (state == 1) {
// binding.tvTittle.text = getString(R.string.delete_password)
// binding.tvTip.text = getString(R.string.delete_password_the_file_is_not_password_protected)
// }
// if (state == 0) {
// binding.tvTittle.text = getString(R.string.set_password)
// binding.tvTip.text = getString(R.string.set_password_protection_pdf)
//
// }
// } else {
// binding.tvTittle.text = getString(R.string.input_password)
// val file = File(path)
// binding.tvTip.text = getString(R.string.password_protected, file.name)
// binding.tvInputTip.visibility = View.VISIBLE
// }
//
// binding.edit.requestFocus()
// binding.edit.addTextChangedListener {
// binding.tvConfirm.isEnabled = it.toString().isNotEmpty()
// binding.tvErrorTip.visibility = View.GONE
// }
//
// binding.tvCancel.setOnClickListener {
// dialog.dismiss()
// cancelAction?.invoke()
// }
// binding.tvConfirm.setOnClickListener {
//
// val pwd = binding.edit.text.toString()
//
// if (!isCheckPwd) {
//
// //加锁逻辑
// if (state == 0) {
// PdfBoxUtils.setPassword(path, pwd, pwd)
// toast("Success Encryption")
// encryptionAction?.invoke()
// dialog.dismiss()
// firstDialog?.dismiss()
// }
// //解锁逻辑
// if (state == 1) {
// val result = PdfBoxUtils.checkPwd(path, pwd, uri)
// LogEx.logDebug("checkPwd", "result=$result")
// if (result) {
// PdfBoxUtils.clearPassword(path, pwd)
// toast("clear Encryption")
// encryptionAction?.invoke()
// dialog.dismiss()
// firstDialog?.dismiss()
// } else {
// binding.tvErrorTip.visibility = View.VISIBLE
// }
// }
// } else {
// //验证密码逻辑
// val result = PdfBoxUtils.checkPwd(path, pwd, uri)
// if (!result) {
// binding.tvErrorTip.visibility = View.VISIBLE
// return@setOnClickListener
// }
// dialog.dismiss()
// firstDialog?.dismiss()
// verificationAction?.invoke(pwd)
// }
//
// }
// binding.ivEye.setOnClickListener {
//
// if (binding.edit.transformationMethod == null) {
// // 隐藏密码
// binding.edit.transformationMethod = PasswordTransformationMethod()
// binding.ivEye.setImageResource(R.mipmap.weishuru)
// } else {
// // 显示密码
// binding.edit.transformationMethod = null
// binding.ivEye.setImageResource(R.mipmap.yishuru)
// }
// }
//
// }
}
\ No newline at end of file
app/src/main/java/com/base/pdfreader2/ui/view/PwdDialog.kt
0 → 100644
View file @
ca2fb258
package
com.base.pdfreader2.ui.view
import
android.annotation.SuppressLint
import
android.app.Dialog
import
android.content.Context
import
android.text.method.PasswordTransformationMethod
import
android.view.LayoutInflater
import
android.view.View
import
android.view.WindowManager
import
androidx.core.widget.addTextChangedListener
import
com.base.pdfreader2.R
import
com.base.pdfreader2.databinding.DialogPdfPasswordBinding
import
com.base.pdfreader2.utils.LogEx
import
com.base.pdfreader2.utils.PdfBoxUtils
import
com.base.pdfreader2.utils.PdfBoxUtils.checkPwd
import
com.base.pdfreader2.utils.ToastUtils.toast
import
com.google.android.material.bottomsheet.BottomSheetBehavior
import
com.google.android.material.bottomsheet.BottomSheetDialog
import
java.io.File
object
PwdDialog
{
@SuppressLint
(
"SetTextI18n"
)
fun
Context
.
showPdfPwdDialog
(
state
:
Int
,
path
:
String
=
""
,
uri
:
String
?
=
null
,
firstDialog
:
Dialog
?
=
null
,
isCheckPwd
:
Boolean
=
false
,
verificationAction
:
((
pwd
:
String
)
->
Unit
)?
=
null
,
encryptionAction
:
(()
->
Unit
)?
=
null
,
cancelAction
:
(()
->
Unit
)?
=
null
,
)
{
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
binding
=
DialogPdfPasswordBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
dialog
.
setContentView
(
binding
.
root
)
dialog
.
setCanceledOnTouchOutside
(
false
)
val
window
=
dialog
.
window
window
?.
setSoftInputMode
(
WindowManager
.
LayoutParams
.
SOFT_INPUT_ADJUST_RESIZE
)
dialog
.
show
()
val
parentView
=
binding
.
root
.
parent
as
View
val
behavior
=
BottomSheetBehavior
.
from
(
parentView
)
//展开
behavior
.
state
=
BottomSheetBehavior
.
STATE_EXPANDED
if
(!
isCheckPwd
)
{
if
(
state
==
1
)
{
binding
.
tvTittle
.
text
=
getString
(
R
.
string
.
delete_password
)
binding
.
tvTip
.
text
=
getString
(
R
.
string
.
delete_password_the_file_is_not_password_protected
)
}
if
(
state
==
0
)
{
binding
.
tvTittle
.
text
=
getString
(
R
.
string
.
set_password
)
binding
.
tvTip
.
text
=
getString
(
R
.
string
.
set_password_protection_pdf
)
}
}
else
{
binding
.
tvTittle
.
text
=
getString
(
R
.
string
.
input_password
)
val
file
=
File
(
path
)
binding
.
tvTip
.
text
=
getString
(
R
.
string
.
password_protected
,
file
.
name
)
binding
.
tvInputTip
.
visibility
=
View
.
VISIBLE
}
binding
.
edit
.
requestFocus
()
binding
.
edit
.
addTextChangedListener
{
binding
.
tvConfirm
.
isEnabled
=
it
.
toString
().
isNotEmpty
()
binding
.
tvErrorTip
.
visibility
=
View
.
GONE
}
binding
.
tvCancel
.
setOnClickListener
{
dialog
.
dismiss
()
cancelAction
?.
invoke
()
}
binding
.
tvConfirm
.
setOnClickListener
{
val
pwd
=
binding
.
edit
.
text
.
toString
()
if
(!
isCheckPwd
)
{
//加锁逻辑
if
(
state
==
0
)
{
PdfBoxUtils
.
setPassword
(
path
,
pwd
,
pwd
)
toast
(
"Success Encryption"
)
encryptionAction
?.
invoke
()
dialog
.
dismiss
()
firstDialog
?.
dismiss
()
}
//解锁逻辑
if
(
state
==
1
)
{
val
result
=
checkPwd
(
path
,
pwd
,
uri
)
LogEx
.
logDebug
(
"checkPwd"
,
"result=$result"
)
if
(
result
)
{
PdfBoxUtils
.
clearPassword
(
path
,
pwd
)
toast
(
"clear Encryption"
)
encryptionAction
?.
invoke
()
dialog
.
dismiss
()
firstDialog
?.
dismiss
()
}
else
{
binding
.
tvErrorTip
.
visibility
=
View
.
VISIBLE
}
}
}
else
{
//验证密码逻辑
val
result
=
checkPwd
(
path
,
pwd
,
uri
)
if
(!
result
)
{
binding
.
tvErrorTip
.
visibility
=
View
.
VISIBLE
return
@setOnClickListener
}
dialog
.
dismiss
()
firstDialog
?.
dismiss
()
verificationAction
?.
invoke
(
pwd
)
}
}
binding
.
ivEye
.
setOnClickListener
{
if
(
binding
.
edit
.
transformationMethod
==
null
)
{
// 隐藏密码
binding
.
edit
.
transformationMethod
=
PasswordTransformationMethod
()
binding
.
ivEye
.
setImageResource
(
R
.
mipmap
.
weishuru
)
}
else
{
// 显示密码
binding
.
edit
.
transformationMethod
=
null
binding
.
ivEye
.
setImageResource
(
R
.
mipmap
.
yishuru
)
}
}
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfreader2/utils/IntentShareUtils.kt
0 → 100644
View file @
ca2fb258
package
com.base.pdfreader2.utils
import
android.content.Context
import
android.content.Intent
import
android.net.Uri
import
androidx.core.content.FileProvider
import
com.base.pdfreader2.R
import
com.base.pdfreader2.bean.DocumentBean
import
com.base.pdfreader2.bean.DocumentBean.Companion.TYPE_PDF
import
java.io.File
object
IntentShareUtils
{
fun
Context
.
documentShare
(
documentBean
:
DocumentBean
)
{
val
uri
=
FileProvider
.
getUriForFile
(
this
,
this
.
packageName
+
".provider"
,
File
(
documentBean
.
path
)
)
var
intent
:
Intent
?
=
null
var
desc
=
getString
(
R
.
string
.
share_pdf
)
if
(
documentBean
.
type
==
DocumentBean
.
TYPE_PPT
)
{
intent
=
sharePptIntent
(
uri
)
desc
=
getString
(
R
.
string
.
share_ppt
)
}
if
(
documentBean
.
type
==
DocumentBean
.
TYPE_WORD
)
{
intent
=
shareWordIntent
(
uri
)
desc
=
getString
(
R
.
string
.
share_word
)
}
if
(
documentBean
.
type
==
DocumentBean
.
TYPE_EXCEL
)
{
intent
=
shareExcelIntent
(
uri
)
desc
=
getString
(
R
.
string
.
share_excel
)
}
intent
?.
let
{
startActivity
(
Intent
.
createChooser
(
it
,
desc
))
}
}
fun
sharePdfIntent
(
uri
:
Uri
):
Intent
{
val
shareIntent
=
Intent
().
apply
{
action
=
Intent
.
ACTION_SEND
putExtra
(
Intent
.
EXTRA_STREAM
,
uri
)
type
=
"application/pdf"
addFlags
(
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
)
// 授权临时权限
}
return
shareIntent
}
fun
sharePptIntent
(
uri
:
Uri
):
Intent
{
val
shareIntent
=
Intent
().
apply
{
action
=
Intent
.
ACTION_SEND
putExtra
(
Intent
.
EXTRA_STREAM
,
uri
)
type
=
"application/vnd.ms-powerpoint"
addFlags
(
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
)
// 授权临时权限
}
return
shareIntent
}
fun
shareWordIntent
(
uri
:
Uri
):
Intent
{
val
shareIntent
=
Intent
().
apply
{
action
=
Intent
.
ACTION_SEND
putExtra
(
Intent
.
EXTRA_STREAM
,
uri
)
type
=
"application/msword"
addFlags
(
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
)
// 授权临时权限
}
return
shareIntent
}
fun
shareExcelIntent
(
uri
:
Uri
):
Intent
{
val
shareIntent
=
Intent
().
apply
{
action
=
Intent
.
ACTION_SEND
putExtra
(
Intent
.
EXTRA_STREAM
,
uri
)
type
=
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
addFlags
(
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
)
// 授权临时权限
}
return
shareIntent
}
fun
sharePdfPrintIntent
(
uri
:
Uri
):
Intent
{
// 创建打印的 Intent
val
intent
=
Intent
(
Intent
.
ACTION_SEND
)
intent
.
setDataAndType
(
uri
,
"application/pdf"
)
// 启动打印服务
intent
.
addFlags
(
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
)
return
intent
}
fun
Context
.
shareMutDocuments
(
type
:
String
,
uris
:
ArrayList
<
Uri
>
)
{
var
desc
=
"Share PDF files"
val
intent
=
when
(
type
)
{
TYPE_PDF
->
{
shareMutPdfIntent
(
uris
)
}
else
->
shareMutPdfIntent
(
uris
)
}
val
chooserIntent
=
Intent
.
createChooser
(
intent
,
desc
)
startActivity
(
chooserIntent
)
}
fun
shareMutPdfIntent
(
uris
:
ArrayList
<
Uri
>):
Intent
{
val
shareIntent
=
Intent
().
apply
{
action
=
Intent
.
ACTION_SEND_MULTIPLE
type
=
"application/pdf"
addFlags
(
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
)
// 授权临时权限
putParcelableArrayListExtra
(
Intent
.
EXTRA_STREAM
,
uris
)
}
return
shareIntent
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfreader2/utils/ToastUtils.kt
0 → 100644
View file @
ca2fb258
package
com.base.pdfreader2.utils
import
android.content.Context
import
android.widget.Toast
object
ToastUtils
{
fun
Context
.
toast
(
content
:
String
)
{
Toast
.
makeText
(
this
,
content
,
Toast
.
LENGTH_SHORT
).
show
()
}
}
\ No newline at end of file
app/src/main/res/drawable/bg_7fdcee_10.xml
0 → 100644
View file @
ca2fb258
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"#7FDCEE"
/>
<corners
android:radius=
"10dp"
/>
</shape>
\ No newline at end of file
app/src/main/res/drawable/bg_f1f1f1_tlr25.xml
0 → 100644
View file @
ca2fb258
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"#F1F1F1"
/>
<corners
android:topLeftRadius=
"25dp"
android:topRightRadius=
"25dp"
/>
</shape>
\ No newline at end of file
app/src/main/res/drawable/bg_fb2b39_10.xml
0 → 100644
View file @
ca2fb258
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"#FB2B39"
/>
<corners
android:radius=
"10dp"
/>
</shape>
\ No newline at end of file
app/src/main/res/drawable/bg_selector_btn.xml
0 → 100644
View file @
ca2fb258
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<item
android:drawable=
"@drawable/bg_00b8de_10"
android:state_enabled=
"true"
/>
<item
android:drawable=
"@drawable/bg_7fdcee_10"
android:state_enabled=
"false"
/>
</selector>
\ No newline at end of file
app/src/main/res/drawable/bg_stoke_bababa_10.xml
0 → 100644
View file @
ca2fb258
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<stroke
android:width=
"0.5dp"
android:color=
"#BABABA"
/>
<corners
android:radius=
"10dp"
/>
</shape>
\ No newline at end of file
app/src/main/res/layout/dialog_delete.xml
0 → 100644
View file @
ca2fb258
<?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=
"wrap_content"
android:background=
"@drawable/bg_f3f3f3_tlr25"
android:orientation=
"vertical"
>
<FrameLayout
android:id=
"@+id/fl"
android:layout_width=
"match_parent"
android:layout_height=
"65dp"
app:layout_constraintTop_toTopOf=
"parent"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"16dp"
android:includeFontPadding=
"false"
android:text=
"@string/delete"
android:textColor=
"#333333"
android:textSize=
"17sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
</FrameLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:orientation=
"vertical"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/fl"
>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"55dp"
android:layout_marginHorizontal=
"16dp"
android:layout_marginTop=
"32dp"
android:ellipsize=
"end"
android:gravity=
"center_vertical"
android:paddingHorizontal=
"20dp"
android:singleLine=
"true"
android:text=
"@string/are_you_sure_you_want_to_delete_it"
android:textColor=
"#333333"
android:textSize=
"18sp"
tools:ignore=
"Autofill,HardcodedText,LabelFor,TextFields"
/>
<LinearLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"26dp"
android:layout_marginBottom=
"20dp"
>
<TextView
android:id=
"@+id/tv_cancel"
android:layout_width=
"163dp"
android:layout_height=
"48dp"
android:background=
"@drawable/bg_f1f2f6_10"
android:gravity=
"center"
android:text=
"@string/cancel"
android:textColor=
"#505050"
android:textSize=
"18sp"
tools:ignore=
"HardcodedText"
/>
<TextView
android:id=
"@+id/tv_delete"
android:layout_width=
"163dp"
android:layout_height=
"48dp"
android:layout_marginStart=
"14dp"
android:background=
"@drawable/bg_fb2b39_10"
android:gravity=
"center"
android:text=
"@string/delete"
android:textColor=
"@color/white"
android:textSize=
"18sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/dialog_document_detail.xml
0 → 100644
View file @
ca2fb258
<?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=
"wrap_content"
android:background=
"@drawable/bg_f1f1f1_tlr25"
android:orientation=
"vertical"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/cl"
android:layout_width=
"match_parent"
android:layout_height=
"65dp"
app:layout_constraintTop_toTopOf=
"parent"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"15dp"
android:text=
"Detail"
android:textColor=
"#333333"
android:textStyle=
"bold"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"HardcodedText"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:orientation=
"vertical"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/cl"
>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"85dp"
android:background=
"?android:selectableItemBackground"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:orientation=
"vertical"
tools:ignore=
"UselessParent"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"15dp"
android:includeFontPadding=
"false"
android:text=
"File Name"
tools:ignore=
"HardcodedText"
/>
<TextView
android:id=
"@+id/tv_name"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"15dp"
android:layout_marginTop=
"16dp"
android:includeFontPadding=
"false"
android:textColor=
"#9A9A9A"
android:textSize=
"14sp"
tools:text=
"DEMO.pdf"
/>
</LinearLayout>
</FrameLayout>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"85dp"
android:background=
"?android:selectableItemBackground"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:orientation=
"vertical"
tools:ignore=
"UselessParent"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"15dp"
android:includeFontPadding=
"false"
android:text=
"Storage Path"
tools:ignore=
"HardcodedText"
/>
<TextView
android:id=
"@+id/tv_path"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"15dp"
android:layout_marginTop=
"16dp"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:maxLines=
"2"
android:textColor=
"#9A9A9A"
android:textSize=
"14sp"
tools:text=
"/data/user/0/com.pdfviewer.scanner/files/ demo/DEMO.pdf"
/>
</LinearLayout>
</FrameLayout>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"85dp"
android:background=
"?android:selectableItemBackground"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:orientation=
"vertical"
tools:ignore=
"UselessParent"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"15dp"
android:includeFontPadding=
"false"
android:text=
"Last View"
tools:ignore=
"HardcodedText"
/>
<TextView
android:id=
"@+id/tv_last_view"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"15dp"
android:layout_marginTop=
"16dp"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:maxLines=
"2"
android:singleLine=
"true"
android:textColor=
"#9A9A9A"
android:textSize=
"14sp"
tools:text=
"2024-09-10 13:58:00"
/>
</LinearLayout>
</FrameLayout>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"85dp"
android:background=
"?android:selectableItemBackground"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:orientation=
"vertical"
tools:ignore=
"UselessParent"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"15dp"
android:includeFontPadding=
"false"
android:text=
"Last Change"
tools:ignore=
"HardcodedText"
/>
<TextView
android:id=
"@+id/tv_last_change"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"15dp"
android:layout_marginTop=
"16dp"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:maxLines=
"2"
android:singleLine=
"true"
android:textColor=
"#9A9A9A"
android:textSize=
"14sp"
tools:text=
"2024-09-10 13:58:00"
/>
</LinearLayout>
</FrameLayout>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"85dp"
android:background=
"?android:selectableItemBackground"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:orientation=
"vertical"
tools:ignore=
"UselessParent"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"15dp"
android:includeFontPadding=
"false"
android:text=
"File Size"
tools:ignore=
"HardcodedText"
/>
<TextView
android:id=
"@+id/tv_file_size"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"15dp"
android:layout_marginTop=
"16dp"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:maxLines=
"2"
android:singleLine=
"true"
android:textColor=
"#9A9A9A"
android:textSize=
"14sp"
tools:text=
"666.66 KB"
/>
</LinearLayout>
</FrameLayout>
<TextView
android:id=
"@+id/tv_btn_ok"
android:layout_width=
"338dp"
android:layout_height=
"48dp"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"10dp"
android:layout_marginBottom=
"25dp"
android:background=
"@drawable/bg_00b8de_10"
android:gravity=
"center"
android:text=
"OK"
android:textColor=
"@color/white"
android:textSize=
"18sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/dialog_document_home_more.xml
0 → 100644
View file @
ca2fb258
<?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=
"wrap_content"
android:background=
"@drawable/bg_f1f1f1_tlr25"
android:orientation=
"vertical"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/cl"
android:layout_width=
"match_parent"
android:layout_height=
"88dp"
app:layout_constraintTop_toTopOf=
"parent"
>
<ImageView
android:id=
"@+id/iv_document"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"-50dp"
android:src=
"@mipmap/pdficon"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
/>
<LinearLayout
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"16dp"
android:orientation=
"vertical"
app:layout_constraintBottom_toBottomOf=
"@id/iv_document"
app:layout_constraintEnd_toStartOf=
"@id/iv_bookmark"
app:layout_constraintStart_toEndOf=
"@id/iv_document"
app:layout_constraintTop_toTopOf=
"@id/iv_document"
>
<TextView
android:id=
"@+id/tv_name"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:singleLine=
"true"
android:textColor=
"@color/black"
android:textSize=
"17sp"
android:textStyle=
"bold"
tools:text=
"PDF_2024091.pdf"
/>
<TextView
android:id=
"@+id/tv_info"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"8dp"
android:includeFontPadding=
"false"
tools:text=
"2024-09-10 590.23 KB"
/>
</LinearLayout>
<ImageView
android:id=
"@+id/iv_bookmark"
android:layout_width=
"24dp"
android:layout_height=
"32dp"
android:layout_marginEnd=
"27dp"
android:src=
"@mipmap/h_soucang_n"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:orientation=
"vertical"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/cl"
>
<LinearLayout
android:id=
"@+id/ll_rename"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:background=
"?android:selectableItemBackground"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"13dp"
android:src=
"@mipmap/rename"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginHorizontal=
"13dp"
android:layout_weight=
"1"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:singleLine=
"true"
android:text=
"@string/rename"
android:textColor=
"#333333"
android:textSize=
"16sp"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginEnd=
"20dp"
android:src=
"@mipmap/jianotou"
tools:ignore=
"ContentDescription"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_detail"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:background=
"?android:selectableItemBackground"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"13dp"
android:src=
"@mipmap/particulars"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginHorizontal=
"13dp"
android:layout_weight=
"1"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:singleLine=
"true"
android:text=
"@string/detail"
android:textColor=
"#333333"
android:textSize=
"16sp"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginEnd=
"20dp"
android:src=
"@mipmap/jianotou"
tools:ignore=
"ContentDescription"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_share"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:background=
"?android:selectableItemBackground"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"13dp"
android:src=
"@mipmap/share"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginHorizontal=
"13dp"
android:layout_weight=
"1"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:singleLine=
"true"
android:text=
"@string/share"
android:textColor=
"#333333"
android:textSize=
"16sp"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginEnd=
"20dp"
android:src=
"@mipmap/jianotou"
tools:ignore=
"ContentDescription"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_delete"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:layout_marginBottom=
"20dp"
android:background=
"?android:selectableItemBackground"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"13dp"
android:src=
"@mipmap/delete"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginHorizontal=
"13dp"
android:layout_weight=
"1"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:singleLine=
"true"
android:text=
"@string/delete"
android:textColor=
"#333333"
android:textSize=
"16sp"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginEnd=
"20dp"
android:src=
"@mipmap/jianotou"
tools:ignore=
"ContentDescription"
/>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/dialog_document_rename.xml
0 → 100644
View file @
ca2fb258
<?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=
"wrap_content"
android:background=
"@drawable/bg_f3f3f3_tlr25"
android:orientation=
"vertical"
>
<FrameLayout
android:id=
"@+id/fl"
android:layout_width=
"match_parent"
android:layout_height=
"65dp"
app:layout_constraintTop_toTopOf=
"parent"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"16dp"
android:includeFontPadding=
"false"
android:text=
"@string/rename"
android:textColor=
"#333333"
android:textSize=
"17sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
</FrameLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:orientation=
"vertical"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/fl"
>
<EditText
android:id=
"@+id/edit"
android:layout_width=
"match_parent"
android:layout_height=
"55dp"
android:layout_marginHorizontal=
"16dp"
android:layout_marginTop=
"32dp"
android:background=
"@drawable/bg_stoke_bababa_10"
android:ellipsize=
"end"
android:gravity=
"center_vertical"
android:paddingHorizontal=
"20dp"
android:singleLine=
"true"
android:text=
"DEMO.pdf"
android:textColor=
"#333333"
android:textSize=
"18sp"
tools:ignore=
"Autofill,HardcodedText,LabelFor,TextFields"
/>
<LinearLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"26dp"
android:layout_marginBottom=
"20dp"
>
<TextView
android:id=
"@+id/tv_cancel"
android:layout_width=
"163dp"
android:layout_height=
"48dp"
android:background=
"@drawable/bg_f1f2f6_10"
android:gravity=
"center"
android:text=
"@string/cancel"
android:textColor=
"#505050"
android:textSize=
"18sp"
tools:ignore=
"HardcodedText"
/>
<TextView
android:id=
"@+id/tv_ok"
android:layout_width=
"163dp"
android:layout_height=
"48dp"
android:layout_marginStart=
"14dp"
android:background=
"@drawable/bg_selector_btn"
android:gravity=
"center"
android:text=
"@string/ok"
android:textColor=
"@color/white"
android:textSize=
"18sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/dialog_pdf_home_more.xml
0 → 100644
View file @
ca2fb258
<?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=
"wrap_content"
android:background=
"@drawable/bg_f1f1f1_tlr25"
android:orientation=
"vertical"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/cl"
android:layout_width=
"match_parent"
android:layout_height=
"88dp"
app:layout_constraintTop_toTopOf=
"parent"
>
<ImageView
android:id=
"@+id/iv_pdf"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"-50dp"
android:src=
"@mipmap/h_pdfiocn"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
/>
<LinearLayout
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"16dp"
android:orientation=
"vertical"
app:layout_constraintBottom_toBottomOf=
"@id/iv_pdf"
app:layout_constraintEnd_toStartOf=
"@id/iv_bookmark"
app:layout_constraintStart_toEndOf=
"@id/iv_pdf"
app:layout_constraintTop_toTopOf=
"@id/iv_pdf"
>
<TextView
android:id=
"@+id/tv_name"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:singleLine=
"true"
android:textColor=
"@color/black"
android:textSize=
"17sp"
android:textStyle=
"bold"
tools:text=
"PDF_2024091.pdf"
/>
<TextView
android:id=
"@+id/tv_info"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"8dp"
android:includeFontPadding=
"false"
tools:text=
"2024-09-10 590.23 KB"
/>
</LinearLayout>
<ImageView
android:id=
"@+id/iv_bookmark"
android:layout_width=
"24dp"
android:layout_height=
"32dp"
android:layout_marginEnd=
"27dp"
android:src=
"@mipmap/h_soucang_n"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:orientation=
"vertical"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/cl"
>
<LinearLayout
android:id=
"@+id/ll_rename"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:background=
"?android:selectableItemBackground"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"13dp"
android:src=
"@mipmap/rename"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginHorizontal=
"13dp"
android:layout_weight=
"1"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:singleLine=
"true"
android:text=
"@string/rename"
android:textColor=
"#333333"
android:textSize=
"16sp"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginEnd=
"20dp"
android:src=
"@mipmap/jianotou"
tools:ignore=
"ContentDescription"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_merge"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:background=
"?android:selectableItemBackground"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"13dp"
android:src=
"@mipmap/merge"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginHorizontal=
"13dp"
android:layout_weight=
"1"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:singleLine=
"true"
android:text=
"@string/merge_pdf"
android:textColor=
"#333333"
android:textSize=
"16sp"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginEnd=
"20dp"
android:src=
"@mipmap/jianotou"
tools:ignore=
"ContentDescription"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_split"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:background=
"?android:selectableItemBackground"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"13dp"
android:src=
"@mipmap/split"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginHorizontal=
"13dp"
android:layout_weight=
"1"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:singleLine=
"true"
android:text=
"@string/split_pdf"
android:textColor=
"#333333"
android:textSize=
"16sp"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginEnd=
"20dp"
android:src=
"@mipmap/jianotou"
tools:ignore=
"ContentDescription"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_lock"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:background=
"?android:selectableItemBackground"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"13dp"
android:src=
"@mipmap/lock"
tools:ignore=
"ContentDescription"
/>
<TextView
android:id=
"@+id/tv_lock"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginHorizontal=
"13dp"
android:layout_weight=
"1"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:singleLine=
"true"
android:text=
"@string/lock_pdf"
android:textColor=
"#333333"
android:textSize=
"16sp"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginEnd=
"20dp"
android:src=
"@mipmap/jianotou"
tools:ignore=
"ContentDescription"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_detail"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:background=
"?android:selectableItemBackground"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"13dp"
android:src=
"@mipmap/particulars"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginHorizontal=
"13dp"
android:layout_weight=
"1"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:singleLine=
"true"
android:text=
"@string/detail"
android:textColor=
"#333333"
android:textSize=
"16sp"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginEnd=
"20dp"
android:src=
"@mipmap/jianotou"
tools:ignore=
"ContentDescription"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_share"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:background=
"?android:selectableItemBackground"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"13dp"
android:src=
"@mipmap/share"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginHorizontal=
"13dp"
android:layout_weight=
"1"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:singleLine=
"true"
android:text=
"@string/share"
android:textColor=
"#333333"
android:textSize=
"16sp"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginEnd=
"20dp"
android:src=
"@mipmap/jianotou"
tools:ignore=
"ContentDescription"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_delete"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:layout_marginBottom=
"20dp"
android:background=
"?android:selectableItemBackground"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"13dp"
android:src=
"@mipmap/delete"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginHorizontal=
"13dp"
android:layout_weight=
"1"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:singleLine=
"true"
android:text=
"@string/delete"
android:textColor=
"#333333"
android:textSize=
"16sp"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginEnd=
"20dp"
android:src=
"@mipmap/jianotou"
tools:ignore=
"ContentDescription"
/>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/dialog_pdf_password.xml
0 → 100644
View file @
ca2fb258
<?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=
"wrap_content"
android:background=
"@drawable/bg_f3f3f3_tlr25"
android:orientation=
"vertical"
>
<FrameLayout
android:id=
"@+id/fl"
android:layout_width=
"match_parent"
android:layout_height=
"65dp"
app:layout_constraintTop_toTopOf=
"parent"
>
<TextView
android:id=
"@+id/tv_tittle"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"16dp"
android:includeFontPadding=
"false"
android:text=
"@string/set_password"
android:textColor=
"#333333"
android:textSize=
"17sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical|end"
android:layout_marginEnd=
"26dp"
android:src=
"@mipmap/suo"
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:orientation=
"vertical"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/fl"
>
<TextView
android:id=
"@+id/tv_tip"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"22dp"
android:text=
"@string/set_password_protection_pdf"
android:textColor=
"#333333"
android:textSize=
"18sp"
tools:ignore=
"HardcodedText"
/>
<TextView
android:id=
"@+id/tv_input_tip"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"8dp"
android:text=
"@string/enter_the_password_to_open_the_file"
android:visibility=
"gone"
tools:ignore=
"HardcodedText"
/>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"55dp"
android:layout_marginHorizontal=
"16dp"
android:layout_marginTop=
"20dp"
android:gravity=
"center"
app:endIconDrawable=
"@mipmap/weishuru"
app:endIconMode=
"custom"
tools:ignore=
"Autofill,HardcodedText,LabelFor,TextFields"
>
<EditText
android:id=
"@+id/edit"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@drawable/bg_stoke_bababa_10"
android:ellipsize=
"end"
android:gravity=
"center_vertical"
android:hint=
"Input..."
android:inputType=
"textPassword"
android:paddingHorizontal=
"20dp"
android:singleLine=
"true"
android:textColor=
"#333333"
android:textSize=
"18sp"
/>
<ImageView
android:id=
"@+id/iv_eye"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical|end"
android:layout_marginEnd=
"24dp"
android:src=
"@mipmap/weishuru"
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
<TextView
android:id=
"@+id/tv_error_tip"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"8dp"
android:text=
"@string/password_error"
android:textColor=
"#FA2232"
android:visibility=
"gone"
tools:ignore=
"HardcodedText"
/>
<LinearLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"26dp"
android:layout_marginBottom=
"20dp"
>
<TextView
android:id=
"@+id/tv_cancel"
android:layout_width=
"163dp"
android:layout_height=
"48dp"
android:background=
"@drawable/bg_f1f2f6_10"
android:gravity=
"center"
android:text=
"@string/cancel"
android:textColor=
"#505050"
android:textSize=
"18sp"
tools:ignore=
"HardcodedText"
/>
<TextView
android:id=
"@+id/tv_confirm"
android:layout_width=
"163dp"
android:layout_height=
"48dp"
android:layout_marginStart=
"14dp"
android:background=
"@drawable/bg_selector_btn"
android:enabled=
"false"
android:gravity=
"center"
android:text=
"@string/confirm"
android:textColor=
"@color/white"
android:textSize=
"18sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/mipmap-xxhdpi/delete.webp
0 → 100644
View file @
ca2fb258
File added
app/src/main/res/mipmap-xxhdpi/jianotou.webp
0 → 100644
View file @
ca2fb258
File added
app/src/main/res/mipmap-xxhdpi/lock.png
0 → 100644
View file @
ca2fb258
2.17 KB
app/src/main/res/mipmap-xxhdpi/merge.png
0 → 100644
View file @
ca2fb258
2.46 KB
app/src/main/res/mipmap-xxhdpi/particulars.png
0 → 100644
View file @
ca2fb258
1.49 KB
app/src/main/res/mipmap-xxhdpi/rename.png
0 → 100644
View file @
ca2fb258
2.12 KB
app/src/main/res/mipmap-xxhdpi/share.png
0 → 100644
View file @
ca2fb258
3.5 KB
app/src/main/res/mipmap-xxhdpi/split.png
0 → 100644
View file @
ca2fb258
3.22 KB
app/src/main/res/mipmap-xxhdpi/suo.webp
0 → 100644
View file @
ca2fb258
File added
app/src/main/res/mipmap-xxhdpi/weishuru.webp
0 → 100644
View file @
ca2fb258
File added
app/src/main/res/mipmap-xxhdpi/yishuru.webp
0 → 100644
View file @
ca2fb258
File added
app/src/main/res/values/strings.xml
View file @
ca2fb258
...
...
@@ -124,4 +124,8 @@
<string
name=
"completed"
>
Completed
</string>
<string
name=
"clean"
>
Clean
</string>
<string
name=
"scan"
>
Scan
</string>
<string
name=
"share_pdf"
>
Share PDF
</string>
<string
name=
"share_ppt"
>
Share PPT
</string>
<string
name=
"share_word"
>
Share Word
</string>
<string
name=
"share_excel"
>
Share Excel
</string>
</resources>
\ 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