Chapter 1: The First App
How Java and Android work together
The development environment
What makes an Android app
Chapter 2: Java – First Contact
Improving our app and deploying again
Chapter 3: Exploring Android Studio
The Android Studio guided tour
Chapter 4: Designing Layouts
Exploring Android UI design
Chapter 5: Real-World Layouts
Chapter 6: The Life and Times of an Android App
Introduction to the Android lifecycle
A simplified explanation of the Android lifecycle
Lifecycle phases – what we need to know
Lifecycle phases – what we need to do
The lifecycle demonstration app
The structure of Java code – revisited
Chapter 7: Coding in Java Part 1 – Variables, Decisions, and Loops
Storing and using data with variables
Changing values in variables with operators
Expressing yourself demo app
Repeating code with loops
Chapter 8: Coding in Java Part 2 – Methods
Scope and variables revisited
Chapter 9: Object-Oriented Programming
Important memory management warning
Taking a look at the code for a class
The basic classes mini app
Remember that encapsulation thing?
Encapsulation and static methods mini app
Chapter 10: Everything's a Class
All Android UI elements are classes too
Chapter 11: Widget Mania
Exploring Android UI objects
Android permissions and Marshmallows
The Widget exploration mini app
Chapter 12: Having a Dialogue with the User
About the Note To Self app
Building the project and gathering resources
Implementing the dialog designs
Chapter 13: Handling and Displaying Arrays of Data
Handling large amount of data with arrays
A simple array example mini app
Getting dynamic with arrays
Entering the nth dimension with arrays
Arrays and ArrayLists are polymorphic
Chapter 14: Handling and Displaying Notes in Note To Self
Improvements in Note To Self
Chapter 15: Android Intent and Persistence
Adding a settings page to the Note To Self app
Persisting data with SharedPreferences
Making the Note To Self app's settings persist
More advanced persistence
Backing up user data in Note To Self
Chapter 16: UI Animations
The Animations Demo app – introducing SeekBar
Adding animations to Note To Self
Chapter 17: Sound FX and Supporting Different Versions of Android
Supporting multiple versions of Android
Introducing the Spinner widget
Sound FX touches to Note To Self
Deleting a note – introducing OnLongClick
Chapter 18: Design Patterns, Fragments, and the Real World
Introducing the model-view-controller pattern
The imperfections of Note To Self revisited
Android design guidelines
The device detection mini app
Using configuration qualifiers – mini app
Our first working Fragment mini app
Chapter 19: Using Multiple Fragments
Using singletons for the model layer
Inter-Fragment communications – interfaces revisited
The dual-Fragment address book mini app
Chapter 20: Paging and Swiping
Building an image gallery/slider app
Building a Fragment pager/slider app
Chapter 21: Navigation Drawer and Where It's Snap
Introducing the navigation drawer
Chapter 22: Capturing Images
Capturing images using the camera
The capturing images mini app
Where it's snap – coding the capture Fragment
Chapter 23: Using SQLite Databases in Our Apps
Chapter 24: Adding a Database to Where It's Snap
Handling the SQLite database
Saving a new photo from the capture fragment
Displaying a photo from the database
Coding the communications interface
Coding the fragment communications in MainActivity
Chapter 25: Integrating Google Maps and GPS Locations
Global Positioning System
Where in the world – the GPS mini app
Chapter 26: Upgrading SQLite – Adding Locations and Maps
Adding locations and maps to Where it's Snap
Adding location permissions
Testing the new map feature
Chapter 27: Going Local – Hola!
The Localization mini app
Localizing the Where it's snap app
Chapter 28: Threads, Touches, Drawing, and a Simple Game
Drawing with canvas and paint
Building a simple game of Pong
Chapter 29: Publishing Apps
Building the publishable APK file
Chapter 30: Asynchronous Programming in Android
Android primary building blocks
Service in a separate process
Chapter 31: Performing Work with Looper, Handler, and HandlerThread
Chapter 32: Exploring the AsyncTask
Declaring AsyncTask types
Providing indeterministic progress feedback
Providing deterministic progress feedback
Controlling the level of concurrency
Applications of AsyncTask
Chapter 33: Exploring the JobScheduler API
Introduction to JobScheduler
Implementing the JobService
Scheduling a periodic job
Applications of the JobScheduler
Chapter 34: Interacting with the Network
Introducing Android HTTP clients
Performing HTTP requests asynchronously
Customizing HTTP timeouts
Communicating securely over SSL sessions
Chapter 35: Network Interactions with GCM
Setting up and configuring GCM for your application
Receiving downstream messages
Receiving messages from topic
Sending upstream messages
GcmListenerService delivery callbacks
Executing tasks with GCM Network Manager
Chapter 36: Asynchronous Programing with RxJava
Performing IO operations with Schedulers
Monitoring the event stream
Observing UI Events with RxJava
Chapter 37: Setting Up the Project
The right tool for the right game
The project – YASS (Yet Another Space Shooter)
Putting everything together
Moving forward with the example
Good practices for game developers
Chapter 38: Managing User Input
The InputController base class
The most basic virtual keypad
Creating a virtual joystick
Sensors and InputControllers
Chapter 39: Into the Draw Thread
Adding a frames-per-second (fps) counter
Spawning enemies – the GameController
Chapter 40: Collision Detection
Mixed collision detection
Chapter 41: Particle Systems
Making good particle systems
Chapter 42: Menus and Dialogs
Designing for multiple screen sizes
Chapter 43: To the Big Screen
Providing a home screen banner
Showing controller instructions