Giter VIP home page Giter VIP logo

mangaview's Introduction

MangaView

An ImageView for reading manga(comics) for Android.

CI

You can download the sample app via deploygate.

Features

scale_and_swipe double_spread_page

  • Scrolling, with smooth scrolling fling.
  • Page zooming, using multi-touch and double-tap(optional).
  • Page transition, with swipe.
  • View spread pages by the display orientation.
  • Works fine when used in a scrolling parent (such as RecyclerView or ViewPager2).

You'll look all features here.

Installation

To add MangaView to your project, include the following in your app module build.gradle file:

dependencies {
    ...

    implementation 'dev.keiji.mangaview:mangaview:1.1.1'
}

Usage

There is a sample provided how to use the MangaView.

License

Copyright 2020-2022 Keiji ARIYAMA (C-LIS CO., LTD.)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

mangaview's People

Contributors

dependabot[bot] avatar keiji avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

mangaview's Issues

The sample app crashes in offline mode.

System information

  • MangaView version: 1.0.0
  • Android version: Android 9.0(API Level 28), Android 11(API Level 30)
  • Device: ONYX BOOX, Pixel 4a

Describe the current behavior

  • Set airplane mode.
  • Launch the sample app.
  • The app will be crashed.

Describe the expected behavior
The app works correctly in offline mode.

Logcat

2020-12-26 14:29:49.965 19200-19231/jp.co.c_lis.mangaview.android E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-4
    Process: jp.co.c_lis.mangaview.android, PID: 19200
2020-12-26 14:29:49.965 19200-19230/jp.co.c_lis.mangaview.android E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-3
    Process: jp.co.c_lis.mangaview.android, PID: 19200
2020-12-26 14:29:49.980 1590-2295/? E/InputDispatcher: channel '2272c92 jp.co.c_lis.mangaview.android/jp.co.c_lis.mangaview.android.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!

Zoomed page looks jaggy on some devices.

System information

  • MangaView version: 1.0.0
  • Android version: Android 9.0(API Level 28)
  • Device: Lenovo TB-7305F(Lenovo Tab M7)

Describe the current behavior

  • Launch the sample app.
  • Zoom page.
  • The zoomed pages(images) are jagged.

Lenovo Tab M7

PXL_20201227_114306552

Pixel 4a

IMG_20201227_210031

Describe the expected behavior
The page is processed anti-alias.

Tap on edge doesn't work on ONYX BOOX

System information

  • MangaView version: 5f606c5
  • Android version: Android 9, 2020-10-13_15-52_mc_fa72065
  • Device: ONYX BOOX

Describe the current behavior

  • Launch the sample app.
  • Tap on edge of view.
  • Page transition doesn't happen.

Describe the expected behavior
Page transition will happen.

The current page index is reset unexpectedly on ONYX BOOX.

System information

  • MangaView version: 1.1.0
  • Android version: Android 9, 2020-10-13_15-52_mc_fa72065
  • Device: ONYX BOOX POKE 2 COLOR

Describe the current behavior

  • Set display orientation to horizontal.
  • Launch the sample app.
  • Change page number(by swipe, tap on edge and so on).
  • Sleep device(by press power button or covered)
  • The sample app show first page. The current page index is reset unexpectedly.

Describe the expected behavior
The current page index(number) should be restored correctly.

Sample app doesn't show any pages

System information

  • MangaView version: 1.0.0
  • Android version: Android 9.0(API Level 28)
  • Device: Lenovo TB-7305F(Lenovo Tab M7)

Describe the current behavior

  • Launch the sample app.
  • The app doesn't show any pages.

Describe the expected behavior
The app show pages correctly.

ConcurrentModificationException is occurred.

System information

  • MangaView version: 1.0.0
  • Android version: Android 9.0(API Level 28), Android 11(API Level 30)
  • Device: ONYX BOOX, Pixel 4a

Describe the current behavior

  • Launch the sample app.
  • Rotate display(device) some times.

Logcat

2020-12-26 02:22:41.272 3122-3122/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: jp.co.c_lis.mangaview.android, PID: 3122
    java.util.ConcurrentModificationException
        at java.util.ArrayList$Itr.next(ArrayList.java:860)
        at dev.keiji.mangaview.source.RegionSource.getPathList(RegionSource.kt:28)
        at dev.keiji.mangaview.layer.RegionLayer.onDraw(RegionLayer.kt:65)
        at dev.keiji.mangaview.layer.ContentLayer.draw(ContentLayer.kt:142)
        at dev.keiji.mangaview.widget.Page.draw(Page.kt:63)
        at dev.keiji.mangaview.widget.MangaView.onDraw(MangaView.kt:362)
        at android.view.View.draw(View.java:20346)
        at android.view.View.updateDisplayListIfDirty(View.java:19195)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4319)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4292)
        at android.view.View.updateDisplayListIfDirty(View.java:19155)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4319)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4292)
        at android.view.View.updateDisplayListIfDirty(View.java:19155)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4319)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4292)
        at android.view.View.updateDisplayListIfDirty(View.java:19155)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4319)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4292)
        at android.view.View.updateDisplayListIfDirty(View.java:19155)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4319)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4292)
        at android.view.View.updateDisplayListIfDirty(View.java:19155)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4319)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4292)
        at android.view.View.updateDisplayListIfDirty(View.java:19155)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:686)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:692)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:801)
        at android.view.ViewRootImpl.draw(ViewRootImpl.java:3396)
        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3158)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2525)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1500)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7314)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1004)
        at android.view.Choreographer.doCallbacks(Choreographer.java:816)
        at android.view.Choreographer.doFrame(Choreographer.java:751)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:990)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6815)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Describe the expected behavior
The exception is not occurred.

The current page index is reset unexpectedly.

System information

  • MangaView version: 1.0.0
  • Android version: All versions
  • Device: All devices

Describe the current behavior

  • Set "Don't keep activities" enable on Developer options.
  • Set "Auto-rotate" enable on Settings.
  • Launch the sample app.
  • Change page number(by swipe, tap on edge and so on).
  • Switch task, to disposing an activity of the sample app.
  • Switch task again, to return to the sample app.
  • Rotate display(device).
  • The sample app show first page. The current page index is reset unexpectedly.

Describe the expected behavior
The current page index(number) should be restored correctly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.