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
Italiano
Polski
Português – Brasil
Tiếng Việt
Türkçe
Русский
עברית
العربيّة
فارسی
हिंदी
বাংলা
ภาษาไทย
中文 – 简体
中文 – 繁體
日本語
한국어
Android Studio
Sign in
Core areas
UI
Views
Essentials
More
Design & Plan
More
Develop
More
Google Play
More
Community
Android Studio
Develop your app's layout
About layouts
Create responsive/adaptive design with views
Canonical layouts
Use window size classes
Support multi-window mode
Build a responsive UI with ConstraintLayout
Build responsive navigation
Create dynamic lists with RecyclerView
Customize a dynamic list
Create a card-based layout
Create a two-pane layout
Create a linear layout
Fill a layout with data
Create a relative layout
Activity embedding
Improve layout performance
About layout performance
Optimize layout hierarchies
Reuse layouts with <include>
Load views on demand
Create custom view components
About custom view components
How Android draws views
Create a custom view class
Implement a custom drawing
Make a custom view interactive
Optimize a custom view
Work with window insets and cutouts
Lay out your app within windows insets
Display content edge-to-edge
Apply rounded corners
Hide system bars for immersive mode
Support display cutouts
Control and animate the software keyboard
Add web-based content to your app
Using web content in your app
Embed web content into your app
In-app browsing using embedded web
Overview of Android Custom Tabs
Overview of Trusted Web Activities
Guide for Trusted Web Activities
Develop web apps in WebView
Manage WebView objects
Load local content
Darken web content
Support different screens in web apps
Debug web apps
Implement best practices
User privacy in WebView crash reporting
Beta program
Executing JavaScript and WebAssembly
Apply themes
About themes
Use the device colors (Dynamic Color)
Select colors with the palette library
Use Material Design as a guideline
Implement dark theme
Create shadows and clip views
Add components
Add core components
Floating action buttons (FABs)
Buttons
Check boxes
Radio buttons
Toggle buttons
Pickers
Tooltips
Dialogs
Menus
Add the app bar component
About app bars
Set up the app bar
Add and handle actions
Add an up action
Use action views and action providers
Add the settings component
About settings
Organize your settings
Customize your settings
Use saved values
Create a hierarchy in code
Handle other device sizes
Implement preference best practices
Integrate the Android search component
Search options
Create a search UI
Add search results from recent queries
Add custom search results
Provide a search configuration
Use AppSearch
Add search functionality
About search functionality
Set up the search UI
Storing and searching for data
Remain backward compatible with Search
Work with text and emoji
Autosize text views
Download fonts on the fly
Add a font as an XML resource
Add emoji support
Add support for modern emoji
Keep up to date with emoji
Use the Emoji Picker
Magnify text
Use spans to style text
Display graphics and videos
Static images
About static images
Vector images
Bitmaps
Reduce image sizes
Fix custom-drawing issues
Add media playback controls
Add videos using picture-in-picture (PiP)
Work with advanced images and graphics
Draw with AGSL shaders
About AGSL shaders
About AGSL versus GLSL
Use AGSL in your app
AGSL quick reference
Use OpenGL ES for graphics
Display graphics with Open GL ES
Learn how to use Open GL ES with graphics
About Open GL
Build an Open GL ES environment
Define shapes
Draw shapes
Apply projection and camera views
Add motion
Respond to touch events
Create APKs for different GL textures
Renderscript
About Renderscript
Advanced RenderScript
Migrate from RenderScript
Overview
Migrate scripts to OpenGL ES 3.1
Migrate scripts to Vulkan
Runtime API reference
About Runtime API
Numerical types
Object types
Conversion functions
Mathematical constants and functions
Vector math functions
Matrix functions
Quaternion functions
Atomic update functions
Time functions and types
Allocation data access functions
Object characteristics functions
Kernel invocation functions and types
Input/output functions
Debugging functions
Graphics functions and types
Index
Work with animations and transitions
In this guide
About animations in Android
About property animations
Animate drawable graphics
Animate views
Generate images between keyframes in an animation
Show or hide a view
Move a view using animation
Move a view using fling animation
Enlarge a view using zoom animation
Animate movement using spring physics
Auto-animate layout updates
Animate layout changes using a transition
Create a custom transition animation
Start an activity using an animation
MotionLayout
Manage motion and widget animation
Add a carousel
MotionLayout examples
Slide between fragments
Use ViewPager2 to slide between fragments
Use ViewPager to slide between fragments
Migrate from ViewPager to ViewPager2
Optimize frame rate with adaptive refresh rate
Use additional animation resources
Add support for touch and input
In this guide
About input events
Use touch gestures
About gestures
Detect common gestures
Track touch and pointer movements
Handle scroll gestures
Add support for navigation gestures
Detect multi-touch gestures
Add support for drag and scale
Manage touch events in a ViewGroup
Add support for swipe-to-refresh
About swipe-to-refresh
Add swipe-to-refresh to your app
Respond to a refresh request
Handle keyboard input
About keyboards
Specify the input method type
Handle input method visibility
Support keyboard navigation
Handle keyboard actions
Handle stylus input
About stylus
Stylus input in text fields
Custom text editors
Advanced stylus features
Note-taking apps
Ink API
About the Ink API
Setup
Pick your module
Draw a stroke
Define your brushes