Skip to main content
Link
Menu
Expand
(external link)
Document
Search
Copy
Copied
About this document
1. Introduction
1.1. Mobile devices
1.2. Hardware
1.3. Ecosystems
1.4. Types of apps
2. Android Studio
2.1. Android Studio IDE
2.2. Structure of an Android project
2.3. Gradle
2.4. Device Manager
2.5. Hardware devices
2.6. Device File Explorer
2.7. Generating the APK file
3. The Kotlin programming language
3.1. Types
3.2. Operators
3.3. Methods
3.4. Basic data structures
3.5. Control flow
3.6. Objects
4. Android app architecture
4.1. Activities
4.2. ViewModels
4.3. Fragments
4.4. 1-N vs N-N architectures
5. User interfaces
5.1. Measurement units
5.2. Basic components
5.3. Layouts
5.4. ScrollViews
5.5. WebView
5.6. Useful components
5.7. Adapters, Models and RecyclerView
5.8. Orientations and screen types
5.9. Multi-language
5.10. Custom Views
5.11. Animations and Transitions
6. Debugging and testing
6.1. Debugger
6.2. Local tests
6.3. Instrumented tests
7. Advanced Kotlin features
7.1. Variable arg lists
7.2. Methods as params
7.3. Lambda functions
7.4. Generics
7.5. Reflection
7.6. Kotlin and Java
7.7. Functional programming
7.8. Exceptions
8. Events
8.1. Listeners
8.2. Event handlers
8.3. Propagating and cancelling events
8.4. Grouping events
9. Local data persistence
9.1. User preferences
9.2. Local filesytem
9.3. JSON and XML
9.4. Relational databases
10. Concurrency
10.1. Coroutines
10.2. Synchronization
10.3. Using async and wait
10.4. Actors
10.5. WorkManager
11. Back-end
11.1. Firebase
11.2. Custom back-end
12. Services
12.1. Foreground services
12.2. Local bound services
12.3. Remote bound services
13. Notifications
13.1. Remote notifications
13.2. Local notifications
14. Geolocation and maps
14.1. Permissions
14.2. Geolocation
14.3. Geodecoding
14.4. Distances
14.5. Maps
Resources
Resources
Android for Developers
: Resources and official documentation by Google
Android Studio
: Official site of the IDE
Kotlin
: Official site of the Kotlin programming language
Kotlin Playground
: Edit, run and share Kotlin code from your browser