Commit c01833f8 authored by wanglei's avatar wanglei

...

parent bfe2518c
package com.artifex.mupdf.viewer
import android.annotation.SuppressLint
import android.net.Uri
import android.util.DisplayMetrics
import android.view.View
......@@ -8,13 +9,23 @@ import android.view.inputmethod.InputMethodManager
import androidx.activity.addCallback
import androidx.core.view.isVisible
import androidx.core.widget.addTextChangedListener
import com.base.pdfviewerscannerwhite.bean.PdfPageBean
import com.base.pdfviewerscannerwhite.databinding.ActivityPdfTestBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfPagerAdapter
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfPresenter
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfView
import com.base.pdfviewerscannerwhite.utils.LogEx
/**
* [com.artifex.mupdf.viewer.DocumentActivity]
*/
class PdfTestActivity : BaseActivity<ActivityPdfTestBinding>() {
class PdfTestActivity : BaseActivity<ActivityPdfTestBinding>(), PdfView {
private val TAG = "PdfTestActivity"
private lateinit var pdfPresenter: PdfPresenter
private lateinit var adapter: PdfPagerAdapter
private var core: MuPDFCore? = null
private lateinit var readerView: ReaderView
......@@ -23,8 +34,8 @@ class PdfTestActivity : BaseActivity<ActivityPdfTestBinding>() {
//居然是这样实现的
private var mFlatOutline: ArrayList<OutlineActivity.Item>? = null
private var mLayoutW = 312
private var mLayoutH = 504
private var mLayoutW = 440
private var mLayoutH = 660
private var mDisplayDPI = 0
private val mLayoutEM = 10
......@@ -34,17 +45,22 @@ class PdfTestActivity : BaseActivity<ActivityPdfTestBinding>() {
}
private var uri: String = ""
private var size = -1L
private var path: String = ""
override fun initView() {
pdfPresenter = PdfPresenter(this, this)
val metrics = DisplayMetrics()
windowManager.defaultDisplay.getMetrics(metrics)
mDisplayDPI = metrics.densityDpi
uri = intent.extras?.getString("uri") ?: ""
path = intent.extras?.getString("path") ?: ""
size = intent.extras?.getLong("size") ?: -1L
initAdapter()
core = openCore()
initSearchTask()
......@@ -52,11 +68,20 @@ class PdfTestActivity : BaseActivity<ActivityPdfTestBinding>() {
} else {
initReaderView()
pdfPresenter.iniPdfPage(path)
}
}
private fun initAdapter() {
adapter = PdfPagerAdapter(path)
adapter.clickAction = { pageIndex ->
}
binding.rvPager.adapter = adapter
}
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
......@@ -136,9 +161,18 @@ class PdfTestActivity : BaseActivity<ActivityPdfTestBinding>() {
return MuPDFCore(ContentInputStream(this.contentResolver, Uri.parse(uri), size), "application/pdf")
}
@SuppressLint("SetTextI18n")
private fun initReaderView() {
binding.tvPageCount.text = "1/${core?.countPages()}"
readerView = object : ReaderView(this) {
@SuppressLint("SetTextI18n")
override fun onMoveToChild(i: Int) {
LogEx.logDebug(TAG, "onMoveToChild $i")
binding.tvPageCount.text = "${i + 1}/${core?.countPages()}"
super.onMoveToChild(i)
}
override fun onTapMainDocArea() {
super.onTapMainDocArea()
......@@ -154,8 +188,9 @@ class PdfTestActivity : BaseActivity<ActivityPdfTestBinding>() {
refresh()
}
}
}
}
readerView.adapter = PageAdapter(this, core)
......@@ -181,4 +216,8 @@ class PdfTestActivity : BaseActivity<ActivityPdfTestBinding>() {
super.onResume()
}
override fun initPdfPageRv(items: List<PdfPageBean>) {
adapter.submitList(items)
}
}
\ No newline at end of file
......@@ -56,6 +56,7 @@ class DocumentFragment() : BaseFragment<FragmentDocumentBinding>(), DocumentView
// putExtra("path", path)
// })
val intent: Intent = Intent(requireContext(), PdfTestActivity::class.java)
intent.putExtra("path", item.path)
intent.putExtra("uri", item.uri.toString())
val size = File(item.path).length()
intent.putExtra("size", size)
......
......@@ -108,9 +108,9 @@
android:id="@+id/rv_pager"
android:layout_width="match_parent"
android:layout_height="88dp"
android:orientation="horizontal"
android:paddingHorizontal="4dp"
android:paddingTop="5dp"
android:orientation="horizontal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/pdfview"
......
......@@ -8,15 +8,8 @@
android:background="@color/white"
tools:context="com.artifex.mupdf.viewer.PdfTestActivity">
<RelativeLayout
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="match_parent">
</RelativeLayout>
<ViewAnimator
android:id="@+id/v_animator_top"
android:layout_width="match_parent"
android:layout_height="60dp"
app:layout_constraintTop_toTopOf="parent">
......@@ -116,5 +109,49 @@
</ViewAnimator>
<RelativeLayout
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@id/v_animator_bottom"
app:layout_constraintTop_toBottomOf="@id/v_animator_top">
</RelativeLayout>
<TextView
android:id="@+id/tv_pageCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:layout_marginTop="28dp"
android:background="@drawable/bg_54585b_5"
android:includeFontPadding="false"
android:paddingHorizontal="2dp"
android:paddingVertical="2dp"
android:textColor="@color/white"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/rl"
tools:text="1/3" />
<ViewAnimator
android:id="@+id/v_animator_bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_pager"
android:layout_width="match_parent"
android:layout_height="88dp"
android:orientation="horizontal"
android:paddingHorizontal="4dp"
android:paddingTop="5dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/pdfview"
tools:listitem="@layout/item_pdf_pager" />
</ViewAnimator>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
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