adding a page counter at the pdf viewer

This commit is contained in:
tibbi
2022-12-10 20:54:44 +01:00
parent a84ccc2e23
commit db7d806c6f
2 changed files with 50 additions and 17 deletions

View File

@ -8,8 +8,9 @@ import android.print.PrintAttributes
import android.print.PrintManager import android.print.PrintManager
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import android.widget.RelativeLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.REAL_FILE_PATH import com.simplemobiletools.commons.helpers.REAL_FILE_PATH
import com.simplemobiletools.commons.helpers.isPiePlus import com.simplemobiletools.commons.helpers.isPiePlus
@ -58,7 +59,6 @@ class PDFViewerActivity : SimpleActivity() {
} }
private fun setupMenu() { private fun setupMenu() {
(pdf_viewer_appbar.layoutParams as RelativeLayout.LayoutParams).topMargin = statusBarHeight
pdf_viewer_toolbar.menu.apply { pdf_viewer_toolbar.menu.apply {
findItem(R.id.menu_print).isVisible = realFilePath.isNotEmpty() findItem(R.id.menu_print).isVisible = realFilePath.isNotEmpty()
findItem(R.id.menu_print).setOnMenuItemClickListener { findItem(R.id.menu_print).setOnMenuItemClickListener {
@ -71,20 +71,29 @@ class PDFViewerActivity : SimpleActivity() {
finish() finish()
} }
setupViewOffsets()
val primaryColor = getProperPrimaryColor()
page_counter.background?.applyColorFilter(primaryColor)
page_counter.setTextColor(primaryColor.getContrastColor())
}
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
setupViewOffsets()
}
private fun setupViewOffsets() {
val pageCounterMargin = resources.getDimension(R.dimen.normal_margin).toInt()
(pdf_viewer_appbar.layoutParams as ConstraintLayout.LayoutParams).topMargin = statusBarHeight
if (!portrait && navigationBarOnSide && navigationBarWidth > 0) { if (!portrait && navigationBarOnSide && navigationBarWidth > 0) {
pdf_viewer_appbar.setPadding(0, 0, navigationBarWidth, 0) pdf_viewer_appbar.setPadding(0, 0, navigationBarWidth, 0)
} else { } else {
pdf_viewer_appbar.setPadding(0, 0, 0, 0) pdf_viewer_appbar.setPadding(0, 0, 0, 0)
} }
}
override fun onConfigurationChanged(newConfig: Configuration) { (page_counter.layoutParams as ConstraintLayout.LayoutParams).apply {
super.onConfigurationChanged(newConfig) rightMargin = navigationBarWidth + pageCounterMargin
(pdf_viewer_appbar.layoutParams as RelativeLayout.LayoutParams).topMargin = statusBarHeight bottomMargin = navigationBarHeight + pageCounterMargin
if (!portrait && navigationBarOnSide && navigationBarWidth > 0) {
pdf_viewer_appbar.setPadding(0, 0, navigationBarWidth, 0)
} else {
pdf_viewer_appbar.setPadding(0, 0, 0, 0)
} }
} }
@ -103,6 +112,14 @@ class PDFViewerActivity : SimpleActivity() {
pdf_viewer.orientation = ViewPager2.ORIENTATION_VERTICAL pdf_viewer.orientation = ViewPager2.ORIENTATION_VERTICAL
pdf_viewer.adapter = PDFPagerAdapter(this, clickListener, errorHandler, uri.toString(), getProperBackgroundColor()) pdf_viewer.adapter = PDFPagerAdapter(this, clickListener, errorHandler, uri.toString(), getProperBackgroundColor())
pdf_viewer.registerOnPageChangeCallback(object : OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
updatePageCounter(position)
}
})
updatePageCounter(0)
page_counter.beVisible()
showSystemUI(true) showSystemUI(true)
@ -112,6 +129,10 @@ class PDFViewerActivity : SimpleActivity() {
} }
} }
private fun updatePageCounter(position: Int) {
page_counter.text = "${position + 1} / ${pdf_viewer.adapter?.itemCount}"
}
private fun printText() { private fun printText() {
val adapter = PdfDocumentAdapter(this, realFilePath) val adapter = PdfDocumentAdapter(this, realFilePath)
@ -131,6 +152,7 @@ class PDFViewerActivity : SimpleActivity() {
showSystemUI(true) showSystemUI(true)
} }
page_counter.animate().alpha(newAlpha).start()
top_shadow.animate().alpha(newAlpha).start() top_shadow.animate().alpha(newAlpha).start()
pdf_viewer_appbar.animate().alpha(newAlpha).withStartAction { pdf_viewer_appbar.animate().alpha(newAlpha).withStartAction {
if (newAlpha == 1f) { if (newAlpha == 1f) {

View File

@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pdf_viewer_wrapper" android:id="@+id/pdf_viewer_wrapper"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"> app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.viewpager2.widget.ViewPager2 <androidx.viewpager2.widget.ViewPager2
@ -15,18 +16,28 @@
android:id="@+id/top_shadow" android:id="@+id/top_shadow"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/top_shadow_height" android:layout_height="@dimen/top_shadow_height"
android:layout_alignParentTop="true"
android:background="@drawable/gradient_background_flipped" android:background="@drawable/gradient_background_flipped"
android:contentDescription="@null" /> android:contentDescription="@null"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/page_counter"
style="@style/ColoredButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:text="1/3" />
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/pdf_viewer_appbar" android:id="@+id/pdf_viewer_appbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:elevation="0dp" android:elevation="0dp"
app:elevation="0dp"> app:elevation="0dp"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/pdf_viewer_toolbar" android:id="@+id/pdf_viewer_toolbar"
@ -36,4 +47,4 @@
app:navigationIcon="@drawable/ic_arrow_left_vector" /> app:navigationIcon="@drawable/ic_arrow_left_vector" />
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
</RelativeLayout> </androidx.constraintlayout.widget.ConstraintLayout>