Update 4/17/15: I had originally wrongly assumed that AppCompat tinting did not work with  LayoutInflater.from(context) . That’s what I get for not testing my assumptions!

 

LayoutInflater is a fundamental component in Android. You must use it all the time to turn xml files into view hierarchies. There are several ways to get an instance of one, but it’s not always clear why you should prefer one way over another.

Perhaps the must fundamental way to obtain a LayoutInflater is with

Continue Reading Article

Screenshot_2015-04-02-14-20-57_framed_resize

Think you know a lot about Android? Want to test your development skills? Download WillowTree’s Easter egg hunt and get cracking!

This past Saturday, we hosted an Easter egg hunt for developers at the Big Android Meat & Greet, hosted by IDEAA in Washington, D.C.  The hunt took the form of an Android app that you can now download to test your programming mettle. The app includes ten challenges that unlock achievements (“eggs”), each with their own unique Android-related problem to solve. Some of them are easy and can be tackled by anyone. Others are more difficult and may even require you to write your own code.  Seven other eggs are hidden and sprinkled throughout the app, so they’re a bit more challenging to find.  Make sure you are logged in with Google Play Games to earn the achievements.

Continue Reading Article

All you need is 15 minutes with any researcher, scientist, or physician to realize that data is a key component of their work. Spend another 15 minutes with them, and you’ll also come to understand how hard this data can be to come by (especially if the data must come from a human population). It’s because of this, that an entire multi-billion dollar industry exists, running studies, trials, and population tests for anyone with a stake in healthcare.

Apple introduced ResearchKit at their March 9th, 2015 event. While it certainly took a backseat to Apple Watch news for most of their customers, ResearchKit was important enough for Apple to give it a prominent mention during their live event: http://www.apple.com/live/2015-mar-event/

What is ResearchKit?

Continue Reading Article

Every 8-10 years or so, a new technology/approach hits the web that fundamentally improves what we can do as developers. In 2005 the term “Ajax” first appeared, followed by jQuery in 2006. In 2014, Facebook made its React framework publicly available for web development, and earlier this year released versions targeting native mobile development. It’s starting to feel like this might be one of these big paradigm shifts as early Facebook React reviews have been incredibly positive…

Facebook React combines a bunch of attributes, most of which have been in some form of usage in various other frameworks like AngularJS, and takes them to the next level to drive real benefits for developers vs. frameworks like AngularJS. The result is the first real leap in web development in almost a decade.

So what problems was React trying to solve, and how does it do it?

Continue Reading Article

Recently, a friend of mine asked if I would take a look at an app he was developing. He didn’t have much design knowledge and needed advice on how to make the app better, and how he could create the best user experience possible. After talking with him more and taking a closer look at his app, I helped him make some basic design changes that will go a long way towards ensuring a positive user experience. Helping my friend made me think about others who might be struggling with app design, from developers and new designers to clients trying to learn how to communicate more effectively about design.

In today’s post, I’ll go over some basic tenets that make up the foundation of good design, drawing examples from my experience as a mobile UX Designer here at WillowTree. These principles should help you create the best user experience possible in your app, but they’re also applicable in many other areas of design as well.

Continue Reading Article

In the world of test automation, Selenium Webdriver has become the standard tool for testing web applications. Selenium’s success comes from its multi-platform support, ability to test across a wide variety of browsers, and it’s free. For the most part, you can write your tests in the language you feel most comfortable with, but it is a good idea to use one that already has a test framework such as: Java, C#, Python, or Ruby.

Testers often automate their first test cases with relative ease. You find the web page elements, you click or type as a user would, and then you assert something is true or false.

Continue Reading Article

It’s black and blue. That’s what Taylor Swift says. If that’s not enough for you, that’s also what the actual product listing says.

But what does Android see?

Using the Palette API, we can programmatically determine the colors of the dress. Spoiler alert: blue is definitely one of them. So if you’re on team black and blue, you’re probably feeling pretty good right now. And if you’re on team blue and gold, that’s not a team. Here’s the Very Scientific Method that we used (source code and a debug APK):

Continue Reading Article

 

A while back, the singular Roman Nurik released an open source live wallpaper called Muzei, which showcases famous works of art on your Android home screen and provides an API to integrate other image sources. Many aspects of this app immediately struck my fancy, but the first was the sleek and fluid logo shown when a user opens up the app.

Thanks to Muzei being open source, anyone can see how the drawing of this logo is accomplished. The util package contains most of the magic, with AnimatedMuzeiLogoFragment, AnimatedMuzeiLogoView, LogoPaths, MathUtil , and SvgPathParser being our classes of interest. Here’s a brief description of what these classes do:

Continue Reading Article

So, you need to automate, and you have never written a line of code before or it’s been a while. Fortunately, this isn’t a problem. The Helium API gives you simple commands and straightforward documentation to help get you started. It all begins and ends with Selenium, and if you need quick results this is the way to go.

One of the benefits of Selenium is that you can pick from a few languages to work with. I decided to go with Python, as I was familiar with it, and it’s easy to pick up if you don’t code often or at all. You’ll find it’s actually more difficult to setup your development environment than it will be to get your first script running.

So let’s get started…

Continue Reading Article

What are the key cost drivers of developing a mobile app? How do you determine whether to build an app for iOS, Android, or Windows? These are a few of the questions our CEO, Tobias Dengel, tackled in a recent interview with Clutch, the leading source of online mobile app developer reviews.

“I think if you’ve got to pick one platform [for a consumer app], we typically recommend iOS, just because it’s going to do better out in a consumer-facing environment, unless the app is a prototype kind of test app. Then, we recommend Android. For Android, we don’t have to go through an approval process with the App Store, and that approval process can take one to two weeks, and also there are just constraints around that. In Android, we can get something out, and tested, iterate on it, and figure out what consumers want much more quickly.”

Continue Reading Article

Mobile applications today are increasingly interconnected and data centric, relying on back-end infrastructures to provide the information displayed within the app. With this level of connectivity comes increased complexity. Slow or spotty network connections can have a large impact on the performance of these connected applications. To alleviate slow user interface experiences, the iOS team has increasingly leaned on using Apple’s CoreData framework. Apple’s framework allows us to store and persist network response data to lower the number of network calls that are necessary as a user navigates through the application.

In the past, we utilized several open-source libraries to ease the integration of CoreData. Over time, however, these libraries have either become more complex than our needs required or have not kept up with the pace of iOS changes. To solve this problem we created our own library, WTAData. The goal of WTAData is to provide a simple and straightforward set of utilities for interacting with CoreData.

Continue Reading Article

When designing apps (not just web apps) state ownership should always be clearly thought out. Should this button widget know if it’s locked or does the parent decide? Should that modal know if it’s rendered or does some other part of the app decide?

State ownership woes are pretty apparent if you choose React. Our team spent a great deal of time investigating the best methods for carrying out the best implementation, and we learned a few crucial lessons along the way. To demonstrate this, we’ve created a hypothetical alert implementation. If you follow WillowTree’s blog, you may know that we covered alerts in our Backbone Mixin Series. In today’s post, we will revisit this in light of state ownership in a React application.

Continue Reading Article