tom-anders / easy_xkcd Goto Github PK
View Code? Open in Web Editor NEWAn easy and simple open source xkcd reader
License: Apache License 2.0
An easy and simple open source xkcd reader
License: Apache License 2.0
When in the favorite menu, there's no option to remove the comic which is displayed, only one to clear all favorites
When rotating the device to go into landscape mode, the ActionBar resets itself to the default gray/blue scheme.
I've found others so maybe keeping this issue open for some time in case I found other again to avoid creating a lot of issue just for that ?
https://xkcd.com/1234/ the "you're" isn't displayed properly it show "youâ re"
https://xkcd.com/1147/ the "é" of "Pokémon" isn't displayed properly too
hi, i see you closed the issue on saving to external sdcard. however on my moto g 4g (firstgen) the app (ver3.3) saves to the internal scdard storage and no to my micro sd external card. the internal storage is at /storage/sdcard0 and the microsd card at /storage/sdcard1,
am i missing something about getting comics to store on the microsd card?
diziet
Right now, I can be zoomed into the comic, then swipe to pan around.
If my pan extends beyond the end of the comic, the app will automatically switch comics. That's generally not what I want.
It should first stop at the edge of the comic, then only switch comics if I swipe again in that direction.
Probably lots of corner cases...
The comic browser fails to display the animations of comics that are .gif images (such as 961).
It would be nice if we could implement proper support for .gif files.
I'm a big one-hand user of phones, and use one-finger zoom almost exclusively. I noticed that double clicking zooms in by some arbitrary amount. However, when using this method to zoom, if one continues to hold down their finger, the alt text will show on the bottom, the phone will vibrate, and the image will no longer be zoomed in. It's rather off-putting.
Could you make a simple Changelog just to keep us updated about the changes from a release to another?
Thanks
Is it possible to have a pop up message when first launching the app after an upgrade to now that there's a new feature available in the app ?
Or a changelog. Whatever you find the least bothersome :)
The JPEG file of comic 104 seems to be upside down.
Perhaps someone can find a way to turn this image before it is displayed.
Hello,
I've recently noticed that Easy xkcd sometimes displays the same comic twice when you swipe from one comic to the next. The title of the comic changes and the number in the toolbar increases, but the applications simply shows me the previous comic.
Here's an example (please excuse the size of the screenshots):
When I swipe to comic 1307, the application also displays comic 1306:
I hope that you somehow manage to fix this.
I'd be delighted to provide any help if necessary.
In the heartbleed comic (https://xkcd.com/1353/) the ä of Tannhäusser isn't displayed properly in the alt text
Checking the 2nd option before the first one is over make the download overview bug. It constantly switch between the 2 of them until one of them is over.
According to the guidelines the lime theme should use a dark font for better contrast. Technically the green theme is affected as well, but I think the contrast is fine there and having white font on the darker (700-tone) system bar and black font in the toolbar right below probably looks weird.
I looked at the source, but could not find an easy fix. The dark actionbar theme seems to be hardcoded in tool_bar.xml
and the parents of the styles in styles.xml
seem to be ignored, since only single values are extracted from those custom styles.
The button that tells that there is a new comic doesn't stay long enough. Could it stays a couple of seconds longer ?
Comics like #657 don't zoom in enough on my Galaxy S5 to be readable. (I don't remember if 657 specifically is like this, I just know 657 is a large comic. The problem is with the really large ones.)
The title of https://xkcd.com/1137/ isn't displayed properly instead I have "â(a symbol)LTR"
I noticed, there are no pictures displayed for the what-ifs, just some tiny * or something like that which shows the alt-text when touched. Switching to offline mode for what-if and being on W-LAN instead of mobile internet did not change that behaviour, so I assume it is not related to those settings.
Is there any plan for supporting What-if in a future version?
When trying to choose my SD card as the offline storage location by going up a directory from the default view, it says operation not permitted.
When going back from a comic to the comic list, the app doesn't show the list near the comic I was reading (for example 1518) but close to the first one (it's around 100).
So I have to go back to the top and search for my comic.
But once I've done that and if I go back again, it shows the right place in the list.
But if I close the app(not just quitting it), and do this again, the issue is here again.
Not sure if I'm clear enough ^^
Because the app crashes occasionally on my phone, I did some researches with Android Studio:
When using the app (and swiping through the comics) the memory usage increases and increases . . .
When it reaches ca. 55 MB an OutOfMemoryError is thrown.
Also it seems like all favourites are loaded into Memory, which isn't a perfect behaviour when there are a number of favourites . . .
Maybee it's possible to unload more comics that are not needed any more and don't load all favourites into RAM?
When pressing the add to favorites button to a comic which isn't a favorite, the phrase doesn't switch to delete from favorites (or whatever it should be). It still shows add to favorites and pressing it again delete the comic from favorites.
With version 3.8.3
There's just a blank picture and the alt text isn't displayed (it might be because there seems to be multiple alt text)
https://xkcd.com/1193/
If you press go to bookmark when you're in the favorite list view, the app crash
I prefer to view the images in landscape mode, so it would be helpful to have a Settiing that forces the device into landscape mode when in the Easy XKCD app.
Thanks!
Is it possible to have a bookmark option ?
Right now, I'm reading all the xkcd comics starting from the most recent one but when there is a new one and I go to see it, I have to search for the one I was reading before.
Having an option as save current comic as bookmark and go to bookmark to easily go to the saved one would be nice.
Thanks in advance :)
I feel like this shouldn't happen.
I was very excited to look into the code on this project, but when I tried to open it by importing it from GitHub into Android Studio, it didn't load. The reason I'm suspecting this is an issue with the repository and not with the IDE itself is because the error it gave me (see below) involved converting a URL from a local C:/ drive. I attached the log because I'm new to this and I may be completely wrong in my guess, but I'd love to be able to browse the code.
Caused by: org.gradle.api.InvalidUserDataException: Cannot convert URL 'C:/' to a file.
at org.gradle.api.internal.file.AbstractFileResolver.convertObjectToFile(AbstractFileResolver.java:188)
at org.gradle.api.internal.file.BaseDirFileResolver.doResolve(BaseDirFileResolver.java:69)
at org.gradle.api.internal.file.AbstractFileResolver.resolve(AbstractFileResolver.java:77)
at org.gradle.api.internal.file.AbstractFileResolver.resolve(AbstractFileResolver.java:60)
at org.gradle.api.internal.file.DefaultFileOperations.file(DefaultFileOperations.java:69)
at org.gradle.api.internal.project.AbstractProject.file(AbstractProject.java:620)
at org.gradle.groovy.scripts.DefaultScript.file(DefaultScript.java:113)
at org.gradle.api.internal.BeanDynamicObject$GroovyObjectAdapter.invokeMethod(BeanDynamicObject.java:268)
at org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:129)
at org.gradle.api.internal.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:78)
at build_1tk45g2ye7zc7fvkpg0vvppds$_run_closure1_closure3_closure8.doCall(/Users/lindafiscus/github/Easy_xkcd/app/build.gradle:7)
at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:63)
at org.gradle.api.internal.AbstractNamedDomainObjectContainer.create(AbstractNamedDomainObjectContainer.java:59)
at org.gradle.api.internal.AbstractNamedDomainObjectContainer.create(AbstractNamedDomainObjectContainer.java:52)
at org.gradle.api.internal.NamedDomainObjectContainerConfigureDelegate._configure(NamedDomainObjectContainerConfigureDelegate.java:39)
at org.gradle.api.internal.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:73)
at build_1tk45g2ye7zc7fvkpg0vvppds$_run_closure1_closure3.doCall(/Users/lindafiscus/github/Easy_xkcd/app/build.gradle:4)
at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:63)
at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:130)
at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:91)
at org.gradle.api.internal.AbstractNamedDomainObjectContainer.configure(AbstractNamedDomainObjectContainer.java:68)
at org.gradle.api.internal.AbstractNamedDomainObjectContainer.configure(AbstractNamedDomainObjectContainer.java:24)
at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:55)
at org.gradle.api.Action$execute.call(Unknown Source)
at com.android.build.gradle.BaseExtension.signingConfigs(BaseExtension.groovy:318)
at com.android.build.gradle.AppExtension_Decorated.signingConfigs(Unknown Source)
at build_1tk45g2ye7zc7fvkpg0vvppds$_run_closure1.doCall(/Users/lindafiscus/github/Easy_xkcd/app/build.gradle:3)
at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:63)
at org.gradle.api.internal.plugins.ExtensionsStorage$ExtensionHolder.configure(ExtensionsStorage.java:145)
at org.gradle.api.internal.plugins.ExtensionsStorage.configureExtension(ExtensionsStorage.java:69)
at org.gradle.api.internal.plugins.DefaultConvention$ExtensionsDynamicObject.invokeMethod(DefaultConvention.java:207)
at org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:147)
at org.gradle.groovy.scripts.BasicScript.methodMissing(BasicScript.java:79)
at build_1tk45g2ye7zc7fvkpg0vvppds.run(/Users/lindafiscus/github/Easy_xkcd/app/build.gradle:2)
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:52)
... 43 more
2015-11-17 15:20:53,971 [58749561] WARN - nal.AbstractExternalSystemTask - Cannot convert URL 'C:/' to a file.
com.intellij.openapi.externalSystem.model.LocationAwareExternalSystemException: Cannot convert URL 'C:/' to a file.
at org.jetbrains.plugins.gradle.service.project.AbstractProjectImportErrorHandler.createUserFriendlyError(AbstractProjectImportErrorHandler.java:103)
at org.jetbrains.plugins.gradle.service.project.BaseProjectImportErrorHandler.getUserFriendlyError(BaseProjectImportErrorHandler.java:158)
at org.jetbrains.plugins.gradle.service.project.BaseGradleProjectResolverExtension.getUserFriendlyError(BaseGradleProjectResolverExtension.java:438)
at com.android.tools.idea.gradle.project.AndroidGradleProjectResolver.getUserFriendlyError(AndroidGradleProjectResolver.java:348)
at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.getUserFriendlyError(AbstractProjectResolverExtension.java:164)
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver$ProjectConnectionDataNodeFunction.fun(GradleProjectResolver.java:366)
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver$ProjectConnectionDataNodeFunction.fun(GradleProjectResolver.java:332)
at org.jetbrains.plugins.gradle.service.project.GradleExecutionHelper.execute(GradleExecutionHelper.java:225)
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:97)
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:65)
at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl$1.produce(RemoteExternalSystemProjectResolverImpl.java:41)
at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl$1.produce(RemoteExternalSystemProjectResolverImpl.java:37)
at com.intellij.openapi.externalSystem.service.remote.AbstractRemoteExternalSystemService.execute(AbstractRemoteExternalSystemService.java:59)
at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl.resolveProjectInfo(RemoteExternalSystemProjectResolverImpl.java:37)
at com.intellij.openapi.externalSystem.service.remote.wrapper.ExternalSystemProjectResolverWrapper.resolveProjectInfo(ExternalSystemProjectResolverWrapper.java:49)
at com.intellij.openapi.externalSystem.service.internal.ExternalSystemResolveProjectTask.doExecute(ExternalSystemResolveProjectTask.java:51)
at com.intellij.openapi.externalSystem.service.internal.AbstractExternalSystemTask.execute(AbstractExternalSystemTask.java:138)
at com.intellij.openapi.externalSystem.service.internal.AbstractExternalSystemTask.execute(AbstractExternalSystemTask.java:124)
at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$4.execute(ExternalSystemUtil.java:540)
at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$5$1.run(ExternalSystemUtil.java:612)
at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:563)
at com.intellij.openapi.progress.impl.CoreProgressManager$8.run(CoreProgressManager.java:367)
at com.intellij.openapi.progress.impl.CoreProgressManager$2.run(CoreProgressManager.java:152)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:452)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:402)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:137)
at com.intellij.openapi.application.impl.ApplicationImpl$10$1.run(ApplicationImpl.java:617)
at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:400)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)
2015-11-17 15:20:54,999 [58750589] WARN - ij.ui.messages.SheetController - URL is null; HyperlinkEvent: javax.swing.event.HyperlinkEvent[source=javax.swing.JEditorPane[,120,45,311x39,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.BasicBorders$MarginBorder@600ccf6f,flags=16777504,maximumSize=,minimumSize=,preferredSize=,caretColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],disabledTextColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],editable=false,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],selectionColor=javax.swing.plaf.ColorUIResource[r=47,g=101,b=202],kit=javax.swing.text.html.HTMLEditorKit@240906be,typeHandlers={text/html=javax.swing.text.html.HTMLEditorKit@240906be}]]
2015-11-17 15:20:57,469 [58753059] WARN - ij.ui.messages.SheetController - URL is null; HyperlinkEvent: javax.swing.event.HyperlinkEvent[source=javax.swing.JEditorPane[,120,45,311x39,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.BasicBorders$MarginBorder@600ccf6f,flags=16777504,maximumSize=,minimumSize=,preferredSize=,caretColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],disabledTextColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],editable=false,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],selectionColor=javax.swing.plaf.ColorUIResource[r=47,g=101,b=202],kit=javax.swing.text.html.HTMLEditorKit@240906be,typeHandlers={text/html=javax.swing.text.html.HTMLEditorKit@240906be}]]
2015-11-17 15:20:57,622 [58753212] WARN - ij.ui.messages.SheetController - URL is null; HyperlinkEvent: javax.swing.event.HyperlinkEvent[source=javax.swing.JEditorPane[,120,45,311x39,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.BasicBorders$MarginBorder@600ccf6f,flags=16777504,maximumSize=,minimumSize=,preferredSize=,caretColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],disabledTextColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],editable=false,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],selectionColor=javax.swing.plaf.ColorUIResource[r=47,g=101,b=202],kit=javax.swing.text.html.HTMLEditorKit@240906be,typeHandlers={text/html=javax.swing.text.html.HTMLEditorKit@240906be}]]
2015-11-17 15:20:59,050 [58754640] WARN - ij.ui.messages.SheetController - URL is null; HyperlinkEvent: javax.swing.event.HyperlinkEvent[source=javax.swing.JEditorPane[,120,45,311x39,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.BasicBorders$MarginBorder@600ccf6f,flags=16777504,maximumSize=,minimumSize=,preferredSize=,caretColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],disabledTextColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],editable=false,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],selectionColor=javax.swing.plaf.ColorUIResource[r=47,g=101,b=202],kit=javax.swing.text.html.HTMLEditorKit@240906be,typeHandlers={text/html=javax.swing.text.html.HTMLEditorKit@240906be}]]
2015-11-17 15:20:59,185 [58754775] WARN - ij.ui.messages.SheetController - URL is null; HyperlinkEvent: javax.swing.event.HyperlinkEvent[source=javax.swing.JEditorPane[,120,45,311x39,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.BasicBorders$MarginBorder@600ccf6f,flags=16777504,maximumSize=,minimumSize=,preferredSize=,caretColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],disabledTextColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],editable=false,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],selectionColor=javax.swing.plaf.ColorUIResource[r=47,g=101,b=202],kit=javax.swing.text.html.HTMLEditorKit@240906be,typeHandlers={text/html=javax.swing.text.html.HTMLEditorKit@240906be}]]
2015-11-17 15:20:59,359 [58754949] WARN - ij.ui.messages.SheetController - URL is null; HyperlinkEvent: javax.swing.event.HyperlinkEvent[source=javax.swing.JEditorPane[,120,45,311x39,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.BasicBorders$MarginBorder@600ccf6f,flags=16777504,maximumSize=,minimumSize=,preferredSize=,caretColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],disabledTextColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],editable=false,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],selectionColor=javax.swing.plaf.ColorUIResource[r=47,g=101,b=202],kit=javax.swing.text.html.HTMLEditorKit@240906be,typeHandlers={text/html=javax.swing.text.html.HTMLEditorKit@240906be}]]
2015-11-17 15:21:50,630 [58806220] WARN - ij.ui.messages.SheetController - URL is null; HyperlinkEvent: javax.swing.event.HyperlinkEvent[source=javax.swing.JEditorPane[,120,45,311x39,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.BasicBorders$MarginBorder@600ccf6f,flags=16777504,maximumSize=,minimumSize=,preferredSize=,caretColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],disabledTextColor=javax.swing.plaf.ColorUIResource[r=187,g=187,b=187],editable=false,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],selectionColor=javax.swing.plaf.ColorUIResource[r=47,g=101,b=202],kit=javax.swing.text.html.HTMLEditorKit@240906be,typeHandlers={text/html=javax.swing.text.html.HTMLEditorKit@240906be}]]
I apologize if this is not an issue with your repository, as I said, I'm new to this.
Well, OK, there is one default test but that's it. It would be good to have a nice test suite that can then be run on travis
Hi
When I sesrch for a comic, open it and want to share it, there is no actionbar. But the menu can still be opened.
You should use https://s3.amazonaws.com/repo.commonsware.com
instead of https://repo.commonsware.com.s3.amazonaws.com
-- see upstream at https://github.com/commonsguy/cwac-wakeful/commit/94928b9769e422c6117d36a4ef8a999263a68099.
It would be great if you could tag releases (e.g. the commits bumping the versioncode) in a simple and consistent scheme (e.g. the plain versioname or versioncode) using git tag TAGNAME
and then git push --tags
. Readable tags are really helpful when checking out "known good" versions.
I prefer to download the offline entries to my external SDCARD because it has much more room than the internal storage.
The directory for offline storage could be a configuration setting.
I've got the alt text and title but the comic isn't displayed
https://xkcd.com/1227/
For the comics 1379 (https://xkcd.com/1379/), the alt text isn't displayed properly on my phone, the "2°C" is displayed "2°C".
Not really a big issue but just to let you know about it as it may occur again.
For example, 1602 takes up my entire phone display and cannot be zoomed out.
You could add a "maximum zoom"option or depend on screen DPI.
So I personally have a small bit of a distaste for comic readers that show the comic like the site does, with just the comic and navigation back and forth. It'd be nice if part of the UI was a bit of an overview mode, a scrollable list of the comics. Maybe not a basic textual list, something visual like this iOS app could work nicely.
You import de.tap.easy_xkcd.database.DatabaseManager
but it is not included included in this repository. However, it doesnt look it's actually ever used, so it might be a left over.
I don't know how far you are with implementing a better overview mode, but I just noticed there already is a pretty good list-based one: the search results.
If you search something, then search again (from the search activity), and finally clear your search you'll get a satisfying list of all comics out there.
Wouldn't it be easier to improve this one (e.g. reverse it, so the newest comic is on top, and add a scroll bar) than completely writing a new one? As an extra, we'd have a consistent design in the whole app.
Of course, there might be a grid-based one too, and the user can select which is shown with an entry in the settings.
I decided to try this app out again. I see that you still can't swipe to switch when zoomed in.
Suggestions to fix:
Of course this should be user-configurable.
Pressing the random-FAB in the favorites overview mode causes an ArrayIndexOutOfBoundsException
.
Here's the log output:
E/AndroidRuntime(21188): FATAL EXCEPTION: main
E/AndroidRuntime(21188): Process: de.tap.easy_xkcd, PID: 21188
E/AndroidRuntime(21188): java.lang.ArrayIndexOutOfBoundsException: length=509; index=-1108
E/AndroidRuntime(21188): at android.util.SparseArray.keyAt(SparseArray.java:271)
E/AndroidRuntime(21188): at de.tap.easy_xkcd.fragments.OverviewBaseFragment.showComic(OverviewBaseFragment.java:55)
E/AndroidRuntime(21188): at de.tap.easy_xkcd.fragments.OverviewCardsFragment.showComic(OverviewCardsFragment.java:73)
E/AndroidRuntime(21188): at de.tap.easy_xkcd.Activities.MainActivity.onClick(MainActivity.java:233)
E/AndroidRuntime(21188): at de.tap.easy_xkcd.Activities.MainActivity$$ViewBinder$1.doClick(MainActivity$$ViewBinder.java:18)
There should be an option to have a night/dark theme and have inverted comics (white on black instead of black on white). It shouldn't take much processing power and would add more options.
Hi
I just noticed that your app closes when I turn my phone sideways. There is no error message though.
Seems like all favorites are loaded into memory, so when you just select enough of them the app crashes.
When you're in the comic list, there's an option "add to favorites" which doesn't add to favorites but switch to a favorite list. The option is present here too and it switch back to the normal comic list.
Ever since I see google play biking service permission added
Whenever I start easy xk it just hangs at loading comics if I have no internet
It's been a few updates since this started.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.