Some resources which can be used in future
================================
- https://github.com/codepath/android_guides/wiki
- https://github.com/wasabeef/awesome-android-libraries
- https://github.com/JStumpp/awesome-android
- https://github.com/futurice/android-best-practices
- https://github.com/cesards/AndroidElementals
- Playing with the new menu-to arrow toggle animattion added in the Support Library
- Reusing an example to build a pretty effect like the tab slide of google play app
- Using CircularReveal to show a pretty effect between activities
- Replicating some parts of the lollypop dialer app basing on the material design principle: Motion provides meaning
- Using StateListAnimator to change the elevation of a view smootly
Another Floating Button resource:
https://github.com/shell-software/fab
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.
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 |
Crouton | Context-sensitive, configurable alert notices much better than toasts |
Hugo | Easier logging using annotations |
LeakCanary | Catch memory leaks in your apps |
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.
Note that you cannot use IcePick at the current time to save state of Parceler objects. See this GitHub issue for more context. You will need to use Parcelable objects with IcePick.
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
}
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.inject(this);
- Dagger - A fast dependency injector for Android and Java. See this video intro from Square.
- AutoParcel - Port of Google AutoValue for Android with Parcelable generation goodies.
- 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
- AndroidViewAnimations - Common property animations made easy
- 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.
- 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 JobQueue - Easier background tasks
- ACRA - Crash reporting made easy and free. Check the setup instructions and open-source backend.
- 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.
- Volley - Google's HTTP library that makes networking for Android apps easier and most importantly, faster.
- Glide - Picasso image loading alternative endorsed by Google
- [IceNet] (https://github.com/anton46/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.
- 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
- EtsyStaggeredGrid - Staggered GridView
- Cardslib - Card UI for Lists or Grids
- SwipeListView - Swipeable List
- 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.
- 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
- 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
- Crouton - Context-sensitive, configurable alert notices much better than toasts. Download jar from here. See working sample code
- BetterPickers - BetterPickers for easy input selection
- 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
- 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
- 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.
- ZXing - Barcode or QR scanner
- barcodescanner - Newer alternative
- zxscanlib - ZXing alternative
- android-quick-response-code - Another alternative
- ActiveAndroid
- greenDAO
- SugarORM
- ORMLite
- Realm
- NexusData
- Hawk - Persistent secure key/value store
- Poetry - Persist JSON directly into SQLite
- 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
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.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/