Skip to main content
Essentials
Build AI experiences
Build AI-powered Android apps with Gemini APIs and more.
Get started
Get started
Start by creating your first app. Go deeper with our training courses or explore app development on your own.
Hello world
Training courses
Tutorials
Compose for teams
Kotlin for Android
Monetization with Play ↗️
Android Developer Verification
Extend by device
Build apps that give your users seamless experiences from phones to tablets, watches, headsets, and more.
Adaptive apps
Android XR
Wear OS
Android for Cars
Android TV
ChromeOS
Build by category
Learn to build for your use case by following Google's prescriptive and opinionated guidance.
Games
Camera & media
Social & messaging
Health & fitness
Productivity
Enterprise apps
Get the latest
Stay in touch with the latest releases throughout the year, join our preview programs, and give us your feedback.
Latest updates
Experimental updates
Android Studio preview
Jetpack & Compose libraries
Wear OS releases
Privacy Sandbox ↗️
Design & Plan
Excellent Experiences
Build the best experiences for your best users.
Learn more
UI Design
Design a beautiful user interface using Android best practices.
Design for Android
Mobile
Adaptive UI
Android XR
Widgets
Wear OS
Android TV
Architecture
Design robust, testable, and maintainable app logic and services.
Introduction
Libraries
Navigation
Modularization
Testing
Kotlin Multiplatform
Quality
Plan for app quality and align with Play store guidelines.
Overview
Core value
User experience
Accessibility
Technical quality
Excellent Experiences
Security
Safeguard users against threats and ensure a secure Android experience.
Overview
Privacy
Permissions
Identity
Fraud prevention
Develop
Gemini in Android Studio
Your AI development companion for Android development.
Learn more
Get Android Studio
Core areas
Get the samples and docs for the features you need.
Samples
User interfaces
Background work
Data and files
Connectivity
All core areas ⤵️
Tools and workflow
Use the IDE to write and build your app, or create your own pipeline.
Write and debug code
Build projects
Test your app
Performance
Command-line tools
Gradle plugin API
Device tech
Write code for form factors. Connect devices and share data.
Adaptive UI
Wear OS
Android XR
Android Health
Android for Cars
Android TV
All devices ⤵️
Libraries
Browse API reference documentation with all the details.
Android platform
Jetpack libraries
Compose libraries
Google Play services ↗️
Google Play SDK index ↗️
Google Play
Play Console
Publish your app or game and grow your business on Google Play.
Go to Play Console
Learn more ↗️
Fundamentals
Learn how to engage users, monitize, and secure your app.
Play Monetization
Play Integrity
Play Policies
Play Programs ↗️
Games Dev Center
Develop and deliver games. Get tools, downloads, and samples.
Overview
Play Asset Delivery
Play Games Services
Play Games on PC
All Play guides ⤵️
Libraries
Browse API reference documentation with all the details.
Play Feature Delivery
Play In-app Updates
Play In-app Reviews
Play Install Referrer
Google Play services ↗️
Google Play SDK index ↗️
All Play libraries ⤵️
Tools & resources
Tools for publishing, promoting, and managing your app.
Android App Bundles
Brand & marketing
Play Console APIs ↗️
Community
/
English
Deutsch
Español – América Latina
Français
Indonesia
Polski
Português – Brasil
Tiếng Việt
中文 – 简体
日本語
한국어
Android Studio
Sign in
Core areas
UI
Overview
Tutorial
Samples
Docs
Quick Guides
Essentials
More
Design & Plan
More
Develop
More
Overview
Tutorial
Samples
Docs
Quick Guides
Google Play
More
Community
Android Studio
Introduction
Documentation
Why Compose
Quick start
Compose Compiler Gradle Plugin
Thinking in Compose
Build adaptive apps
Bill of Materials
Using the Bill of Materials
BOM to library version mapping
UI architecture
Lifecycle
Side-effects
Phases
Managing state
Overview
Where to hoist state
Save UI state
Architecture
Architectural layering
CompositionLocal
Navigation
App layout
Overview
Layout basics
Modifiers
Constraints and modifier order
Custom modifiers
List of modifiers
Pager
Flow layouts
Custom layouts
Adaptive layouts
Overview
App orientation, aspect ratio, and resizability
Canonical layouts
Support different display sizes
Use window size classes
Support multi-window mode
Support desktop windowing
Support connected displays
Build adaptive navigation
Build a list-detail layout
Build a supporting pane layout
Adaptive do's and don'ts
Foldables
Learn about foldables
Make your app fold-aware
Support foldable display modes
Alignment lines
Intrinsic measurements
ConstraintLayout
Components
Overview
App bars
Overview
Navigate from top app bar
Create a dynamic top app bar
Badges
Bottom sheets
Overview
Partial bottom sheet
Button
Overview
Floating action button
Icon button
Segmented button
Card
Carousel
Checkbox
Chip
Date pickers
Dialog
Divider
Lists and grids
Menus
Navigation bar
Navigation drawer
Navigation rail
Progress indicators
Pull to refresh
Radio button
Resources
Scaffold
Search bar
Slider
Snackbar
Switch
Tabs
Time pickers
Overview
Time picker dialogs
Tooltip
Theming
Overview
Material Design 3
Migrate from Material 2 to Material 3
Material Design 2
Custom theming
Anatomy of a theme
Migrating XML themes to Compose
Text and typography
Overview
Display and style text
Display text from resource
Style text
Style paragraph
Configure text layout
Handle user input
Configure text fields
Migrate to state-based text fields
Enable user interactions
Work with fonts
Display emoji
Enable Autofill
Images and graphics
Overview
Images
Overview
Loading images
ImageBitmap vs ImageVector
Material icons
Customize an image
Custom painter
Optimizing performance
Graphics
Overview
Graphics Modifiers
Brush
Shapes
Animation
Overview
Choose an animation API
Quick guide
Animation modifiers and composables
Value-based animations
Animated vector images
Advanced animation example
Customize animations
Shared elements
Overview
Customize
Common use cases
With navigation
Additional samples
Test animations
Tools
Additional resources
Accessibility
Overview
API defaults
Semantics
Modify traversal order
Merging and clearing
Inspect and debug
Testing
Touch and input
Overview
Pointer input
Overview
Understand gestures
Tap and press
Scroll
Drag, swipe, and fling
Multi-touch gestures
Keyboard input
Handle keyboard actions
Keyboard Shortcuts Helper
Focus
Overview
Change focus traversal order
Change focus behavior
React to focus
User interactions
Handling interactions
Migrate to Indication and Ripple APIs
Drag and drop
Swipe to dismiss or update
Stylus input
Overview
Stylus input in text fields
Advanced stylus features
Note-taking apps
Add inking to your app with the Ink API
About the Ink API
Setup
Pick your module
Draw a stroke
Define your brushes
Create interactive tools with the Geometry APIs
State preservation and persistent storage
Copy and paste
Input compatibility on large screens
Performance
Overview
Phases
Baseline profiles
Stability
Overview
Diagnose stability issues
Fix stability issues
Strong skipping
Tools
Best practices
Style guidelines
Compose API guidelines
Kotlin for Compose
UI testing
Overview
Cheatsheet
Semantics
Testing APIs
Synchronize tests
Interoperability
Common patterns
Debug tests
Migrate to Compose
Overview
Migration strategy
Interoperability APIs
Overview
Using Compose in Views
Using Views in Compose
Common migration scenarios
Migrate RecyclerView to Compose
Migrate CoordinatorLayout to Compose
Migrate Jetpack Navigation to Navigation Compose
Other considerations
Adopt Compose for teams
Compose and other libraries
Compare Compose and View metrics
Tools
Overview
Design
Preview your UI
Preview and debug animations
Develop
Develop code iteratively
Editor actions
Lint
Debug
Overview
Trace app performance
System capabilities
Window insets
About window insets
Set up window insets
Use keyboard IME animations
Use Material 3 insets
Use insets in Views and Compose
About system bar protection
Cutouts
About cutouts
Test how your content renders with cutouts
Picture-in-picture
About PiP
Set up your app for PiP
Enter PiP at correct times
Add PiP through a button
Add remote actions to PiP
Predictive back
About predictive back
Set up predictive back
Access progress manually
Test predictive back
Create widgets
Overview
Glance setup
Create an app widget with Glance
Add generated previews to your widget picker
Pin Glance widgets in-app
Handle errors with Glance
Unit testing with Glance
Handle user interaction with Glance
Manage and update GlanceAppWidget
Build UI with Glance
Implement a Glance theme
Glance interoperability
Additional resources
Build AI experiences
Get started
Get started
Hello world
Training courses
Tutorials
Compose for teams
Kotlin for Android
Monetization with Play ↗️
Android Developer Verification
Extend by device
Adaptive apps
Android XR
Wear OS
Android for Cars
Android TV
ChromeOS
Build by category
Games
Camera & media
Social & messaging
Health & fitness
Productivity
Enterprise apps
Get the latest
Latest updates
Experimental updates
Android Studio preview
Jetpack & Compose libraries
Wear OS releases
Privacy Sandbox ↗️
Excellent Experiences
Learn more
UI Design
Design for Android
Mobile
Adaptive UI