Commit 0dcd6c05 authored by wanglei's avatar wanglei

...

parent c6d34415
......@@ -7,19 +7,24 @@ import android.content.pm.ActivityInfo
import android.view.View
import android.view.animation.Animation
import android.view.animation.TranslateAnimation
import android.view.inputmethod.EditorInfo
import androidx.activity.addCallback
import androidx.core.view.isVisible
import androidx.core.widget.addTextChangedListener
import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.databinding.ActivityWordBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentMore
import com.base.pdfviewerscannerwhite.utils.KeyBoardUtils.hideKeyboard
import com.base.pdfviewerscannerwhite.utils.KeyBoardUtils.showKeyBoard
import com.base.pdfviewerscannerwhite.utils.LogEx
import com.cherry.lib.doc.bean.DocEngine
import com.cherry.lib.doc.office.constant.EventConstant.APP_PAGE_DOWN_ID
import com.cherry.lib.doc.office.constant.EventConstant.APP_PAGE_UP_ID
import com.cherry.lib.doc.office.wp.control.WPControl
import com.cherry.lib.doc.office.wp.control.WPFind
import com.cherry.lib.doc.util.Constant
import java.io.File
class WordActivity : BaseActivity<ActivityWordBinding>() {
......@@ -35,6 +40,10 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
override fun initView() {
initSpData(intent)
val file = File(wordDocumentBean.path)
binding.tvName.text = file.name
binding.mDocView.getPageNumberAction = { current, total ->
LogEx.logDebug(TAG, "getPageNumberAction")
if (!binding.tvPageCount.isVisible) {
......@@ -49,8 +58,10 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
if (isShowTopLayout) {
LogEx.logDebug(TAG, "hide")
hideTopLayout()
hideBottomLayout()
} else {
showTopLayout()
showBottomLayout()
LogEx.logDebug(TAG, "show")
}
}
......@@ -59,6 +70,10 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
if (isSearchUI) {
cancelSearchUI()
return@addCallback
}
finishToMain()
}
binding.flFanhui.setOnClickListener {
......@@ -78,6 +93,72 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
// wpControl.actionEvent(APP_PAGE_UP_ID, null)
}
}
binding.ivSearch.setOnClickListener {
showSearchUI()
}
binding.editSearch.addTextChangedListener {
binding.mDocView.visibility = View.VISIBLE
binding.tvPageCount.visibility = View.VISIBLE
haveSearchResult = false
hideBottomLayout()
val wpControl: WPControl = (binding.mDocView.iOffice?.control?.appControl as WPControl)
(wpControl.find as WPFind).resetSearchResult()
}
binding.editSearch.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
// Perform your action here
searchWord()
return@setOnEditorActionListener true
}
false
}
binding.flPre.setOnClickListener {
val wpControl: WPControl = (binding.mDocView.iOffice?.control?.appControl as WPControl)
(wpControl.find as WPFind).findBackward()
hideBottomLayout()
}
binding.flNext.setOnClickListener {
val wpControl: WPControl = (binding.mDocView.iOffice?.control?.appControl as WPControl)
(wpControl.find as WPFind).findForward()
}
}
private var haveSearchResult: Boolean = false
private fun searchWord() {
val text = binding.editSearch.text
if (text.isNullOrEmpty()) {
return
}
val wpControl: WPControl = (binding.mDocView.iOffice?.control?.appControl as WPControl)
val flag = (wpControl.find as WPFind).find(text.toString())
haveSearchResult = flag
if (flag) {
hideKeyboard(binding.editSearch)
showBottomLayout()
} else {
binding.mDocView.visibility = View.GONE
}
}
private var isSearchUI: Boolean = false
private fun showSearchUI() {
isSearchUI = true
binding.ivXuanzhuan.visibility = View.GONE
binding.tvPageCount.visibility = View.GONE
binding.ivMore.visibility = View.GONE
binding.tvName.visibility = View.INVISIBLE
binding.editSearch.visibility = View.VISIBLE
showKeyBoard(binding.editSearch)
}
private fun cancelSearchUI() {
isSearchUI = false
binding.editSearch.visibility = View.GONE
binding.ivXuanzhuan.visibility = View.VISIBLE
binding.ivMore.visibility = View.VISIBLE
binding.tvName.visibility = View.VISIBLE
}
private fun switchOrientation() {
......@@ -90,6 +171,7 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
private var isShowTopLayout = true
private var isShowBottomLayout = false
private fun showTopLayout() {
if (!isShowTopLayout) {
isShowTopLayout = true
......@@ -109,6 +191,26 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
}
}
private fun showBottomLayout() {
if (isSearchUI && haveSearchResult) {
val bottomAnim: Animation = TranslateAnimation(0f, 0f, binding.vAnimatorBottom.height.toFloat(), 0f)
bottomAnim.duration = 200
bottomAnim.setAnimationListener(object : Animation.AnimationListener {
override fun onAnimationStart(animation: Animation) {
binding.vAnimatorBottom.visibility = View.VISIBLE
}
override fun onAnimationRepeat(animation: Animation) {}
override fun onAnimationEnd(animation: Animation) {
}
})
binding.vAnimatorBottom.startAnimation(bottomAnim)
}
}
private fun hideTopLayout() {
if (isShowTopLayout) {
isShowTopLayout = false
......@@ -124,6 +226,23 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
}
})
binding.vAnimatorTop.startAnimation(topAnim)
}
}
private fun hideBottomLayout() {
if (isSearchUI) {
val bottomAnim: Animation = TranslateAnimation(0f, 0f, 0f, binding.vAnimatorBottom.height.toFloat())
bottomAnim.duration = 200
bottomAnim.setAnimationListener(object : Animation.AnimationListener {
override fun onAnimationStart(animation: Animation) {}
override fun onAnimationRepeat(animation: Animation) {}
override fun onAnimationEnd(animation: Animation) {
binding.vAnimatorBottom.visibility = View.GONE
}
})
binding.vAnimatorBottom.startAnimation(bottomAnim)
}
}
......
......@@ -142,4 +142,53 @@
app:layout_constraintTop_toBottomOf="@id/v_animator_top"
tools:text="1/3" />
<ViewAnimator
android:visibility="gone"
android:id="@+id/v_animator_bottom"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_50"
android:layout_alignParentBottom="true"
android:background="@color/white"
app:layout_constraintBottom_toBottomOf="parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="UselessParent">
<FrameLayout
android:id="@+id/fl_pre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:layout_marginStart="20dp"
android:padding="10dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/left"
tools:ignore="ContentDescription" />
</FrameLayout>
<FrameLayout
android:id="@+id/fl_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="20dp"
android:padding="10dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/right"
tools:ignore="ContentDescription" />
</FrameLayout>
</FrameLayout>
</ViewAnimator>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -185,7 +185,6 @@ public class PDFLib
* search content is this PDF document
*
* @param pageIndex page index (base 0)
* @param str search content
* @return content is page location
*/
public synchronized RectF[] searchContentSync(int pageIndex, String text)
......
......@@ -470,7 +470,6 @@ public class Spreadsheet extends LinearLayout implements IFind, IReaderListener,
}
/**
* @param findValue
* @return true: finded false: not finded
*/
public boolean find(String value) {
......
......@@ -47,7 +47,6 @@ public class WPFind implements IFind
/**
*
* @param query
* @param direction
* @return
*/
public boolean find(String query)
......
......@@ -1101,7 +1101,7 @@ public class Word extends LinearLayout implements IWord {
// 绘制器
private Paint paint;
//
private WPFind wpFind;
public WPFind wpFind;
//
private Rectangle visibleRect;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment