kollerlukas / camera-roll-android-app Goto Github PK
View Code? Open in Web Editor NEWSimple Galley App for Android, with lovely Material Design.
License: Apache License 2.0
Simple Galley App for Android, with lovely Material Design.
License: Apache License 2.0
If you exclude a folder, there is no way of including it in the app unless you wipe the app's memory (not cache) completely. There should probably be a way of including folders, or maybe excluded folders should be able to be viewed if the Hidden Folders option is enabled.
It is something I use often on other gallery apps, it'd be good if you include an option to delete the entire folder or album.
Hey there, just wanted to say that this app is incredible - hands down the prettiest gallery app on Android! I was wondering if you'd consider implementing a new sort option so that albums/folders that have most recently had a photo added to them appear at the top of the list (similar to how Google Photos alters its album quick-list). Basically sorting by most recent additions so albums that haven't had anything added to them for a long time also end up appearing on the bottom.
I know you get a tonne of feature requests so completely fair if you don't want to add it, but it'd be an awesome feature to have.
Thank you! ๐
Self-explanatory.
Thanks in advance.
There is an inconsistent Zoom level on Album Cover. On startup it is over zoom. Some time it shows the correct zoom level.
Image 1 is over Zoomed
Image 2 is correct zoom
My DCIM folder contains fix of images and videos . When I swipe from image to a video there is a stuck or lag .
Images to images swipe has no problem.
Images to video and video images has this problem.
Flies right after launch.
Log:
06-06 20:28:12.703 E/AndroidRuntime(3193): FATAL EXCEPTION: main
06-06 20:28:12.703 E/AndroidRuntime(3193): Process: us.koller.cameraroll, PID: 3193
06-06 20:28:12.703 E/AndroidRuntime(3193): java.lang.IllegalArgumentException: Failed to find storage device at /storage/emulated/legacy/Download
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.os.Environment.isExternalStorageRemovable(Environment.java:963)
06-06 20:28:12.703 E/AndroidRuntime(3193): at us.koller.cameraroll.a.d.a.a.a(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at us.koller.cameraroll.a.d.a.e.a(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at us.koller.cameraroll.a.d.a.a(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.RecyclerView$a.a(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.RecyclerView$a.b(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.RecyclerView$o.a(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.RecyclerView$o.a(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.RecyclerView$o.a(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.RecyclerView$o.c(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.LinearLayoutManager$c.a(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.GridLayoutManager.a(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.LinearLayoutManager.a(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.LinearLayoutManager.c(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.GridLayoutManager.c(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.RecyclerView.O(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.RecyclerView.p(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.support.v7.widget.RecyclerView.onLayout(Unknown Source)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.View.layout(View.java:15686)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.ViewGroup.layout(ViewGroup.java:5107)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.View.layout(View.java:15686)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.ViewGroup.layout(ViewGroup.java:5107)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.View.layout(View.java:15686)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.ViewGroup.layout(ViewGroup.java:5107)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.View.layout(View.java:15686)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.ViewGroup.layout(ViewGroup.java:5107)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.View.layout(View.java:15686)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.ViewGroup.layout(ViewGroup.java:5107)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.View.layout(View.java:15686)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.ViewGroup.layout(ViewGroup.java:5107)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.View.layout(View.java:15686)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.ViewGroup.layout(ViewGroup.java:5107)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.View.layout(View.java:15686)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.ViewGroup.layout(ViewGroup.java:5107)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2086)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1843)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5895)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.Choreographer.doCallbacks(Choreographer.java:580)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.Choreographer.doFrame(Choreographer.java:550)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.os.Handler.handleCallback(Handler.java:739)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.os.Handler.dispatchMessage(Handler.java:95)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.os.Looper.loop(Looper.java:135)
06-06 20:28:12.703 E/AndroidRuntime(3193): at android.app.ActivityThread.main(ActivityThread.java:5345)
06-06 20:28:12.703 E/AndroidRuntime(3193): at java.lang.reflect.Method.invoke(Native Method)
06-06 20:28:12.703 E/AndroidRuntime(3193): at java.lang.reflect.Method.invoke(Method.java:37
Hi,
It seems we have to select files one by one.
An option to select them all would be appreciated.
Thank you.
Only the animation is shown.
Using a Moto G5 Plus.
It will be great if there is an option
Perhaps a pin icon at the upper right or far right(if on NestedRecyclerView)
Hi,
After selecting a file, could you add an option to get more information? (e.g patch, size, dimensions,...)
Thank you.
I'm standing here thinking, it's probably the most beautiful gallery I've ever seen and it's a shame I can't update it regularly since I don't use Play Store (or anything Google for that matter). So, would you please consider publishing it on F-Droid, too?
Hey there, I was wondering if you'd consider adding support for viewing RAW images taken with apps like Manual Camera. Thanks!!
Having refresh
and sort
options in toolbar, makes them easier and faster to access.
Those are the most used options, I think, and reducing taps (even if it's just one) is a UX improvement.
I'm also sure that toolbar has enough space for them, since it only has the overflow menu.
Thanks in advance.
Hey there!
I've noticed a very small issue; upon first viewing or swiping to an image, if I try and double-tap or pinch-out to zoom into the photo, I can't zoom. However, if I swipe to another photo, then swipe back to the initial one, double-tapping/pinching-out works and allows me to zoom!
Currently, cards margin is (if I'm not wrong) 16dp and that's looks a bit too big, so please reduce it to just 8dp.
And also, please add an option to make those cards squared. I know I just requested a squared grid for albums view, but that's a flat view, and this one has cards, and some people might like it.
Thanks again.
The app should have a metadata editor or at least a rename image feature.
App need to request permission to be able to write (delete, move and/or copy) to a removable Storage device.
Hey Lukas,
Do you plan to keep Camera Roll open-source? How is the development process going (read: update times, plan for support, new features)?
I think your app has really great potential, and it definitely is one of the best looking Material Design gallery apps on Android. I'll be featuring it on my Android App Guide soon.
Keep up the great work!
Currently we cant delete folder.
I find the app's design really simple and minimalist. I love it.
But I also think it would be good to have a FAB to open camera directly from gallery. Maybe as an option in settings.
Thanks in advance.
It is quite annoying to have to either hit the refresh button everytime you take a new picture, or restart the app (which I never do). Could you please make it so that the app refreshes every time it is opened, even if I open it from the recent apps menu?
Any chance we can see the .apk
here at Github, so it can be obtained without access to Playstore? For an easy approach to that, just in case, I might refer to Creating Releases in the GitHub Help (basically: just create a tag, push it to Github, attach the .apk
file to it and optionally a description for the release โ done).
Thanks in advance!
The video playback is really buggy. When I tap a video from a folder or swipe to it from a picture, the app takes a lot longer to open than a picture. The video controls are also really bare (there is only play and pause). Rotating the orientation of the device is not seamless, the video goes black for a second, then shifts and is paused. After the video is finished playing, if I hit play again, nothing happens; I expect to replay the video on click.
I recommend using a different video playback engine or the device's native video playback engine.
The app should have the ability to make and delete folders, as well as being able to select images from a folder and being able to move them folder to folder. When inside a folder, being able to sort images by different criteria would be a good feature.
Other gallery apps like Simple Gallery has these features, so take a look there if you need some ideas for code.
I'm sure you want to let people know important info about the app, but I don't think it's a primary action so, I think it can be moved to settings.
Thanks in advance.
Some options are already at the bottom: info, share, edit, delete.
I think these options should be removed from the overflow menu, and maybe add some others like: rotate, flip and rename.
Thanks in advance.
After resuming app, if in picture detailed view, the picture is gone, so only black background is visible. One cannot swipe to other picture, and pressing back button/arrow makes the app crash.
So that I can manually add/remove/view excluded folders.
Hi,
Could you create another UI variant for a full black theme #ff000000?
Thank you.
I have deleted few images. After some time I open the Gallery and click refresh button. Then the deleted file came back.
Right now, the app uses the same color for toolbar and status bar, and that makes it look a bit iOS-ish and that annoys me a bit.
Can you please use the right primary dark colors for both themes?
Light: #e0e0e0
Btw, for dark theme, can you please fix both primary and primary dark colors?
Primary Dark: #000000
Primary: #212121
PS: If you're using a transparent status bar, please add a black 20% opacity overlay, or #33000000
. Height: Android 6+: 24dp
Android 5 and below: 25dp
.
Thanks in advance :)
When trying to pick pictures to send via Messenger Lite, the app just doesn't show to pick the picture from it.
Other apps where the gallery does not appear as an option:
Please look into it. Thanks
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.