Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
P
PDF Viewer Scanner White
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 Viewer Scanner White
Commits
2fbdfe3a
Commit
2fbdfe3a
authored
Sep 25, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
e52e19fd
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
343 additions
and
123 deletions
+343
-123
WordActivity.kt
...se/pdfviewerscannerwhite/ui/document/word/WordActivity.kt
+72
-2
activity_word.xml
app/src/main/res/layout/activity_word.xml
+108
-1
DocView.kt
library/src/main/java/com/cherry/lib/doc/widget/DocView.kt
+1
-7
MyOnTouchLister.kt
...rc/main/java/com/cherry/lib/doc/widget/MyOnTouchLister.kt
+50
-0
PoiViewer.kt
library/src/main/java/com/cherry/lib/doc/widget/PoiViewer.kt
+112
-113
No files found.
app/src/main/java/com/base/pdfviewerscannerwhite/ui/document/word/WordActivity.kt
View file @
2fbdfe3a
package
com.base.pdfviewerscannerwhite.ui.document.word
import
android.view.View
import
android.view.animation.Animation
import
android.view.animation.TranslateAnimation
import
android.widget.Toast
import
androidx.activity.addCallback
import
com.base.pdfviewerscannerwhite.databinding.ActivityWordBinding
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
import
com.base.pdfviewerscannerwhite.utils.KeyBoardUtils.hideKeyboard
import
com.base.pdfviewerscannerwhite.utils.LogEx
import
com.cherry.lib.doc.widget.PoiViewer
class
WordActivity
:
BaseActivity
<
ActivityWordBinding
>()
{
private
val
TAG
=
"WordActivity"
override
val
binding
:
ActivityWordBinding
by
lazy
{
ActivityWordBinding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
mPoiViewer
:
PoiViewer
private
var
path
:
String
=
""
override
fun
initView
()
{
...
...
@@ -17,13 +25,75 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
word2Html
(
path
)
}
override
fun
initListener
()
{
super
.
initListener
()
onBackPressedDispatcher
.
addCallback
{
finishToMain
()
}
binding
.
flFanhui
.
setOnClickListener
{
onBackPressedDispatcher
.
onBackPressed
()
}
mPoiViewer
.
singleTapAction
=
{
LogEx
.
logDebug
(
TAG
,
"singleTapAction"
)
if
(
isShowTopLayout
)
{
LogEx
.
logDebug
(
TAG
,
"hide"
)
hideTopLayout
()
}
else
{
showTopLayout
()
LogEx
.
logDebug
(
TAG
,
"show"
)
}
}
}
private
fun
word2Html
(
sourceFilePath
:
String
)
{
val
mPoiViewer
=
PoiViewer
(
this
)
mPoiViewer
=
PoiViewer
(
this
)
try
{
mPoiViewer
.
loadFile
(
binding
.
mFlDocContainer
,
sourceFilePath
)
}
catch
(
e
:
java
.
lang
.
Exception
)
{
Toast
.
makeText
(
this
,
"打开失败"
,
Toast
.
LENGTH_SHORT
).
show
()
Toast
.
makeText
(
this
,
"open failed"
,
Toast
.
LENGTH_SHORT
).
show
()
}
}
private
var
isShowTopLayout
=
true
private
fun
showTopLayout
()
{
if
(!
isShowTopLayout
)
{
isShowTopLayout
=
true
val
topAnim
:
Animation
=
TranslateAnimation
(
0f
,
0f
,
-
binding
.
vAnimatorTop
.
height
.
toFloat
(),
0f
)
topAnim
.
setDuration
(
200
)
topAnim
.
setAnimationListener
(
object
:
Animation
.
AnimationListener
{
override
fun
onAnimationStart
(
animation
:
Animation
)
{
binding
.
vAnimatorTop
.
visibility
=
View
.
VISIBLE
}
override
fun
onAnimationRepeat
(
animation
:
Animation
)
{}
override
fun
onAnimationEnd
(
animation
:
Animation
)
{
}
})
binding
.
vAnimatorTop
.
startAnimation
(
topAnim
)
}
}
private
fun
hideTopLayout
()
{
if
(
isShowTopLayout
)
{
isShowTopLayout
=
false
hideKeyboard
(
binding
.
editSearch
)
val
topAnim
:
Animation
=
TranslateAnimation
(
0f
,
0f
,
0f
,
-
binding
.
vAnimatorTop
.
height
.
toFloat
())
topAnim
.
setDuration
(
200
)
topAnim
.
setAnimationListener
(
object
:
Animation
.
AnimationListener
{
override
fun
onAnimationStart
(
animation
:
Animation
)
{}
override
fun
onAnimationRepeat
(
animation
:
Animation
)
{}
override
fun
onAnimationEnd
(
animation
:
Animation
)
{
binding
.
vAnimatorTop
.
visibility
=
View
.
GONE
}
})
binding
.
vAnimatorTop
.
startAnimation
(
topAnim
)
}
}
}
\ No newline at end of file
app/src/main/res/layout/activity_word.xml
View file @
2fbdfe3a
...
...
@@ -7,9 +7,116 @@
android:fitsSystemWindows=
"true"
tools:context=
".ui.document.word.WordActivity"
>
<ViewAnimator
android:id=
"@+id/v_animator_top"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:background=
"@color/white"
app:layout_constraintTop_toTopOf=
"parent"
>
<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"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toStartOf=
"@id/tv_name"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:padding=
"15dp"
android:src=
"@mipmap/fanhui_b"
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
<TextView
android:id=
"@+id/tv_name"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:ellipsize=
"end"
android:singleLine=
"true"
android:textColor=
"@color/black"
android:textSize=
"19sp"
android:textStyle=
"bold"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toStartOf=
"@+id/iv_xuanzhuan"
app:layout_constraintStart_toEndOf=
"@id/fl_fanhui"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"HardcodedText"
tools:text=
"DEMO.docx"
/>
<ImageView
android:id=
"@+id/iv_xuanzhuan"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"16dp"
android:src=
"@mipmap/hengping"
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_toStartOf=
"@id/iv_more"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
/>
<ImageView
android:id=
"@+id/iv_more"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"16dp"
android:src=
"@mipmap/x_genduo"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
/>
<EditText
android:id=
"@+id/edit_search"
android:layout_width=
"0dp"
android:layout_height=
"40dp"
android:layout_marginStart=
"5dp"
android:layout_marginEnd=
"20dp"
android:background=
"@drawable/bg_f8f9fe_10"
android:hint=
"input..."
android:paddingHorizontal=
"18dp"
android:singleLine=
"true"
android:textColor=
"@color/black"
android:textColorHint=
"#B8B9BD"
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,TextFields"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</ViewAnimator>
<FrameLayout
android:id=
"@+id/mFlDocContainer"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
android:layout_height=
"0dp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/v_animator_top"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
library/src/main/java/com/cherry/lib/doc/widget/DocView.kt
View file @
2fbdfe3a
...
...
@@ -15,13 +15,7 @@ import android.view.ViewGroup
import
android.widget.FrameLayout
import
android.widget.RelativeLayout
import
android.widget.Toast
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.net.toUri
import
androidx.core.view.isVisible
import
androidx.lifecycle.LifecycleCoroutineScope
import
androidx.lifecycle.lifecycleScope
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
coil.load
import
com.blankj.utilcode.util.UriUtils
import
com.cherry.lib.doc.R
...
...
@@ -256,7 +250,7 @@ class DocView : FrameLayout {
mPoiViewer
=
PoiViewer
(
context
)
}
mPoiViewer
?.
loadFile
(
binding
.
mFlDocContainer
,
sourceFilePath
binding
.
mFlDocContainer
,
sourceFilePath
?:
""
)
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
...
...
library/src/main/java/com/cherry/lib/doc/widget/MyOnTouchLister.kt
0 → 100644
View file @
2fbdfe3a
package
com.cherry.lib.doc.widget
import
android.annotation.SuppressLint
import
android.util.Log
import
android.view.MotionEvent
import
android.view.View
import
kotlin.math.sqrt
const
val
TAP_THRESHOLD
=
200
const
val
TAP_INTERVAL
=
250
class
MyOnTouchLister
:
View
.
OnTouchListener
{
private
val
TAG
=
"MyOnTouchLister"
private
var
lastActionDownTime
=
0L
var
singleTapAction
:
(()
->
Unit
)?
=
null
private
var
lastX
=
0f
private
var
lastY
=
0f
@SuppressLint
(
"ClickableViewAccessibility"
)
override
fun
onTouch
(
v
:
View
,
event
:
MotionEvent
):
Boolean
{
Log
.
e
(
TAG
,
"onTouch"
)
when
(
event
.
action
)
{
MotionEvent
.
ACTION_DOWN
->
{
Log
.
e
(
TAG
,
"ACTION_DOWN"
)
lastActionDownTime
=
System
.
currentTimeMillis
()
// 记录按下时的位置
lastX
=
event
.
x
lastY
=
event
.
y
}
MotionEvent
.
ACTION_UP
->
{
val
flag1
=
(
System
.
currentTimeMillis
()
-
lastActionDownTime
)
<
TAP_INTERVAL
val
deltaX
=
event
.
x
-
lastX
val
deltaY
=
event
.
y
-
lastY
val
flag2
=
moveSqrt
(
deltaX
,
deltaY
)
<
TAP_THRESHOLD
if
(
flag1
&&
flag2
)
{
Log
.
e
(
TAG
,
"ACTION_UP flag1=$flag1 flag2=$flag2"
)
singleTapAction
?.
invoke
()
}
}
}
return
false
}
private
fun
moveSqrt
(
deltaX
:
Float
,
deltaY
:
Float
):
Double
{
return
sqrt
((
deltaX
*
deltaX
+
deltaY
*
deltaY
).
toDouble
())
}
}
\ No newline at end of file
library/src/main/java/com/cherry/lib/doc/widget/PoiViewer.kt
View file @
2fbdfe3a
This diff is collapsed.
Click to expand it.
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