I began a new project last month, called Mĭjur, an Android client for Imgur. There’s quite a few around already, including the official one, but they’re all of varying quality; some are actively working on improving, like the official app (which I still think is just a wrapper around the mobile website) and Imgur-Holo which made a leap in its considerations toward design in the last few weeks or so. My version will exist for several purposes:
- customised to my needs
- progressing the ImageLoader library
Learning is the main plan – I started at Novoda three months ago, and while I know a little bit about most parts of Android, I’d rather have a solid understanding about the whole application development lifecycle and a solid understanding in several core areas of Android. For this reason, development on the project might be pretty slow – I want to do this right.
It’ll be customised to my requirements for the client. “You are not your user” doesn’t apply here – I use Imgur a lot, and while I recognise I’m not every user, it means I can make a minimum viable product which is suitable for me, and expand from there.
I’ve become quite attached to Novoda’s ImageLoader library. It’s not extremely pleasant to use, but that’s a minor issue – can just write a wrapper around the library itself. Writing an app which is essentially an image viewer will mean that I’ll be able to deep-dive into the ImageLoader code and learn about the library in such a way as to make it easier to contribute fixes and features.
For the minimum viable product, from the user perspective the client must:
- load the (most-viral newest-first) public gallery in a grid
- show the image (or album of images) with caption, description(s) and details (votes, views, source)
- allow horizontal paging for next and previous image/album
- look as though it’s finished
I’ve been working on a “core” module – no Android code is allowed in here; this makes it really easy to run tests for this module in the JVM. The core module interacts with the Imgur API though currently only access publicly available resources (nothing that requires user authentication). All the API calls are done on a single thread; handling multi-threading will be the responsibility of the caller (in the “Android” module).
Currently, I’m working with Etsy’s AndroidStaggeredGrid to display the gallery in a grid. I have a list of
GalleryItems each of which contains a URL to the image or album cover image it represents.
I want to complete the MVP by mid/end of January. Given as how half of Imgur is animated GIFs, I need to implement animated GIF support in ImageLoader. The short term plan is:
- load the URLs as can be best loaded using ImageLoader, with an error image for failures, and default image for still-loading
- port to
That’s what I’m working on today! :)