1.5M ratings
277k ratings

See, that’s what the app is perfect for.

Sounds perfect Wahhhh, I don’t wanna

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.

image


Keep reading

decision2016 aprilfools2016 android effectiveandroid ontouch wretchedtooth mop timefordeborah rickforall

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

#444444
instead of
#FF444444

engineering

Bookends and Remember

engineering

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!

effectiveandroid

Our very own michael-lightwave open sourced some awesome libraries for Android, check them out!

android open source android development