Mastering Mobile Application Development. Learning iOS and Android Side-By-Side [2 ed.]

1,101 313 93MB

English Pages [572] Year 2021

Report DMCA / Copyright

DOWNLOAD FILE

Mastering Mobile Application Development. Learning iOS and Android Side-By-Side [2 ed.]

Table of contents :
Preface
IDE
Mobile Development Overview
iOS and Android Contrasted
Development Environment
Xcode
Interface Builder
Integrated Debugger and Simulators
Tools and Frameworks for Testing
Xcode Documentation
Managing Third Party Components with CocoaPods
Android Studio
Layout Editor
Gradle
Managing SDKs
Android Emulators
Test Framework and Debugger
Managing Libraries
Android Support Libraries
Upgrading to Android Studio 4.0
Writing Your First Mobile App
Traxy App Overview
Writing Our First Mobile App
Platform Similarities
Your Initial iOS App
Creating a Project in Xcode
Laying out the screen in Interface Builder
Adding Outlets and IBActions
Internationalization
Your Initial Android App
Creating a Project in Android Studio
Laying out the screen in Layout Editor
Renaming the Activity and Validating the Login Form
View Animations
String Resource Editor
Internationalization
Source Code Revision Control
Mobile App Architectures
Mobile Software Architecture
Process State Transitions
Mobile Resource Constraints
Application State Transitions
Application Process: a Home for UIViewController/Activity
Java Virtual Machine
Architectural Choice
Model View Presenter
Model-View-ViewModel
Lifecycles
Android Manifest
Android Architecture Components
Scene Transitions
Overview
Fleshing out Traxy for Login and User Signup
Scene transitions in iOS
Adding new view controllers to the storyboard
Adding new UIViewController classes
Establishing the identity of view controllers in Interface Builder
Adding segues in Interface Builder
Completing the view controller implementations
View Controller Lifecycles
Scene Transitions in Android
Adding New Activity Classes
App Bar Menu Items
Using Android Intents
Android Activity Stack
Finalize SignUpActivity and MainActivity
Handling MainActivity Logout Menu
Navigation Graphs
Adding ViewModel
Implicit Intents
Unresolved Intents
User Interfaces
Laying out Mobile User Interfaces
UI Styles and Themes
Layout and Styling on iOS
Auto Layout Overview
Introducing Auto Layout Constraints in Interface Builder
Adding Auto Layout to Traxy
Styling in iOS
Adding Styling to the Traxy App
Layout and Styling in Android
Which Layout?
Login Screen in LinearLayout
Login Screen in ConstraintLayout
Laying out the Login Screen
Applying Model-View-ViewModel
Styling/Theme in Android
Introduction to Material Theme
Collections of Data
Introduction
Challenge 1: List does not fit on the screen!
Challenge 2: Where's the data?
A Framework for Rendering Lists
Implementing Table Views in iOS
Where's the Data?
UITableView Overview and Some Housekeeping
Implementing UITableViewDataSource
Partitioning a Table View into Sections
Making it Pretty via a Custom Cell and UITableViewDelegate
Android RecyclerView
Adapters and View Holders
Your First RecyclerView
Using ViewModel With RecyclerView
Event Handling
Custom CoordinatorLayout.Behavior
Libraries
Use or Produce?
Traxy New Feature
Using Google Places API
Enhancing Traxy with Third Party Libraries
Integrating Third Party Libraries in Xcode
Using CocoaPods to Manage External Libraries
Enhancing Traxy
Library Management in Android
Using Data Generator
Google Play Services Libraries
Using Google Places API
Resolving Version Conflicts
Cloud Datastore Integration
Mobile Backend
Creating a New Firebase Project
Firebase Authentication
Firebase Realtime Database
Firebase Listeners
Firebase Cloud Firestore
Integrating Firebase with iOS
Using Firebase Authentication for User Management
Using Firebase Cloud Firestore as a Cloud Backend
Firebase in Android
Repository
Logging Out
Storing Data Into Firebase Cloud Firestore
Retrieving Data From Cloud Firestore
Kotlin Coroutines for Firebase
Working With Multimedia
Personal Media Players
Codecs: Media Data Compressors
The Need for Caching
Privacy Concerns
Enhancements to Traxy
Multimedia in iOS
Working with UITableViewController
Presenting Action Sheets
Working with Multimedia on iOS
Capturing Photos and Videos
Uploading Media to Firebase
Downloading and Displaying Captured Photos and Videos
Multimedia in Android
Expandable FABs
Taking Thumbnails
Taking Full-Size Photos
Selecting Photos from Gallery
Uploading Media Files to Cloud Storage
Recording Videos and Playback
Media Streaming with ExoPlayer 2.x
Working With Audio
Working with Audio in iOS
Audio Capture and Playback
Saving Audio Journal Entries to Firebase
Adding a Segue to AudioViewController
Audio Processing in Android
Recording Audio
Audio Playback
Audio Focus
Networking
Accessing Web APIs in Mobile Apps
Network Programming Challenges
General Guidelines for Networking in Mobile Apps
Web API Data Representations
Extending Traxy With Weather Data
Networking on iOS
Performing HTTP Requests From iOS
Processing JSON Representations in iOS
Extending Traxy with Weather Data From the Open Weather Web API
Networking on Android
HTTP Requests Using OkHttp3
HTTP Requests Using Retrofit
User Interface
UI Navigation
Tabbed Applications
Grid Layouts
Extending the Traxy User Interface
Tabs and Collections on iOS
Adding Tabs to Traxy
Handling Authentication and Refactoring Out Common Code
Customizing UITabBarController to Handle Authentication
Adding the Calendar Tab
Adding Cover Photo Selection
Tabs and Grid Layouts on Android
Pager Adapter
Update The Navigation Graph
Adding Tabs
Enhancing MainFragment
Completing MonthlyFragment
Adding Calendar
Handling the Edit Button
Querying and Displaying Photos
Selecting Cover Photo
Calendar Decorator
Bottom Navigation
Location and Maps
Location Aware Apps
Location Sensing Technologies
Privacy Considerations
Adding Location and Maps to Traxy
Maps and Location on iOS
Displaying and Interacting with Maps
Maps and Location on Android
Adding Maps to Traxy
Handling Map Interactions
Where am I?
Mocked Locations in Android Studio
Learning Swift
Language Overview
Variable Declarations
Strings
Collection Types
Control Flow
Functions
Closures
Tuples
Optionals
Objects
Enums
Structs
Classes
Protocols
Extensions
Further Study
Learning Kotlin
Inheritance and Overrides
Constructors
Static Members
Data Class
Implementing an Interface
Child Class Constructor
Variable Declarations
Nullable Types and the Elvis Operator
Using lateinit
Lambda Expressions
Control Structures
Generalized ``Switch''
Functions
Java Setters and Getters
Java Setters and Getters

Polecaj historie