如何使用 Android studio 在 pdf 应用程序中显示当前阅读页面

How can i display the current reading page in a pdf App using Android studio

我目前正在开发一个 pdf reader 应用程序,我希望该应用程序显示当前阅读页面,以防该应用程序关闭并再次打开。 我正在使用这种依赖 实施 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1'

这里是 Kotlin 的帮助,在 onDestroy() 的 SharedPreferences 中保存您的页码。当您打开您的应用程序时然后从 SharedPreferences 获取页码并加载 pdf。

MainActivity.kt

 class MainActivity : AppCompatActivity() {
    private var defaultPage = 0
     override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            defaultPage = getPageNumber() // get value form SharedPreferences
            loadPdfViewer()
    
        }
    
    private fun loadPdfViewer() {
            pdfView.fromFile(pdfPath)
                .enableSwipe(true) // allows to block changing pages using swipe
                .swipeHorizontal(false)
                .enableDoubletap(true)
                .defaultPage(defaultPage)
                .enableAntialiasing(true) // improve rendering a little bit on low-res screens
                // spacing between pages in dp. To define spacing color, set view background
                .spacing(5)
                .onError {
                    // do something
                }
                .autoSpacing(false) // add dynamic spacing to fit each page on its own on the screen
                .pageFitPolicy(FitPolicy.WIDTH) // mode to fit pages in the view
                .nightMode(false) // toggle night mode
                .load()
    
        }
    
       override fun onDestroy() {
            super.onDestroy()
            defaultPage = pdfView.currentPage
            // save this defaultPage number in SharedPreferences
            setPageNumber(defaultPage )
        }

fun getPageNumber(): Int {
        val sharedPreferences = getSharedPreferences("pageNumberPrefs", Context.MODE_PRIVATE)
        return sharedPreferences.getInt("pageNumberValue", 0)
    }

    fun setPageNumber(pageNumber: Int) {
        val sharedPreferences = getSharedPreferences("pageNumberPrefs", Context.MODE_PRIVATE)
        val sharedPreferencesEditor = sharedPreferences.edit()
        sharedPreferencesEditor.putInt("pageNumberValue", pageNumber)
        sharedPreferencesEditor.apply()
    }
    }

你可以用简单的逻辑来做到这一点。

假设这是一个离线或在线应用程序。每次加载 pdf 页面时,每次用户打开新页面或返回上一页时,您都可以获得页码。您可以在调用 onDestroy() 或 'onStop()' 方法时存储此页面。

您可以使用以下方式存储页面信息:

  1. 共享首选项。
  2. 简单的 SQLite 数据库。
  3. 远程数据库,如果应用程序有 remote/online 后端。

每次调用onResume()方法时,您可以获取最后一页信息并将其传递给pdf加载器或WebView,它会加载页码。如果无法检索页面信息,您可以加载pdf的第一页。