Quicknav
Quicknav
Design
Develop
Distribute
Links
Google Play Developer Console
Android Developers Blog
About Android
Android Sites
Android.com
Android Developers
Android Open Source Project
close
Get Started
Style
Patterns
Building Blocks
Downloads
Videos
Training
API Guides
Reference
Tools
Get the SDK
Google Services
Google Play
Publishing
Promoting
App Quality
Spotlight
Open Distribution
Results
Loading...
Training
API Guides
Reference
Tools
Google Services
to top
Getting Started
Building Your First App
Creating an Android Project
Running Your Application
Building a Simple User Interface
Starting Another Activity
Managing the Activity Lifecycle
Starting an Activity
Pausing and Resuming an Activity
Stopping and Restarting an Activity
Recreating an Activity
Supporting Different Devices
Supporting Different Languages
Supporting Different Screens
Supporting Different Platform Versions
Building a Dynamic UI with Fragments
Using the Support Library
Creating a Fragment
Building a Flexible UI
Communicating with Other Fragments
Saving Data
Saving Key-Value Sets
Saving Files
Saving Data in SQL Databases
Interacting with Other Apps
Sending the User to Another App
Getting a Result from the Activity
Allowing Other Apps to Start Your Activity
Sharing Content
Sending Content to Other Apps
Receiving Content from Other Apps
Adding an Easy Share Action
Building Apps with
Multimedia
Managing Audio Playback
Controlling Your App's Volume and Playback
Managing Audio Focus
Dealing with Audio Output Hardware
Capturing Photos
Taking Photos Simply
Recording Videos Simply
Controlling the Camera
Building Apps with
Graphics & Animation
Displaying Bitmaps Efficiently
Loading Large Bitmaps Efficiently
Processing Bitmaps Off the UI Thread
Caching Bitmaps
Displaying Bitmaps in Your UI
Displaying Graphics with OpenGL ES
Building an OpenGL ES Environment
Defining Shapes
Drawing Shapes
Applying Projection and Camera Views
Adding Motion
Responding to Touch Events
Adding Animations
Crossfading Two Views
Using ViewPager for Screen Slide
Displaying Card Flip Animations
Zooming a View
Animating Layout Changes
Building Apps with
Connectivity & the Cloud
Connecting Devices Wirelessly
Using Network Service Discovery
Connecting with Wi-Fi Direct
Using Wi-Fi Direct for Service Discovery
Performing Network Operations
Connecting to the Network
Managing Network Usage
Parsing XML Data
Transferring Data Without Draining the Battery
Optimizing Downloads for Efficient Network Access
Minimizing the Effect of Regular Updates
Redundant Downloads are Redundant
Modifying Patterns Based on the Connectivity Type
Syncing to the Cloud
Using the Backup API
Making the Most of Google Cloud Messaging
Building Apps with
User Info & Location
Remembering Users
Remembering Your User
Authenticating to OAuth2 Services
Creating a Custom Account Type
Making Your App Location Aware
Using the Location Manager
Obtaining the Current Location
Displaying a Location Address
Best Practices for
User Experience & UI
Designing Effective Navigation
Planning Screens and Their Relationships
Planning for Multiple Touchscreen Sizes
Providing Descendant and Lateral Navigation
Providing Ancestral and Temporal Navigation
Putting it All Together: Wireframing the Example App
Implementing Effective Navigation
Implementing Lateral Navigation
Implementing Ancestral Navigation
Implementing Temporal Navigation
Implementing Descendant Navigation
Notifying the User
Building a Notification
Preserving Navigation when Starting an Activity
Updating Notifications
Using Big View Styles
Displaying Progress in a Notification
Adding Search Functionality
Setting up the Search Interface
Storing and Searching for Data
Remaining Backward Compatible
Designing for Multiple Screens
Supporting Different Screen Sizes
Supporting Different Screen Densities
Implementing Adaptive UI Flows
Designing for TV
Optimizing Layouts for TV
Optimizing Navigation for TV
Handling Features Not Supported on TV
Creating Custom Views
Creating a Custom View Class
Implementing Custom Drawing
Making the View Interactive
Optimizing the View
Creating Backward-Compatible UIs
Abstracting the New APIs
Proxying to the New APIs
Creating an Implementation with Older APIs
Using the Version-Aware Component
Implementing Accessibility
Developing Accessible Applications
Developing Accessibility Services
Best Practices for
User Input
Using Touch Gestures
Detecting Common Gestures
Tracking Movement
Animating a Scroll Gesture
Handling Multi-Touch Gestures
Dragging and Scaling
Managing Touch Events in a ViewGroup
Handling Keyboard Input
Specifying the Input Method Type
Handling Input Method Visibility
Supporting Keyboard Navigation
Handling Keyboard Actions
Best Practices for
Performance
Performance Tips
Improving Layout Performance
Optimizing Layout Hierarchies
Re-using Layouts with <include/>
Loading Views On Demand
Making ListView Scrolling Smooth
Running in a Background Service
Creating a Background Service
Sending Work Requests to the Background Service
Reporting Work Status
Loading Data in the Background
Running a Query with a CursorLoader
Handling the Results
Optimizing Battery Life
Monitoring the Battery Level and Charging State
Determining and Monitoring the Docking State and Type
Determining and Monitoring the Connectivity Status
Manipulating Broadcast Receivers On Demand
Sending Operations to Multiple Threads
Specifying the Code to Run on a Thread
Creating a Manager for Multiple Threads
Running Code on a Thread Pool Thread
Communicating with the UI Thread
Keeping Your App Responsive
JNI Tips
SMP Primer for Android
Best Practices for
Security & Privacy
Security Tips
Developing for Enterprise
Enhancing Security with Device Management Policies
Using Google Play to
Distribute & Monetize
Selling In-app Products
Preparing Your App
Establishing Products for Sale
Purchasing Products
Testing Your App
Maintaining Multiple APKs
Creating Multiple APKs for Different API Levels
Creating Multiple APKs for Different Screen Sizes
Creating Multiple APKs for Different GL Textures
Creating Multiple APKs with 2+ Dimensions
Monetizing Your App
Advertising without Compromising User Experience
Best Practices for Security & Privacy
These classes and articles provide information about how to keep your app's data secure.