Must Have Libraries
Pages 164
- Home
- Accessing the Camera and Stored Media
- ActionBar Tabs with Fragments
- ActiveAndroid Guide
- Activity Lifecycle
- Android Bootcamp Cliffnotes
- Android Design Guidelines
- Android Directory Structure
- Android Testing Framework
- Android Testing Options
- Android Unit and Integration testing
- Animations
- Audio Playback and Recording
- Automating Publishing to the Play Store
- Basic Event Listeners
- Basic Painting with Views
- Basic Todo App Tutorial
- Beginning Android Resources
- Book Search Tutorial
- Building Data driven Apps with Parse
- Building Gradle Projects with Jenkins CI
- Building Simple Chat Client with Parse
- Building your own Android library
- Chrome Custom Tabs
- Circular Reveal Animation
- Clean Persistence with Sugar ORM
- Cloning a Login Screen Layout Guide
- CodePath Goal
- Collaborating on Projects with Git
- Common Implicit Intents
- Common Navigation Paradigms
- Communicating with an Event Bus
- Configuring a Parse Server
- Configuring ProGuard
- Connectivity using the Bluetooth API
- Constructing View Layouts
- Consuming APIs with Retrofit
- Contributing back to Android
- Contributing Guidelines
- Converting JSON to Models
- Creating and Executing Async Tasks
- Creating and Using Fragments
- Creating Content Providers
- Creating Custom Listeners
- DBFlow Guide
- Debugging and Profiling Apps
- Defining Custom Views
- Defining The ActionBar
- Defining Views and their Attributes
- Dependency Injection with Dagger 2
- Design Support Library
- Developing Custom Themes
- Displaying Images with the Fresco Library
- Displaying Images with the Picasso Library
- Displaying the Snackbar
- Displaying Toasts
- Drawables
- Drawing with OpenGL and GLSurfaceView
- Dynamic Color using Palettes
- Easier SQL with Cupboard
- Endless Scrolling with AdapterViews
- Endless Scrolling with AdapterViews and RecyclerView
- Extended ActionBar Guide
- Extending SurfaceView
- Flexible User Interfaces
- Floating Action Buttons
- Fragment Navigation Drawer
- Free Android Curriculum
- Genymotion 2.0 Emulators with Google Play support
- Gestures and Touch Events
- Getting Started with Gradle
- Google Cloud Messaging
- Google Maps API v2 Usage
- Google Maps Fragment Guide
- Google Play Style Tabs using TabLayout
- Handling Configuration Changes
- Handling ProgressBars
- Handling Scrolls with CoordinatorLayout
- Heterogenous Layouts inside RecyclerView
- Implementing a Heterogenous ListView
- Implementing a Horizontal ListView Guide
- Implementing a Rate Me Feature
- Implementing Pull to Refresh Guide
- Installing Android SDK Tools
- Interacting with the Calendar
- Intermediate
- Keeping Updated with Android
- Leveraging the Gson Library
- Listening to Sensors using SensorManager
- Loading Contacts with Content Providers
- Local Databases with SQLiteOpenHelper
- Managing Runtime Permissions with PermissionsDispatcher
- Managing Threads and Custom Services
- Material Design Primer
- Menus and Popups
- Migrating to the AppCompat Library
- Mobile Screen Archetypes
- Must Have Libraries
- Navigation and Task Stacks
- Networking with the Volley Library
- Notification Services (GeoFence, Calendar)
- Notifications
- Open Source projects for Android development
- Organizing your Source Files
- Persisting Data to the Device
- Polishing a UI Tips and Tools
- Popular External Tools
- Populating a ListView with a CursorAdapter
- Presenting an Android Device
- Progress Bar Custom View
- Publishing to the Play Store
- Push Messaging
- Real time Messaging
- Recording Video of an Android Device
- Reducing View Boilerplate with Butterknife
- Repeating Periodic Tasks
- Retrieving Location with LocationServices API
- Ripple Animation
- Robolectric Installation for Unit Testing
- Rotten Tomatoes Networking Tutorial
- RxJava
- Sample Android Apps
- Sending and Managing Network Requests
- Sending and Receiving Data with Sockets
- Setting up IntelliJ IDEA
- Setting up Travis CI
- Settings with PreferenceFragment
- Shared Element Activity Transition
- Sharing Content with Intents
- Sliding Tabs with PagerSlidingTabStrip
- Starting Background Services
- Storing and Accessing SharedPreferences
- Styles and Themes
- Styling UI Screens FAQ
- Troubleshooting Common Issues
- Troubleshooting Common Issues with Parse
- Troubleshooting Eclipse Issues
- UI Testing with Espresso
- UI Testing with Robotium
- Understanding App Permissions
- Understanding App Resources
- Unit Testing with Robolectric
- Using an ArrayAdapter with ListView
- Using Android Async Http Client
- Using Android Studio
- Using Context
- Using DialogFragment
- Using Intents to Create Flows
- Using OkHttp
- Using Parcelable
- Using Parceler
- Using Retrofit for REST Clients
- Using the App ToolBar
- Using the CardView
- Using the RecyclerView
- Video Playback and Recording
- ViewPager with FragmentPagerAdapter
- Working with Input Views
- Working with the EditText
- Working with the ImageView
- Working with the ScrollView
- Working with the Soft Keyboard
- Working with the TextView
- Working with the WebView
- Show 149 more pages…
Overview
There are many third-party libraries for Android but several of them are "must have" libraries that are extremely popular and are often used in almost any Android project. Each has different purposes but all of them make life as a developer much more pleasant. The major libraries are listed below in a few categories.
Standard Pack
This "standard pack" listed below are libraries that are quite popular, widely applicable and should probably be setup within most Android apps:
| Name | Description |
|---|---|
| Retrofit | A type-safe REST client for Android which intelligently maps an API into a client interface using annotations. |
| Picasso | A powerful image downloading and caching library for Android. |
| ButterKnife | Using Java annotations, makes Android development better by simplifying common tasks. |
| Parceler | Android Parcelable made easy through code generation |
| IcePick | Android Instance State made easy |
| Hugo | Easier logging using annotations |
| LeakCanary | Catch memory leaks in your apps |
| Espresso | Powerful DSL for Android integration testing |
| Robolectric | Efficient unit testing for Android |
The "advanced pack" listed below are additional libraries that are more advanced to use but are popular amongst some of the best Android teams. Note that these libraries may not be suitable for your first app. These advanced libraries include:
| Name | Description |
|---|---|
| Dagger 2 | A fast dependency injector for managing objects. |
| RxAndroid | Develop fully reactive components for Android. |
| EventBus | Android event bus for easier component communication. |
| AndroidAnnotations | Powerful annotations to reduce boilerplate code. |
Keep in mind that the combination of these libraries may not always play nicely with each other. The following section highlights some of these issues.
ButterKnife and Parceler
Using the Butterknife library with the Parceler library causes multiple declarations of javax.annotation.processing.Processor. In this case, you have to exclude this conflict in your app/build.gradle file:
packagingOptions {
exclude 'META-INF/services/javax.annotation.processing.Processor' // butterknife
}ButterKnife and Custom Views
Often you may find that using ButterKnife or Dagger injections defined in your constructor prevent Android Studio to preview your Custom View layout. You may see an error about needing isEditMode() defined.
Essentially this method is used to enable your code to short-circuit before executing a section of code that might be used for run-time but cannot be executed within the preview window.
public ContentEditorView(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.view_custom, this, true);
// short circuit here inside the layout editor
if(isInEditMode()) {
return;
}
ButterKnife.bind(this);Convenience
- Dagger - A fast dependency injector for Android and Java. See this video intro from Square.
- Spork - Spork is an annotation processing library to speed up development on your projects. It allows you to write less boilerplate code to make your code more readable and maintainable.
- AutoParcel - Port of Google AutoValue for Android with Parcelable generation goodies.
- Akatsuki - Handles instance state restoration via annotations
- Hugo - Easier logging within your app
- Logger - Much cleaner and easier logcat trace messages
- Trikita Log - Tiny logger backwards compatible with android.util.Log, but supporting format strings, comma-separated values, non-android JVMs, optional tags etc
- LeakCanary - Easily catch memory leaks as they occur
- AndroidAnnotations - Framework that speeds up Android development. It takes care of the plumbing, and lets you concentrate on what's really important. By simplifying your code, it facilitates its maintenance
- RoboGuice - Powerful extensions to Android using dependency injection.
- Calligraphy - Custom fonts made easy
- EasyFonts - Easy preloaded custom fonts in your app
- AndroidViewAnimations - Common property animations made easy
- AboutLibraries - Automatically generates an About this app section, with a list of used libraries
-
SDK Manager Plugin - Helpful plugin especially for group projects if you're missing an SDK version, haven't downloaded an API version, or your support library is updated.
Extensions
- Otto - An enhanced Guava-based event bus with emphasis on Android support
- EventBus - Android optimized event bus that simplifies communication between components.
- Tape - Tape is a collection of queue-related classes for Android and Java
- RxJava - Reactive Extensions for the JVM
- Priority Job Queue - Easier background tasks
- ACRA - Crash reporting made easy and free. Check the setup instructions and open-source backend.
Networking
- Retrofit - A type-safe REST client for Android and Java which intelligently maps an API into a client interface using annotations.
- Picasso - A powerful image downloading and caching library for Android.
- Ion - Powerful asynchronous networking library. Download as a jar here.
- Android Async HTTP - Asynchronous networking client for loading remote content such as JSON.
- Chronos - Android library that handles asynchronous jobs.
- Volley - Google's HTTP library that makes networking for Android apps easier and most importantly, faster.
- OkHttp - Square's underlying networking library with support for asynchronous requests.
- Glide - Picasso image loading alternative endorsed by Google
- IceNet - Android networking wrapper consisting of a combination of Volley, OkHttp and Gson
- Android Universal Image Loader - Popular alternative for image loading that can replace Picasso or Glide.
- Fresco - An image management library from Facebook.
ListView
- EasyListViewAdapters - Building multi-row-type listview made much cleaner & easier.
- GridListViewAdapters - Easily build unlimited Grid cards list like play-store. (ListView working as unlimited GridView)
- StickyListHeaders - An android library for section headers that stick to the top of a ListView
- PinnedListView - Pinned Section with ListView
- ListViewAnimations - Easy way to animate ListView items
- Cardslib - Card UI for Lists or Grids
- PullToRefresh-ListView - Easy to use pull-to-refresh functionality for ListViews. Download and install as a library project.
- QuickReturn - Reveal or hide a header or footer as the list is scrolled in a direction.
- Paginated Table - This is a table which allows dynamic paging for any list of objects. Icons can be added to columns as well as custom items such as check boxes and buttons.
RecyclerView
- UltimateRecyclerView - Augmented RecyclerView with refreshing, loading more, animation and many other features.
- android-parallax-recyclerview - An adapter which could be used to achieve a parallax effect on RecyclerView.
- sticky-headers-recyclerview - Sticky Headers decorator for Android's RecyclerView.
- FastAdapter - Simplify and speed up the process of filling your RecyclerView with data
- ItemAnimators - RecyclerView animators to animate item add/remove/add/move
- GreedoLayout - Full aspect ratio grid LayoutManager for Android's RecyclerView
Easy Navigation
-
PagerSlidingTabStrip - An interactive indicator to navigate between the different pages of a ViewPager.
- jpardogo/PagerSlidingTabStrip - This fork of the original is actively maintained and has support for a material design look.
- ViewPagerIndicator - Paging indicator widgets compatible with the ViewPager from the Android Support Library and ActionBarSherlock.
- JazzyViewPager - Pager with more animations
- ParallaxPager - ViewPager with Parallax scrolling effects
- ParallaxHeaderViewPager - Another ViewPager with Parallax scrolling effects
- ParallaxPagerTransformer - A pager transformer for Android with parallax effect
- SlidingMenu - Library that allows developers to easily create applications with sliding menus like those made popular in the Google+, YouTube, and Facebook apps.
- Android Satellite Menu - Radial menu which is configurable reminiscent of the "Path" menu style.
- ArcMenu - Alternate radial menu modeled after the "Path" menu style.
- AndroidSlidingUpPanel - Sliding Up Panel
- DraggablePanel - Panels that can be dragged
- MaterialDrawer - Easily add a Navigation Drawer with Material style and AccountSwitcher
UI Components
- Crouton - Context-sensitive, configurable alert notices much better than toasts. Download jar from here. See working sample code
- BetterPickers - BetterPickers for easy input selection
- android-shape-imageview - Custom shaped android imageview components including bubble, star, heart, diamond.
- RoundedImageView - Easily round corners or create oval-shaped images with this popular library.
- Android StackBlur - Dynamically blur images
- Android Bootstrap - Bootstrap UI widgets
- PhotoView - ImageView that supports touch gestures
- ShowcaseView - Highlight the best bits of your app
- FadingActionBar - Cool actionbar fade effect
- AndroidViewAnimations - Easily apply common animations
- ProgressWheel - Better progress bar
- SmoothProgressBar - Horizontal indeterminate progress
- CircularFillableLoaders - Beautiful animated fillable loaders
- Rebound - Easy spring dynamics
- AndroidImageSlider - Animated image transitions
- FloatingActionButton - Material design floating buttons made easy
- Foursquare-CollectionPicker - Item Picker which looks like Foursquare Tastes picker
- NexusDialog - Create form dialogs easily
- dialogplus - Simple, easy dialogs
- Iconify - Easily embed icons into your app
- Android StepsView - A library to create StepsView for Android
- PhotoView - A library to pinch zoom in and zoom out and double tap zoom for Android
- Android-Iconics - Add many scalable and styleable icons into your app
- Scissors - An easy image cropping library developed by Lyft.
Drawing
- Leonids - Simple and easy particle effects (See Tutorial)
- MPAndroidChart - A powerful Android chart view / graph view library
- AChartEngine - This is a charting software library for Android applications
- HoloGraphLibrary - Newer graphing library
- EazeGraph - Another newer library with potential
- AndroidCharts - Easy to use charts
- AndroidGraphView - library to create flexible and nice-looking diagrams.
- AndroidPlot - plotting library for Android
- WilliamChart - Flexible charting library with useful motion capabilities.
- HelloCharts - Charts/graphs library for Android with support for scaling, scrolling and animations.
- MPAndroidChart-A powerful Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, dragging and animations.
Image Processing
- android-gpuimage - Popular GPU Image Processing
- android-image-filter - Older image filtering library
- picasso-transformations - Library for processing images via Picasso
- glide-transformations - Process images via Glide
- ImageEffectFilter - Sample code for processing images.
Scanning
- ZXing - Barcode or QR scanner
- ZXing Android Embedded - Alternative zxing scanner
- barcodescanner - Newer alternative
- zxscanlib - ZXing alternative
- android-quick-response-code - Another alternative
Persistence
- ActiveAndroid
- DBFlow - A robust, powerful, and very simple ORM android database library with annotation processing.
- greenDAO
- SugarORM
- RxCache - Reactive caching library for Android
- ORMLite
- SQLBrite - Lightweight wrapper around SQLiteOpenHelper
- Cupboard - Popular take on SQL wrapper
- StorIO - Fresh take on a light SQL wrapper
- Realm
- NexusData
- Hawk - Persistent secure key/value store
- Poetry - Persist JSON directly into SQLite
- JDXA - The KISS ORM for Android - Simple, Non-intrusive, and Flexible
Compatibility
- NineOldAndroids - Fully compatible animation library that works with all versions of Android. Widely used. Download and install as a library project.
- HoloEverywhere - Backport Holo theme from Android 4.2 to 2.1+
- CropImage - Simple compatible cropping intent for images
Scrolling and Parallax
This is a list of popular scrolling and parallax libraries:
- QuickReturn - Reveal or hide a header or footer as the list is scrolled in a direction.
- ParallaxPagerTransformer - A pager transformer for Android with parallax effect
- ParallaxHeaderViewPager - Another ViewPager with Parallax scrolling effects
- Android-ObservableScrollView - Android library to observe scroll events on scrollable views.
- Scrollable - Automatic scrolling logic when implementing scrolling tabs
- ParallaxPager - ViewPager with Parallax scrolling effects
- android-parallax-recyclerview - An adapter which could be used to achieve a parallax effect on RecyclerView.
Debugging
- Stetho - A debug bridge for Android applications which could be used for multiple purposes not limited to Network Inspection, Database Inspection and Javascript Console.
Resources
Check out the following resources for finding libraries:
- Android Elementals
- Wasabeef Core Libraries
- Wasabeef UI Libraries
- Android-Libs.com
- http://androidlibs.org/
- http://appdevwiki.com/wiki/show/HomePage
- http://androidweekly.net/toolbox
- http://android-arsenal.com
- http://www.libtastic.com
References
- http://www.vogella.com/tutorials/AndroidUsefulLibraries/article.html
- http://actionbarsherlock.com/
- http://nineoldandroids.com/
- https://github.com/roboguice/roboguice/wiki
- https://github.com/excilys/androidannotations/wiki
- https://github.com/erikwt/PullToRefresh-ListView
- https://github.com/jfeinstein10/SlidingMenu
- http://square.github.io/picasso/
Created by CodePath with much help from the community.