Commit 0dcd6c05 authored by wanglei's avatar wanglei

...

parent c6d34415
...@@ -7,19 +7,24 @@ import android.content.pm.ActivityInfo ...@@ -7,19 +7,24 @@ import android.content.pm.ActivityInfo
import android.view.View import android.view.View
import android.view.animation.Animation import android.view.animation.Animation
import android.view.animation.TranslateAnimation import android.view.animation.TranslateAnimation
import android.view.inputmethod.EditorInfo
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.widget.addTextChangedListener
import com.base.pdfviewerscannerwhite.bean.DocumentBean import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.databinding.ActivityWordBinding import com.base.pdfviewerscannerwhite.databinding.ActivityWordBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentMore import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentMore
import com.base.pdfviewerscannerwhite.utils.KeyBoardUtils.hideKeyboard import com.base.pdfviewerscannerwhite.utils.KeyBoardUtils.hideKeyboard
import com.base.pdfviewerscannerwhite.utils.KeyBoardUtils.showKeyBoard
import com.base.pdfviewerscannerwhite.utils.LogEx import com.base.pdfviewerscannerwhite.utils.LogEx
import com.cherry.lib.doc.bean.DocEngine 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_DOWN_ID
import com.cherry.lib.doc.office.constant.EventConstant.APP_PAGE_UP_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.WPControl
import com.cherry.lib.doc.office.wp.control.WPFind
import com.cherry.lib.doc.util.Constant import com.cherry.lib.doc.util.Constant
import java.io.File
class WordActivity : BaseActivity<ActivityWordBinding>() { class WordActivity : BaseActivity<ActivityWordBinding>() {
...@@ -35,6 +40,10 @@ class WordActivity : BaseActivity<ActivityWordBinding>() { ...@@ -35,6 +40,10 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
override fun initView() { override fun initView() {
initSpData(intent) initSpData(intent)
val file = File(wordDocumentBean.path)
binding.tvName.text = file.name
binding.mDocView.getPageNumberAction = { current, total -> binding.mDocView.getPageNumberAction = { current, total ->
LogEx.logDebug(TAG, "getPageNumberAction") LogEx.logDebug(TAG, "getPageNumberAction")
if (!binding.tvPageCount.isVisible) { if (!binding.tvPageCount.isVisible) {
...@@ -49,8 +58,10 @@ class WordActivity : BaseActivity<ActivityWordBinding>() { ...@@ -49,8 +58,10 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
if (isShowTopLayout) { if (isShowTopLayout) {
LogEx.logDebug(TAG, "hide") LogEx.logDebug(TAG, "hide")
hideTopLayout() hideTopLayout()
hideBottomLayout()
} else { } else {
showTopLayout() showTopLayout()
showBottomLayout()
LogEx.logDebug(TAG, "show") LogEx.logDebug(TAG, "show")
} }
} }
...@@ -59,6 +70,10 @@ class WordActivity : BaseActivity<ActivityWordBinding>() { ...@@ -59,6 +70,10 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
override fun initListener() { override fun initListener() {
super.initListener() super.initListener()
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
if (isSearchUI) {
cancelSearchUI()
return@addCallback
}
finishToMain() finishToMain()
} }
binding.flFanhui.setOnClickListener { binding.flFanhui.setOnClickListener {
...@@ -78,6 +93,72 @@ class WordActivity : BaseActivity<ActivityWordBinding>() { ...@@ -78,6 +93,72 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
// wpControl.actionEvent(APP_PAGE_UP_ID, null) // 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() { private fun switchOrientation() {
...@@ -90,6 +171,7 @@ class WordActivity : BaseActivity<ActivityWordBinding>() { ...@@ -90,6 +171,7 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
private var isShowTopLayout = true private var isShowTopLayout = true
private var isShowBottomLayout = false
private fun showTopLayout() { private fun showTopLayout() {
if (!isShowTopLayout) { if (!isShowTopLayout) {
isShowTopLayout = true isShowTopLayout = true
...@@ -109,6 +191,26 @@ class WordActivity : BaseActivity<ActivityWordBinding>() { ...@@ -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() { private fun hideTopLayout() {
if (isShowTopLayout) { if (isShowTopLayout) {
isShowTopLayout = false isShowTopLayout = false
...@@ -124,6 +226,23 @@ class WordActivity : BaseActivity<ActivityWordBinding>() { ...@@ -124,6 +226,23 @@ class WordActivity : BaseActivity<ActivityWordBinding>() {
} }
}) })
binding.vAnimatorTop.startAnimation(topAnim) 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 @@ ...@@ -142,4 +142,53 @@
app:layout_constraintTop_toBottomOf="@id/v_animator_top" app:layout_constraintTop_toBottomOf="@id/v_animator_top"
tools:text="1/3" /> 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> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -185,7 +185,6 @@ public class PDFLib ...@@ -185,7 +185,6 @@ public class PDFLib
* search content is this PDF document * search content is this PDF document
* *
* @param pageIndex page index (base 0) * @param pageIndex page index (base 0)
* @param str search content
* @return content is page location * @return content is page location
*/ */
public synchronized RectF[] searchContentSync(int pageIndex, String text) public synchronized RectF[] searchContentSync(int pageIndex, String text)
......
...@@ -470,7 +470,6 @@ public class Spreadsheet extends LinearLayout implements IFind, IReaderListener, ...@@ -470,7 +470,6 @@ public class Spreadsheet extends LinearLayout implements IFind, IReaderListener,
} }
/** /**
* @param findValue
* @return true: finded false: not finded * @return true: finded false: not finded
*/ */
public boolean find(String value) { public boolean find(String value) {
......
...@@ -47,7 +47,6 @@ public class WPFind implements IFind ...@@ -47,7 +47,6 @@ public class WPFind implements IFind
/** /**
* *
* @param query * @param query
* @param direction
* @return * @return
*/ */
public boolean find(String query) public boolean find(String query)
......
...@@ -1101,7 +1101,7 @@ public class Word extends LinearLayout implements IWord { ...@@ -1101,7 +1101,7 @@ public class Word extends LinearLayout implements IWord {
// 绘制器 // 绘制器
private Paint paint; private Paint paint;
// //
private WPFind wpFind; public WPFind wpFind;
// //
private Rectangle visibleRect; 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