All Projects → JSpiner → epub-viewer

JSpiner / epub-viewer

Licence: MIT license
android epub viewer

Programming Languages

kotlin
9241 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to epub-viewer

kthoom
Comic Book Reader in the Browser
Stars: ✭ 97 (+203.13%)
Mutual labels:  epub, epub-reader
termpub
Epubreader for the terminal
Stars: ✭ 25 (-21.87%)
Mutual labels:  epub, epub-reader
iRead
iRead is an EPUB reader for iOS written in Swift
Stars: ✭ 83 (+159.38%)
Mutual labels:  epub, epub-reader
R2D2BC
https://d-i-t-a.github.io/R2D2BC/
Stars: ✭ 27 (-15.62%)
Mutual labels:  epub, epub-reader
EveReader
Epub Reader, focused on annotation.
Stars: ✭ 68 (+112.5%)
Mutual labels:  epub, epub-reader
Folioreader Android
A Java ePub reader and parser framework for Android.
Stars: ✭ 2,025 (+6228.13%)
Mutual labels:  epub, epub-reader
jorkens
epub reader based on epub.js for foreign language learners
Stars: ✭ 35 (+9.38%)
Mutual labels:  epub, epub-reader
Folioreaderkit
📚 A Swift ePub reader and parser framework for iOS.
Stars: ✭ 2,382 (+7343.75%)
Mutual labels:  epub, epub-reader
onesync-reader-app
Cross-platform ebook reader built using Xamarin.Forms
Stars: ✭ 33 (+3.13%)
Mutual labels:  epub, epub-reader
readium-css
🌈 A set of reference stylesheets for EPUB Reading Systems, starting with Readium Mobile
Stars: ✭ 78 (+143.75%)
Mutual labels:  epub, epub-reader
YTS
YTS site sample app written in Java & Kotlin, implemented with MVP pattern and powered by Rx.
Stars: ✭ 42 (+31.25%)
Mutual labels:  rxjava2
react-native-ebook
React Native E-book (.mobi, .epub)
Stars: ✭ 45 (+40.63%)
Mutual labels:  epub
rxjava2 retrofit2
rxjava2+retrofit2 网络封装
Stars: ✭ 19 (-40.62%)
Mutual labels:  rxjava2
GuildWars2 APIViewer
Guild Wars 2 API Viewer: An Android application used for viewing various Guild Wars 2 API endpoint responses. Developed utilizing MVVM architecture, in conjunction with Databinding, Dagger 2, Retrofit 2, and RxJava 2.
Stars: ✭ 53 (+65.63%)
Mutual labels:  rxjava2
client-java
Asynchronous client for Java-based agents
Stars: ✭ 17 (-46.87%)
Mutual labels:  rxjava2
acsm-calibre-plugin
Calibre plugin for ACSM->EPUB and ACSM->PDF conversion.
Stars: ✭ 118 (+268.75%)
Mutual labels:  epub
Kingpin
📖 EPUB и PDF версии перевода книги Kingpin (Кевин Поулсен)
Stars: ✭ 18 (-43.75%)
Mutual labels:  epub
plato
Document reader
Stars: ✭ 117 (+265.63%)
Mutual labels:  epub
NewsApiMvvm
Architecture Components + MVVM + Kotlin + RxJava2 + Dagger2
Stars: ✭ 33 (+3.13%)
Mutual labels:  rxjava2
Kotlin-MVVM-JetPack
[DEPRECATED. USE https://github.com/egek92/Kotlin-MVVM-Jetpack-Hilt-Coroutines-Flow] Clean Android architecture guidelines that are based on MVVM + Offline 1st approach with LiveData and Room
Stars: ✭ 73 (+128.13%)
Mutual labels:  rxjava2

epub-viewer

Build Status Codacy Badge

epub file viewer android application

BEYOND GOOD AND EVIL 책에선 정상 동작이 확인되어 해당 서적으로 테스트해보시면 원활한 결과를 보실 수 있습니다.

Preview

screenshot-1 screenshot-2 screenshot-3
screenshot-4 screenshot-5 screenshot-6

Spec

  • DRM 없는 EPUB 파일 열람
  • EPUB 콘텐츠의 처음부터 끝까지 볼 수 있어야함
  • 뷰어 내에서 EPUB 파일에 포함되어 있는 책 제목, 저자명, 목차 목록 등이 표시되어야함
  • 목차 목록에서 목차 선택 시 해당 위치로 이동이 가능해야함
  • Slider 혹은 Seek bar 형태의 UI를 통한 네비게이션이 가능해야함
  • 스크롤 보기, 페이지 넘겨 보기 방식이 모두 가능해야함
    • 중간에 보기 방식을 전환할 때 보던 위치가 반드시 유지될 필요는 없음
  • (추가스펙) 본문 내 검색 기능
  • (추가스펙) 보기 방식 전환 시 보던 위치 유지

Structure

├── dto
│   ├── Epub.kt
│   ├── LoadData.kt
│   ├── PageInfo.kt
│   ├── SearchResult.kt
│   └── ViewerType.kt
├── paginator
│   ├── PagePaginator.kt
│   ├── Paginator.kt
│   └── ScrollPaginator.kt
├── ui
│   ├── base
│   │   ├── BaseActivity.kt
│   │   ├── BaseFragment.kt
│   │   ├── BaseView.kt
│   │   ├── BaseViewModel.kt
│   │   └── EpubWebClient.kt
│   ├── common
│   │   └── LoadingDialog.kt
│   ├── etc
│   │   ├── EtcActivity.kt
│   │   └── EtcViewModel.kt
│   ├── library
│   │   ├── LibraryActivity.kt
│   │   ├── LibraryAdapter.kt
│   │   ├── LibraryViewHolder.kt
│   │   └── LibraryViewModel.kt
│   ├── reader
│   │   ├── ReaderActivity.kt
│   │   ├── ReaderViewModel.kt
│   │   ├── strategy
│   │   │   ├── PageTypeStrategy.kt
│   │   │   ├── ScrollTypeStrategy.kt
│   │   │   └── ViewerTypeStrategy.kt
│   │   ├── toolbox
│   │   │   └── ToolboxView.kt
│   │   └── viewer
│   │       ├── EpubLoadingView.kt
│   │       ├── EpubPagerAdapter.kt
│   │       ├── EpubView.kt
│   │       ├── ScrollStatus.kt
│   │       ├── BiDirectionViewPager.kt
│   │       └── WebContainerFragment.kt
│   └── search
│       ├── SearchActivity.kt
│       ├── SearchAdapter.kt
│       ├── SearchViewHolder.kt
│       ├── SearchViewModel.kt
│       └── finder
│           ├── PageFinder.kt
│           ├── PagePageFinder.kt
│           └── ScrollPageFinder.kt
└── util
    ├── BindingAdapter.kt
    ├── LazyUtil.kt
    ├── LifecycleTransformer.kt
    └── ViewUtil.kt
  • ui/library : 서재 페이지
  • ui/reader : 뷰어 페이지
  • ui/etc : 기타 페이지

Reader Layout 구조

└── ReaderActivity
    └── FrameLayout
        ├── EpubView
        │   └── ViewPager
        │       └── WebFragment
        │           └── WebView
        └── ToolboxView

Paginator

가상의 WebView를 통해 렌더링 될 내용의 길이를 구하고 그를 통해 페이지수를 계산합니다.

ScrollPaginator

WebView를 통해 컨텐츠를 렌더링하고 scroll height를 구합니다.

Performance

BEYOND GOOD AND EVIL.epub 파일로(약 300쪽) worker 갯수별 퍼포먼스 체크를 하였습니다.

  • 테스트 기기 : Galaxy S8
  • 테스트 파일 : BEYOND GOOD AND EVIL.epub

paginator-performance (worker 갯수 별 수행 시간, 단위 : ms)

PagePaginator

html body를 잘라 하나씩 추가해보며 '디바이스 높이' 단위로 페이지를 분할합니다.

Performance

BEYOND GOOD AND EVIL.epub 파일로(약 300쪽) 탐색 방법별 퍼포먼스 체크를 하였습니다.

  • 처음부터 1단어씩 추가하는 방식 : 42s
  • 이진탐색으로 변경후 : 9s
  • 탐색방식 최적화후 : 7s
  • javascript interface 최소화후 : 5s
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].