If your app needs to download large files which take time, the best option to perform long running downloads is to use android system provided DownloadManager.
Using any HTTP client, android apps can get data from and post data to server. Using simple http client library in your app requires you to write a lot of code to handle http connections, concurrent requests, threads, pooling, data cache, request prioritization and cancelling requests.
Android provides storage access framework (SAF) using which an app can provide options such as browse, read and write files. Storage access framework consists of document providers, client app and picker.
SQLite database is a relational database which is embedded in android system and is used to store structured data in android apps.
In android data about people is stored in a central repository. This repository is managed by contacts provider. Adding, modifying and retrieving data about people can be done using contacts provider.
If your application functionality or feature needs user calendar information, your app can get the calendar data using calendar provider or calendar intents.
If your application has data that is useful to other apps on a device, your app can share the data with other apps using content provider. Android provides a mechanism or framework to allow apps share data with other apps.
Change in state of a view hierarchy can be animated using transition framework. Meaning, on an event in an activity, all view changes from current state to target state can be animated using transition framework.
Learn how to create different animation effects using android property animation and TextView as target object.
Animation by displaying each drawable from sequence of drawables for certain duration can be achieved in Android using AnimationDrawable.
Animations in android can be implemented using property animation framework, view animation framework and drawable animation.
Android UI elements can be configured to draw shadows using elevation property. Elevation of a view can be set in code by calling setElevation method and in xml using elevation attribute.