Android Nanodegree

Here a repository of all work done on projects for Udacity's Android Nanodegree program.

Project 7: Capstone Stage 1 - Design

This is your chance to take the skills that you've learned across your Nanodegree journey and apply it to an app idea of your own. You control the vision! In Stage 1, you will design and plan your app, and receive feedback prior to building it in Stage 2.

I have created UI mockups and a proposal that can be found here

Project 6: Make Your App Material

In this project, you will update the look and feel of an app to meet Material Design specifications.


Before After
XYZ Reader before redesign XYZ Reader after redesign

Project 5: Build It Bigger

In this project, you will use Gradle to build a joke-telling app, factoring functionality into libraries and flavors to keep the build simple. You'll also configure a Google Cloud Endpoints development server to supply the jokes.

This app did not leave a lot of room for creative input. It was still very informative, showing how to create free and paid versions of your app, how to create Android and Java Libraries, and briefly showing how to connect to backend services.

Project 4: Baking App

In this project, you will create an app to view video recipes. You will handle media loading, verify your user interfaces with UI tests, and integrate third party libraries. You'll also provide a complete user experience with a home screen widget.


  • Material Design: from shared element transitions, to animated vector drawables, this app was designed from the ground up to incorporate material design principles.
  • Tablet Layouts: this app also incorporates fragments and reusable layouts to provide a much better experience on bigger screens.
  • Video Playback
  • Homescreen Widget

See the Baking App in action

Project 3: Popular Movies Part 2

In this project, you will add to the app you built in Stage 1 by building on the detail view for each movie, allowing users to 'favorite' movies.


To run this app, you must also have an API Key defined as a variable named API_KEY in the project's file.


  • Animated Vector Drawables: The favorite floating action button features an animation when clicked (on devices with API 21+)
  • Offline Use: API calls are cached in a SQLite database, and served when offline. This along with Picasso's Image caching enables this app to be usable when offline.
  • Reviews and Videos: The detail screen shows user reviews and videos related to the movie that can be viewed in the browser or YouTube.

See Popular Movies Part 2 in action

Project 2: Popular Movies Part 1

In this project, you will build an app to help users discover popular and recent movies. You will build a clean UI, sync to a server, and present information to the user.


To run this app, you must also have an API Key as a string with the name of api_key in a resource file.


  • Shared Element Transitions: Smooth, meaningful transitions make interacting with this app much more enjoyable.
  • Fragments! By implementing fragments for the list and detail views, we are able to achieve smooth transitions without the overhead of shared element transitions with activities.
  • Material Design: This app capitalizes on its use of fragments with a shared CollapsingToolbarLayout, leading to extra continuity between screens.
  • Laying groundwork for Part 2: Layout considerations have been given for how to implement the favoriting feature required in Part 2.

See Popular Movies Part 1 in action

Project 1: Sandwich Club

Design the layout for the detail activity so the different elements display in a sensible way. Implement the JSON parsing in JsonUtils so it produces a Sandwich Object that can be used to populate the UI that you designed.


  • Material Design UI: from the title being placed on top of the media area to the use of icons instead of text labels, there are several Material Design principles being utilized in this app.
  • Dual Detail Views: Detail Activity and Detail Bottom Sheet.
  • These dual detail views use the same layout file and same UI code.
    • Only difference being that the Bottom Sheet view uses an addition class that extends the DetailViewHandler.
  • Some sandwich attributes, description, aliases, origin, and ingredients, are optionial. If they are empty, the UI will adapt.
  • NestedScrollView: Scroll through the content, while keeping the image and title in view.