如何使用 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()' 方法时存储此页面。
您可以使用以下方式存储页面信息:
- 共享首选项。
- 简单的 SQLite 数据库。
- 远程数据库,如果应用程序有 remote/online 后端。
每次调用onResume()
方法时,您可以获取最后一页信息并将其传递给pdf加载器或WebView,它会加载页码。如果无法检索页面信息,您可以加载pdf的第一页。
我目前正在开发一个 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()' 方法时存储此页面。
您可以使用以下方式存储页面信息:
- 共享首选项。
- 简单的 SQLite 数据库。
- 远程数据库,如果应用程序有 remote/online 后端。
每次调用onResume()
方法时,您可以获取最后一页信息并将其传递给pdf加载器或WebView,它会加载页码。如果无法检索页面信息,您可以加载pdf的第一页。