如何使用安卓工作室在pdf应用程序中显示当前阅读页面



我目前正在开发一个pdf阅读器应用程序,我希望该应用程序在关闭并重新打开时显示当前阅读页面。我正在使用此依赖项实现'com.github.barteksc:android pdf查看器:3.2.0-beta 1'

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

主活动.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. 远程数据库,如果应用程序具有远程/在线后端

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

最新更新