電子書籍関係者で勉強会をやったので資料を公開します*1。
追記: Fragmentの状態の復帰はFragment#onViewStateRestred(Bundle)) でできるのではという指摘をいただきました。試したところ想定通り動いたのでコードの方は修正済みです。
デモ実装は https://github.com/gfx/TinyPdfReader で、以下のようなことが実装されています。詳細は資料をご覧ください。
- ピンチイン・ピンチアウトでのズーム(PhotoViewを使用)
- 画面の左右タップでの移動
- Landscape時の見開き(1画面2ページ)
- 見開きでも表紙は1ページだけでセンタリングする
- 画面回転時の読書位置の保存
- ページロード時の非同期画像読み込み +ふわっと表示
- 全画面表示(immersive mode) & 画面中央タップでトグル
その他、TinyPdfReaderでは有効にしていませんが、RVP: ReversibleViewPagerというライブラリを作ったのでその紹介もしています。
読書画面はいろいろ工夫しがいがあって面白いですね。
*1:勉強会自体は非公開ですが、資料は公開しても問題ないように作りました。