An article by @vanillaburritos as a reflection of her experience open-sourcing PermissMe at Tumblr. Give it a read!
More you might like
Dragging, Scaling, Rotating on April Fools Day
The April Fools 2016 project was executed and finalized on a very tight deadline. The mobile platforms (Android, iOS) had only 2 weeks to ship a finalized, polished implementation from scratch. Originally, we planned on doing a full-blown custom election, where users would, themselves, be able to run as a candidates in the election, create their own campaign and be featured on a top Candidates page. However, we had to scope down the project as much as we could. Development had to occur while scoping the project and mocks were incomplete.
One of the biggest contributors to the success of the AF project were the new creator tools we provided. The campaign posters and campaign endorsements.
While creating the campaign poster creator on Android, there were 4 main actions to implement for users:
1) Adding items to the poster
2) Dragging items
3) Scaling items
4) Rotating items
* “items” refers to text and stickers
I decided to structure the implementation as follows:
image of activity -> layoutView -> canvas, with imageViews and textviews being added to the canvas, and the color picker being a separate ViewGroup.

Have you checked this out yet? Definitely start getting familiar with it, a lot of great stuff.

Custom ViewGroups
A nice writeup on how to turn even simply laid-out Views into custom ViewGroups to improve performance.
If you’re trying to use elevation, and it wont just work, make sure the background color of the view does not have an alpha channel.
e.g. use
#444444instead of
#FF444444
Bookends and Remember
We’ve open-sourced a couple of Android utilities that we use in the Tumblr app for Android. Check it out:
Bookends
A UI widget that allows for headers and footers on lists backed by RecyclerView.
As we were upgrading our app to migrate from ListView to RecyclerView, we found it kind of silly that RecyclerView doesn’t support headers by default. So we built a little wrapper that’ll do this for you.
Remember
An in-memory data store backed by shared preferences.
SharedPreferences are useful but since they’re backed by disk, they can have unpredictable performance characteristics – you’re not guaranteed to always be in memory, and in the case of write operations, you have to hit disk (possibly asynchronously) and remember what you wrote.
Remember takes care of that by putting a write-through cache in front of SharedPreferences. It also gives you a bunch of desirable consistency and concurrency characteristics – access can happen from any number of threads concurrently, and doing a write followed by a read will always return the value you just put. (Even if the value hasn’t been written to disk yet).
Both of these projects are open-sourced under the Apache license, and are available at our Github page. Let us know what you think!
Our very own michael-lightwave open sourced some awesome libraries for Android, check them out!
Great article from Jake Wharton explaining not only how to use the Palette library with Picasso, but also how to be clever and resourceful when using third-party libraries.

