Android framework 5
5.0.0-rc.1 (2025-11-14)
These release notes describe the changes since 4.6.0.
New features
Added the new renderer
ContinuousScrollthat shows all documents in a single vertical scrolling view.Added a new event listener for the
ReaderView,OnReadingAreaRangeChangedListener, which you can use to get notified when the reading area range changes. You can retrieve the updated value using the new property,ReaderView.readingAreaRange. Note that for paginated renderers the reading area range is the same as the visible range.Note: We have marked
ReaderView.readingAreaRangeand its corresponding listenerOnReadingAreaRangeChangedListeneras experimental APIs as we may change the definition of the Reading Area based on your feedback.
Added a new
ReaderView.goTo()optionscrollRendererScrollBehaviorto control how scroll renderers behave when the target position is already visible in theReaderView.Scroll renderers can now smoothly scroll to nearby positions. The duration of the smooth scrolling can be controlled with the renderer options
scrollAnimationDurationMsandscrollAnimationMaxDistance. Please refer to the API documentation for more information.Added a new listener method,
OnRendererScrollEventListener.onRendererScrollChanged(event: RendererScrollEngineEventData), which is called continuously while scroll renderers are scrolling.Changed the
OnRendererScrollEventListener.onRendererScrollStarted(event: RendererScrollEngineEventData)parameter type toRendererScrollEngineEventData. It is now possible to determine whether scrolling was initiated by the user by inspecting theuserGeneratedproperty.Added a new renderer option
swipeNavigationGestureThreshold. This option can be used to configure the swipe distance required to perform a swipe navigation. Additionally, swipe animations have been refined to start more smoothly.Added a new option to
ReaderView.scrollBy()calledsetReadingPositionToReadingAreaStart. When set totrue, the reading position moves to the start of the new Reading Area after scrolling, instead of staying until it leaves the visible range. This is now the default behavior ofscrollBy()Added support for EPUB switch/case elements.
Breaking changes
Upgraded KGP version to 2.1.21, AGP version to 8.7.3 and Gradle version: 8.9
Compiling with Java 11:
sourceCompatibility: 11targetCompatibility: 11jvmTarget: 11
The minimum supported WebView version is now Chrome 64.
ColibrioResult.onSuccesshas been split into two overloads for better coroutine support:onSuccess(action: (T) -> Unit): ColibrioResult<T>— for regular actionsonSuccessSuspend(action: suspend (T) -> Unit): ColibrioResult<T>— for suspending actions
If you were previously callingonSuccess { someSuspendFunction() }, switch toonSuccessSuspend.
ColibrioResult.onErrorhas been split into two overloads for better coroutine support:onError(action: (exception: ColibrioException) -> Unit): ColibrioResult<T>— for regular actionsonErrorSuspend(action: suspend (exception: ColibrioException) -> Unit): ColibrioResult<T>— for suspending actions
If you were previously callingonError { someSuspendFunction() }, switch toonErrorSuspend.
Reordered properties alphabetically in all
Rendereroptions:FlipBookRendererOptionsSingleDocumentScrollRendererOptionsSinglePageSwipeRendererOptionsSpreadSwipeRendererOptionsStackRendererOptions
The
ContainerContentBlockTypeenum entryMATHML_SUB_SUPERSCRIPTwas renamed toMATHML_SUBSUP_SCRIPTto be consistent with its value.
Changes to default options
EpubReaderPublicationOptions.documentSectioningOptions.enabledhas changed fromfalsetotrue.ReaderViewOptions.pageProgressionTimelineOptions.enabledhas changed fromtruetofalse.ReaderPublicationOptions.reflowOptions.unforcedTextBreak.widows.minLineshas changed from3to2.
If you are using PageProgressionTimeline, in addition to enabling it, you must also:
Set
EpubReaderPublicationOptions.documentSectioningOptions.enabledto false
or
Set
ReaderViewOptions.pageProgressionTimelineOptions.forceCompleteRenditionto true
Removed old deprecated types and members
ColibrioAudioPlayer.setMediaSessoinMetaData(mediaSessionMetadata: ColibrioMediaSessionMetadata)Use setter for
ColibrioAudioPlayer.mediaSession.metaData
ColibrioAudioPlayer.setMediaCommands(mediaCommands: ColibrioMediaCommands)Use setter for
ColibrioAudioPlayer.mediaSession.mediaCommands
FetchNavigationItemReferencesResultDataUse
FetchNavigationItemReferencesResult
ReaderPublicationNavigationDataUse
ReaderPublicationNavigation
ReaderPublicationNavigationCollectionDataUse
ReaderPublicationNavigationCollection
ReaderPublicationNavigationItemDataUse
ReaderPublicationNavigationItem
ReaderPublicationNavigationItemReferenceDataUse
ReaderPublicationNavigationItemReference
SyncMediaPlayer.approximateElapsedTimeUse
SyncMediaPlayer.approximateElapsedTimeMs
SyncMediaPlayer.playingUse
!(SyncMediaPlayer.paused) && (SyncMediaPlayer.ready)
VisiblePageDataUse
VisiblePage
ReaderView.fetchRectsForVisibleContent(visiblePage: VisiblePageData, locator: SimpleLocatorData?, options: VisibleContentRectsOptions, onSuccess: (VisibleContentRectsResultData) -> Unit, onError: (ColibrioException) -> Unit)Use
VisiblePage.fetchRectsForVisibleContent(locator: SimpleLocatorData?, options: VisibleContentRectsOptions, onSuccess: (VisibleContentRectsResultData) -> Unit, onError: (ColibrioException) -> Unit)
ReaderView.fetchRectsForVisibleContent(visiblePage: VisiblePageData, locator: SimpleLocatorData?, options: VisibleContentRectsOptions): ColibrioResult<VisibleContentRectsResultData>Use
VisiblePage.fetchRectsForVisibleContent(locator: SimpleLocatorData?, options: VisibleContentRectsOptions): ColibrioResult<VisibleContentRectsResultData>
Setter for
ReaderView.syncMediaPlayerUse
ReaderView.setSyncMediaPlayer(syncMediaPlayer: SyncMediaPlayer?, initialSyncMethod: SyncMediaReaderViewSynchronizationMethod)
ReadingSystemEngine.addOnLicenseEventListener(listener: OnLicenseEventListener)Use
ColibrioReaderFramework.addOnLicenseEventListener(listener: OnLicenseEventListener)
ReadingSystemEngine.removeOnLicenseEventListener(listener: OnLicenseEventListener)Use
ColibrioReaderFramework.removeOnLicenseEventListener(listener: OnLicenseEventListener)
ReadingSystemEngine.createZipResourceProvider(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions, onSuccess: (ZipResourceProvider) -> Unit, onError: (ColibrioException) -> Unit)Use ZipResourceProvider.create(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions) : ColibrioResult<ZipResourceProvider>
ReadingSystemEngine.createZipResourceProvider(dataSource: RandomAccessDataSource,zipResourceProviderOptions: ZipResourceProviderOptions)Use ZipResourceProvider.create(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions) : ColibrioResult<ZipResourceProvider>
ZipResourceProvider.create(dataSource: RandomAccessDataSource, serializedZipArchiveInformation: ByteArray, chunkCacheSize: Int, onSuccess: (ZipResourceProvider) -> Unit, onError: (ColibrioException) -> Unit)Use
ZipResourceProvider.create(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions): ColibrioResult<ZipResourceProvider>
ZipResourceProvider.create(dataSource: RandomAccessDataSource, serializedZipArchiveInformation: ByteArray, chunkCacheSize: Int) : ColibrioResult<ZipResourceProvider>Use
ZipResourceProvider.create(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions) : ColibrioResult<ZipResourceProvider>
Deprecations
The renderer option
ignoreAspectRatiohas been deprecated in allRendereroptions. Please useReaderViewOptions.contentDisplayAreaOptionsinstead.
Bug fixes
Fixed issue with native audio playback not responding to next and previous buttons on headphones for example.
Fixed issue with parsing WP manifest.
Fixed an issue with pinch-zooming in PDFs containing many links. Previously, if one finger was on a link, pinch-zooming failed.