├── LICENSE
├── README.md
├── others
└── Logger.java
└── raw
├── top-banner.png
└── ultimate-android-reference-logo-small.png
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "{}"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright {yyyy} {name of copyright owner}
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | The goal of this project is to provide a hand-picked collection of Android libraries, tools, open-source projects, books, blogs, tutorials - you name it.
4 |
5 | This project will try to **showcase only the best, most popular and well-tested resources** that you will actually need and find useful rather than overwhelming you with a plethora of low-quality ones.
6 |
7 | Happy learning. :+1:
8 |
9 | #### Featured In :star:
10 | [](http://androidweekly.net/issues/issue-255) [](https://www.androiddevdigest.com/digest142/) [](https://blog.mindorks.com/hello-android-weekly-update-1-10c57648b544) [](https://blog.mindorks.com/hello-android-weekly-update-1-10c57648b544)
11 |
12 | #### Spread Some :heart:
13 |
14 | [](https://github.com/aritraroy/ultimate-android-reference) [](https://github.com/aritraroy/ultimate-android-reference/fork) [](https://github.com/aritraroy/ultimate-android-reference)[](https://github.com/aritraroy) [](https://twitter.com/aritraroy93)
15 |
16 | [](https://opensource.org/licenses/Apache-2.0)
17 | [](https://github.com/aritraroy/ultimate-android-reference/blob/master/LICENSE)
18 |
19 |
20 | ## Contribution Guide
21 |
22 | This project is open to all kinds of contribution in all of its categories. **Together, we can make it the ultimate Android reference available for free, for everyone, forever.**
23 |
24 | For resource contribution, just follow the following format: `[reference-name](link) - Description`, and raise a Pull Request. If you want to contribute multiple resources, raise separate PRs for each of them. Please consider adding resources maintaining the default sorting order of the category, like alphabetical sorting.
25 |
26 | If you have any suggestion for including more categories, feel free to open a Github issue for us to have more discussion on it. Please **DO NOT** contribute low-quality, spammy or self-promotional stuff. **Let's keep this project clean and useful.**
27 |
28 | If you feel that a particular resource(s) listed here is not a good fit for this project and should be removed, feel free to let me know by opening an issue.
29 |
30 |
31 | ## Categories
32 |
33 | * [Libraries](#libraries)
34 | * [Animations](#animations)
35 | * [Background Processing](#background-processing)
36 | * [Charts](#charts)
37 | * [Crash Reporting & Tracking](#crash-reporting--tracking)
38 | * [Debugging](#debugging)
39 | * [Dependency Injection](#dependency-injection)
40 | * [Image Loading](#image-loading)
41 | * [Image Processing](#image-processing)
42 | * [Logging](#logging)
43 | * [Networking](#networking)
44 | * [Persistence](#persistence)
45 | * [Testing](#testing)
46 | * [UI Components](#ui-components)
47 | * [Utilities](#utilities)
48 | * [Utilities (Advanced)](#utilities-advanced)
49 | * [Open-Source Apps](#open-source-apps)
50 | * [Beginner](#beginner)
51 | * [Intermediate](#intermediate)
52 | * [Expert](#expert)
53 | * [Tools](#tools)
54 | * [Free](#free)
55 | * [Free (+ Pro)](#free--pro)
56 | * [Kotlin for Android](#kotlin-for-android)
57 | * [Android Studio Shortcuts](#android-studio-shortcuts)
58 | * [Android Studio Live Templates](#android-studio-live-templates)
59 | * [Sites](#sites)
60 | * [Books](#books)
61 | * [Sample Projects](#sample-projects)
62 | * [Video Tutorials](#video-tutorials)
63 | * [Twitter Profiles](#twitter-profiles)
64 | * [Game Development](#game-development)
65 | * [Frameworks](#frameworks)
66 | * [Open-Source Games](#open-source-games)
67 |
68 |
69 | ## Libraries
70 | These are some of the best and the most popular libraries and utilities to boost up your Android development. This list is divided into several essential categories and only includes resources which have been battle-tested by a variety of developers over a long time.
71 |
72 | ### Animations
73 |
74 | * [AndroidViewAnimations](https://github.com/daimajia/AndroidViewAnimations) - Cute view animation collection
75 | * [Backboard](https://github.com/tumblr/Backboard) - A motion-driven animation framework for Android
76 | * [Bubble-Picker](https://github.com/igalata/Bubble-Picker) - An easy-to-use animation which can be used for content picking for Android
77 | * [ExpectAnim](https://github.com/florent37/ExpectAnim) - Describe your animation and run
78 | * [Grav](https://github.com/glomadrian/Grav) - Configurable animations based on points
79 | * [Lottie](https://github.com/airbnb/lottie-android) - Render After Effects animations natively on Android and iOS
80 | * [Rebound](https://github.com/facebook/rebound) - A Java library that models spring dynamics and adds real world physics to your app
81 | * [Spruce](https://github.com/willowtreeapps/spruce-android) - Spruce Animation Library
82 | * [ViewAnimator](https://github.com/florent37/ViewAnimator) - A fluent Android animation library
83 |
84 |
85 | ### Background Processing
86 |
87 | * [Android Priority Job Queue](https://github.com/yigit/android-priority-jobqueue) - A Job Queue specifically written for Android to easily schedule jobs (tasks) that run in the background, improving UX and application stability
88 | * [Evernote Android Job](https://github.com/evernote/android-job) - Android library to handle jobs in the background
89 | * [Firebase Job Dispatcher](https://github.com/firebase/firebase-jobdispatcher-android) - The Firebase JobDispatcher is a library for scheduling background jobs in your Android app. It provides a JobScheduler-compatible API that works on all recent versions of Android (API level 9+) that have Google Play services installed
90 |
91 |
92 | ### Charts
93 |
94 | * [EazeGraph](https://github.com/blackfizz/EazeGraph) - An Android chart and graph library
95 | * [HelloCharts](https://github.com/lecho/hellocharts-android) - Charts/graphs library for Android compatible with API 8+, several chart types with support for scaling, scrolling and animations
96 | * [MPAndroidChart](https://github.com/PhilJay/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
97 | * [Spark](https://github.com/robinhood/spark) - A simple Android sparkline chart view
98 | * [WilliamChart](https://github.com/diogobernardino/WilliamChart) - Android library to create charts
99 |
100 |
101 | ### Crash Reporting & Tracking
102 |
103 | * [Bugsee](https://www.bugsee.com) - Flight recorder for your iOS
104 | and Android apps
105 | * [Bugsnag](https://www.bugsnag.com) - Monitor application errors to improve customer experiences and code quality
106 | * [CleverTap](https://clevertap.com) - A complete tool to track and analyze user activity in your Android app
107 | * [Countly](https://count.ly) - End-to-end platform for web, mobile applications and game analytics
108 | * [Fabric Crash Analytics](https://get.fabric.io) - Fabric is a platform that helps your mobile team build better apps, understand your users, and grow your business
109 | * [HockeyApp](https://hockeyapp.net) - Bring Mobile DevOps to your apps with beta distribution, crash reporting, user metrics, feedback, and powerful workflow integrations
110 | * [InstaBug](https://instabug.com) - The top apps in the world rely on Instabug for beta testing, user engagement and crash reporting
111 | * [MixPanel](https://mixpanel.com) - Deeply understand every user's journey with instant insights for everyone on mobile and web
112 |
113 |
114 | ### Debugging
115 |
116 | * [Android Debug Database](https://github.com/amitshekhariitbhu/Android-Debug-Database) - A library for debugging Android databases and shared preferences
117 | * [Android Performance Monitor](https://github.com/markzhai/AndroidPerformanceMonitor) - A transparent ui-block detection library for Android (known as BlockCanary)
118 | * [Chuck](https://github.com/jgilfelt/chuck) - An in-app HTTP inspector for Android OkHttp clients
119 | * [Debug Drawer](https://github.com/palaima/DebugDrawer) - Android Debug Drawer for faster development
120 | * [LeakCanary](https://github.com/square/leakcanary) - A memory leak detection library for Android and Java
121 | * [Stetho](https://github.com/facebook/stetho) - Stetho is a debug bridge for Android applications, enabling the powerful Chrome Developer Tools and much more
122 | * [Takt](https://github.com/wasabeef/Takt) - Takt is Android library for measuring the FPS using Choreographer
123 |
124 |
125 | ### Dependency Injection
126 |
127 | * [Butterknife](https://github.com/JakeWharton/butterknife) - Bind Android views and callbacks to fields and methods
128 | * [Dagger](https://github.com/square/Dagger) - A fast dependency injector for Android and Java
129 | * [Dagger 2](https://github.com/google/dagger) - A fast dependency injector for Android and Java
130 | * [Dart](https://github.com/f2prateek/dart) - Extras "injection" library for Android
131 |
132 | ### Image Loading
133 |
134 | * [Android Universal Image Loader](https://github.com/nostra13/Android-Universal-Image-Loader) - Powerful and flexible library for loading, caching and displaying images on Android
135 | * [Fresco](https://github.com/facebook/fresco) - An Android library for managing images and the memory they use
136 | * [Glide](https://github.com/bumptech/glide) - An image loading and caching library for Android focused on smooth scrolling
137 | * [Picasso](https://github.com/square/picasso) - A powerful image downloading and caching library for Android
138 |
139 |
140 | ### Image Processing
141 |
142 | * [Android GPU Image](https://github.com/CyberAgent/android-gpuimage) - Android filters based on OpenGL (idea from GPUImage for iOS)
143 | * [Fresco Processors](https://github.com/wasabeef/fresco-processors) - An Android image processor library providing a variety of image transformations for Fresco
144 | * [Glide Face Detection Transformation](https://github.com/aryarohit07/GlideFaceDetectionTransformation) - An Android image transformation library providing cropping above Face Detection (Face Centering) for Glide
145 | * [Glide Transformations](https://github.com/wasabeef/glide-transformations) - An Android transformation library providing a variety of image transformations for Glide
146 | * [PhotoFiltersSDK](https://github.com/Zomato/AndroidPhotoFilters) - AndroidPhotoFilters aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image media
147 | * [Picasso Face Detection Transformation](https://github.com/aryarohit07/PicassoFaceDetectionTransformation) - An Android image transformation library providing cropping above Face Detection (Face Centering) for Picasso
148 | * [Picasso Transformations](https://github.com/wasabeef/picasso-transformations) - An Android transformation library providing a variety of image transformations for Picasso
149 | * [Pollexor](http://square.github.io/pollexor/) - An Android library, that can download unencrypted and encrypted images, crop, resize, apply filters and convert to another format.
150 |
151 |
152 | ### Logging
153 | * [Hugo](https://github.com/JakeWharton/hugo) - Annotation-triggered method call logging for your debug builds
154 | * [Logger](https://github.com/orhanobut/logger) - Simple, pretty and powerful logger for Android
155 | * [LoggingInterceptor](https://github.com/ihsanbal/LoggingInterceptor) - An OkHttp interceptor which pretty logs request and response data
156 | * [Timber](https://github.com/JakeWharton/timber) - A logger with a small, extensible API which provides utility on top of Android's normal Log class
157 |
158 |
159 | ### Networking
160 |
161 | * [Bridge](https://github.com/afollestad/bridge) - A simple but powerful HTTP networking library for Java. It features a Fluent chainable API, powered by Java URLConnection classes for maximum compatibility and speed
162 | * [Fast Android Networking](https://github.com/amitshekhariitbhu/Fast-Android-Networking) - A Complete Fast Android Networking Library that also supports HTTP/2
163 | * [Ion](https://github.com/koush/ion) - Android Asynchronous Networking and Image Loading
164 | * [OkHttp](https://github.com/square/okhttp) - An HTTP+HTTP/2 client for Android and Java applications
165 | * [Retrofit](https://square.github.io/retrofit) - Retrofit turns your REST API into a Java interface
166 | * [Volley](https://github.com/google/volley) - Volley is an HTTP library that makes networking for Android apps easier and most importantly, faster
167 |
168 | ### Persistence
169 |
170 | * [ActiveAndroid](https://github.com/pardom/ActiveAndroid) - Active record style SQLite persistence for Android
171 | * [DBFLow](https://github.com/Raizlabs/DBFlow) - A blazing fast, powerful, and very simple ORM Android database library that writes database code for you
172 | * [Firebase Realtime Database](https://firebase.google.com/docs/database) - Store and sync data with our NoSQL cloud database. Data is synced across all clients in realtime, and remains available when your app goes offline
173 | * [greenDAO](https://github.com/greenrobot/greenDAO) - greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases
174 | * [Paper](https://github.com/pilgr/Paper) - Fast and simple data storage library for Android
175 | * [Realm](https://github.com/realm/realm-java) - Realm is a mobile database: a replacement for SQLite & ORMs
176 | * [RxCache](https://github.com/VictorAlbertos/RxCache) - Reactive caching library for Android and Java
177 | * [StorIO](https://github.com/pushtorefresh/storio) - Beautiful API for SQLiteDatabase and ContentResolver
178 | * [SQL Brite](https://github.com/square/sqlbrite) - A lightweight wrapper around SQLiteOpenHelper which introduces reactive stream semantics to SQL operations
179 |
180 | ### Testing
181 |
182 | * [AssertJ](https://github.com/joel-costigliola/assertj-core) - AssertJ is a library providing easy to use rich typed assertions
183 | * [AssertJ Android](https://github.com/square/assertj-android) - A set of AssertJ helpers geared toward testing Android
184 | * [Calabash](https://github.com/calabash/calabash-android) - Automated Functional testing for Android based on cucumber
185 | * [Espresso](https://google.github.io/android-testing-support-library/docs/espresso/index.html) - Write easy, simple and human-readable UI tests on Android
186 | * [Hamcrest](https://github.com/hamcrest/JavaHamcrest) - Java (and original) version of Hamcrest
187 | * [JaCoCo](https://github.com/jacoco/jacoco) - JaCoCo - Java Code Coverage Library
188 | * [JUnit4](https://github.com/junit-team/junit4) - A programmer-oriented testing framework for Java
189 | * [Mockito](https://github.com/mockito/mockito) - Most popular Mocking framework for unit tests written in Java
190 | * [Robolectric](https://github.com/robolectric/robolectric) - Android Unit Testing Framework
191 | * [Robotium](https://github.com/RobotiumTech/robotium) - Android UI Testing
192 | * [Selendroid](https://github.com/selendroid/selendroid) - Selendroid is a test automation framework which drives of the UI of Android native and hybrid applications (apps) and the mobile web with Selendroid
193 | * [Truth](https://github.com/google/truth) - Assertion/Proposition framework for Java unit tests
194 |
195 | ### UI Components
196 |
197 | * [AdaptiveTableLayout](https://github.com/Cleveroad/AdaptiveTableLayout) - Library that makes it possible to read, edit and write CSV files
198 | * [Android SpinKit](https://github.com/ybq/Android-SpinKit) - Android loading animations
199 | * [BlurKit Android](https://github.com/gogopop/BlurKit-Android) - The missing Android blurring library. Fast blur-behind layout that parallels iOS
200 | * [BottomBar](https://github.com/roughike/BottomBar) - A custom view component that mimics the new Material Design Bottom Navigation pattern
201 | * [BottomSheet](https://github.com/Flipboard/bottomsheet) - Android component which presents a dismissible view from the bottom of the screen
202 | * [Cafebar](https://github.com/danimahardhika/cafebar) - An upgraded Snackbar for Android that provides more options and easy to use
203 | * [CircleImageView](https://github.com/hdodenhof/CircleImageView) - A circular ImageView for Android
204 | * [DiagonalLayout](https://github.com/florent37/DiagonalLayout) - With Diagonal Layout explore new styles and approaches on material design
205 | * [DialogPlus](https://github.com/orhanobut/dialogplus) - Advanced dialog solution for Android
206 | * [Epoxy](https://github.com/airbnb/epoxy) - Epoxy is an Android library for building complex screens in a RecyclerView
207 | * [ExoPlayer](https://github.com/google/ExoPlayer) - An extensible media player for Android
208 | * [FirebaseUI for Android](https://github.com/firebase/FirebaseUI-Android) - UI Bindings for Firebase
209 | * [JazzyViewPager](https://github.com/jfeinstein10/JazzyViewPager) - An easy to use ViewPager that adds an awesome set of custom swiping animations. Just change your ViewPagers to JazzyViewPagers, two more steps, and you're good to go
210 | * [Litho](https://github.com/facebook/litho) - A declarative framework for building efficient UIs on Android
211 | * [Material Dialogs](https://github.com/afollestad/material-dialogs) - A beautiful, fluid, and customizable dialogs API
212 | * [Material Drawer](https://github.com/mikepenz/MaterialDrawer) - The flexible, easy to use, all in one drawer library for your Android project
213 | * [Material Search View](https://github.com/MiguelCatalan/MaterialSearchView) - Cute library to implement SearchView in a Material Design Approach
214 | * [Matisse](https://github.com/zhihu/Matisse) - A well-designed local image and video selector for Android
215 | * [PhotoView](https://github.com/chrisbanes/PhotoView) - Implementation of ImageView for Android that supports zooming, by various touch gestures
216 | * [Subsampling Scale ImageView](https://github.com/davemorrissey/subsampling-scale-image-view) - Highly configurable, easily extendable view with pan and zoom gestures for displaying huge images without loss of detail. Perfect for photo galleries, maps, building plans etc
217 | * [TapTargetView](https://github.com/KeepSafe/TapTargetView) - An implementation of tap targets from the Material Design guidelines for feature discovery
218 | * [Toasty](https://github.com/GrenderG/Toasty) - The usual Toast, but with steroids
219 | * [VLayout](https://github.com/alibaba/vlayout) - Project vlayout is a powerful LayoutManager extension for RecyclerView, it provides a group of layouts for RecyclerView
220 |
221 |
222 | ### Utilities
223 |
224 | * [Aesthetic](https://github.com/afollestad/aesthetic) - A fast and easy to use plug-and-play dynamic theme engine. Powered by Rx, for Android apps
225 | * [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode) - :fire: Android developers should collect the following utils(updating)
226 | * [Android Annotations](https://github.com/androidannotations/androidannotations) - Fast Android Development. Easy maintainance
227 | * [Android Crop](https://github.com/jdamcd/android-crop) - Android library project for cropping images
228 | * [Android In-App Billing V3](https://github.com/anjlab/android-inapp-billing-v3) - A lightweight implementation of Android In-app Billing Version 3
229 | * [Android Saripaar](https://github.com/ragunathjawahar/android-saripaar) - UI form validation library for Android
230 | * [Android Weak Handler](https://github.com/badoo/android-weak-handler) - Memory safer implementation of android.os.Handler
231 | * [Ason](https://github.com/afollestad/ason) - JSON in Java made easy! Catch less exceptions, serialize/deserialize with ease, plus some other useful tricks and conveniences
232 | * [ByteBuddy](http://bytebuddy.net) - Byte Buddy is a code generation and manipulation library for creating and modifying Java classes during the runtime of a Java application
233 | * [Calligraphy](https://github.com/chrisjenx/Calligraphy) - Custom fonts in Android the easy way
234 | * [DeepLinkDispatch](https://github.com/airbnb/DeepLinkDispatch) - A simple, annotation-based library for making deep link handling better on Android
235 | * [EasyDeviceInfo](https://github.com/nisrulz/easydeviceinfo) - Get device information in a super easy way
236 | * [Easy Permissions](https://github.com/googlesamples/easypermissions) - Simplify Android M system permissions
237 | * [Gson](https://github.com/google/gson) - A Java serialization/deserialization library to convert Java Objects into JSON and back
238 | * [Guava](https://github.com/google/guava) - Google Core Libraries for Java
239 | * [IcePick](https://github.com/frankiesardo/icepick) - Android Instance State made easy
240 | * [LibPhoneNumber](https://github.com/googlei18n/libphonenumber) - Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers
241 | * [Moshi](https://github.com/square/moshi) - A modern JSON library for Android and Java.
242 | * [Parceler](https://github.com/johncarl81/parceler) - Android Parcelables made easy through code generation
243 | * [PermissionsDispatcher](https://github.com/hotchemi/PermissionsDispatcher) - Simple annotation-based API to handle runtime permissions
244 | * [Reprint](https://github.com/ajalt/reprint) - A unified fingerprint library for Android
245 | * [Secure Preferences](https://github.com/scottyab/secure-preferences) - Android Shared preference wrapper than encrypts the values of Shared Preferences
246 | * [Sensey](https://github.com/nisrulz/sensey) - Detecting gestures in a snap
247 | * [uCrop](https://github.com/Yalantis/uCrop) - Image Cropping Library for Android
248 |
249 | ### Utilities (Advanced)
250 |
251 | * [EventBus](https://github.com/greenrobot/EventBus) - Android optimized event bus that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality
252 | * [Lightweight Stream API](https://github.com/aNNiMON/Lightweight-Stream-API) - Stream API from Java 8 rewritten on iterators for Java 7 and below
253 | * [Optional](https://github.com/MrHadiSatrio/Optional) - Java 8 Optional-like APIs for everyone
254 | * [RetroLambda](https://github.com/evant/gradle-retrolambda) - A Gradle plugin for getting Java lambda support in Java 6, 7 and android
255 | * [RxAndroid](https://github.com/ReactiveX/RxAndroid) – This module adds the minimum classes to RxJava that make writing reactive components in Android applications easy and hassle-free. More specifically, it provides a Scheduler that schedules on the main thread or any given Looper.
256 | * [RxBinding](https://github.com/JakeWharton/RxBinding) - RxJava binding APIs for Android's UI widgets
257 | * [RxJava](https://github.com/ReactiveX/RxJava) - RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM
258 |
259 |
260 | ## Open-Source Apps
261 |
262 | There are lots of open-source apps available in the Android community for developers to learn from, but it becomes very difficult to find the ones which are actually worth your time and can help you learn a lot of things. This list (loosely categorized on the basis of your Android skills) can help you find the resource you always wanted.
263 |
264 | ### Beginner
265 |
266 | * [KISS](https://github.com/Neamar/KISS) - Lightning fast, open-source, < 200kb Android launcher
267 | * [Materialize](https://github.com/oxoooo/materialize) - Materialize all those not material
268 | * [MinimalTodo](https://github.com/avjinder/Minimal-Todo) - Material To-Do App
269 | * [PhotoAffix](https://github.com/afollestad/photo-affix) -
270 | Stitch your photos together vertically or horizontally easily!
271 | * [Simple Gallery](https://github.com/SimpleMobileTools/Simple-Gallery) - A gallery for viewing photos and videos without ads
272 | * [SoundRecorder](https://github.com/dkim0419/SoundRecorder) - A simple sound recording app implementing Material Design
273 |
274 |
275 | ### Intermediate
276 |
277 | * [ClipStack](https://github.com/heruoxin/Clip-Stack) - A tiny clipboard history manager app
278 | * [EverMemo](https://github.com/daimajia/EverMemo) - Fast Record,Organize,and Share. The Android memo app you will deeply love
279 | * [FastHub](https://github.com/k0shk0sh/FastHub) - GitHub client for Android
280 | * [Google I/O App](https://github.com/google/iosched) - The Google I/O 2016 Android App
281 | * [InstaMaterial](https://github.com/frogermcs/InstaMaterial) - Implementation of Instagram with Material Design (originally based on Emmanuel Pacamalan's concept)
282 | * [LeafPic](https://github.com/HoraApps/LeafPic) - LeafPic is an ad-free, open-source and material-designed Android gallery alternative
283 | * [MLManager](https://github.com/javiersantos/MLManager) - A modern, easy and customizable app manager for Android with Material Design
284 | * [MovieGuide](https://github.com/esoxjem/MovieGuide) - Movie discovery app showcasing MVP, RxJava, Dagger 2 and Clean Architecture. Popcorn?
285 | * [Narrate](https://github.com/timothymiko/narrate-android) -Narrate is a beautiful and functional open source journal for Android
286 | * [Plaid](https://github.com/nickbutcher/plaid) - An Android app which provides design news & inspiration as well as being an example of implementing material design
287 | * [Robot Scouter](https://github.com/SUPERCILEX/Robot-Scouter/) - 🤖 A scouting app for FIRST Robotics Competition teams
288 | * [ToolWizAppLock](https://github.com/Toolwiz/ToolWizAppLock) - Smart App Lock for Android
289 | * [Turbo Editor](https://github.com/vmihalachi/turbo-editor) - Simple and powerful File Editor for Android
290 | * [WeGit](https://github.com/Leaking/WeGit) - An Android App for Github
291 |
292 |
293 | ### Expert
294 |
295 | * [AmazeFileManager](https://github.com/arpitkh96/AmazeFileManager) - Amaze File Manager source code
296 | * [AntennaPod](https://github.com/AntennaPod/AntennaPod) - A podcast manager for Android
297 | * [CoCoin](https://github.com/Nightonke/CoCoin) - CoCoin, Multi-view Accounting Application
298 | * [Conversations](https://github.com/siacs/Conversations) - A federated Instant Messaging app for Android (XMPP/Jabber)
299 | * [Kickstarter](https://github.com/kickstarter/android-oss) - Kickstarter for Android. Bring new ideas to life, anywhere
300 | * [LibreTorrent](https://github.com/proninyaroslav/libretorrent) - Free as in Freedom torrent client for Android
301 | * [MusicDNA](https://github.com/harjot-oberai/MusicDNA) - A Music Player for Android that renders beautiful DNA(Visualization) of the currently playing music
302 | * [Muzei Wallpaper](https://github.com/romannurik/muzei) - Muzei Live Wallpaper for Android
303 | * [OmniNotes](https://github.com/federicoiosue/Omni-Notes) - Open source note-taking application for Android
304 | * [QkSms](https://github.com/moezbhatti/qksms) - The most beautiful SMS messenger app for Android
305 | * [RedReader](https://github.com/QuantumBadger/RedReader) - An unofficial open source Reddit client for Android
306 | * [Signal](https://github.com/WhisperSystems/Signal-Android) - A private messenger for Android
307 | * [SuperCleanMaster](https://github.com/joyoyao/superCleanMaster) - CleanMaster like open-source app
308 | * [Talon for Twitter](https://github.com/klinker24/Talon-for-Twitter) - 100% open source version of my popular Talon for Twitter app on Android
309 | * [Telegram](https://github.com/DrKLO/Telegram) - Telegram for Android source
310 | * [Timber](https://github.com/naman14/Timber) - Material Design Music Player
311 |
312 |
313 | ## Tools
314 |
315 | "*A craftsman is only as good as his tools*" - to level up your Android development workflow you need to have the right tools always ready in your toolbox. This list is here to provide you with hand-picked tools to significantly improve your Android development life.
316 |
317 | ### Free
318 |
319 | * [ADB IDEA](https://github.com/pbreault/adb-idea) - A plugin for Android Studio and Intellij IDEA that speeds up your day to day Android development
320 | * [Android Asset Studio](https://romannurik.github.io/AndroidAssetStudio) - A collection of tools to easily generate assets such as launcher icons for your Android app
321 | * [Android Tool for Mac](https://github.com/mortenjust/androidtool-mac) - One-click screenshots, video recordings, app installation for iOS and Android
322 | * [Android Wifi ADB](https://github.com/pedrovgs/AndroidWiFiADB) - IntelliJ/AndroidStudio plugin which provides a button to connect your Android device over WiFi to install, run and debug your applications without a USB connected
323 | * [APK DeGuard](http://apk-deguard.com) - DeGuard reverses the process of obfuscation performed by Android obfuscation tools. This enables numerous security analyses, including code inspection and predicting libraries
324 | * [Battery Historian](https://github.com/google/battery-historian) - Battery Historian is a tool to analyze battery consumers using Android "bugreport" files
325 | * [Buck](https://github.com/facebook/buck) - A fast build system that encourages the creation of small, reusable modules over a variety of platforms and languages
326 | * [Butterknife Zelezny](https://github.com/avast/android-butterknife-zelezny) - Android Studio plug-in for generating ButterKnife injections from selected layout XML
327 | * [CheckStyle IDEA](https://plugins.jetbrains.com/plugin/1065-checkstyle-idea) - This plugin provides both real-time and on-demand scanning of Java files with CheckStyle from within IDEA
328 | * [ClassyShark](https://github.com/google/android-classyshark) - Android executables browser
329 | * [CodeGlance](https://plugins.jetbrains.com/plugin/7275-codeglance) - Embeds a code minimap similar to the one found in Sublime into the editor pane. Works with both light and dark themes using your customized colors for syntax highlighting
330 | * [Codota](https://www.codota.com/ide-plugin) - Supercharge your development workflow by getting great code examples directly in your IDE. The Codota plugin for IntelliJ lets you quickly find the best code examples for every API class or method
331 | * [Dagger IntelliJ Plugin](https://github.com/square/dagger-intellij-plugin) - An IntelliJ IDEA plugin for Dagger which provides insight into how injections and providers are used
332 | * [DevKnox](https://devknox.io) - Autocorrect Security Issues As You Write Code
333 | * [Dex Count Gradle Plugin](https://github.com/KeepSafe/dexcount-gradle-plugin) - A Gradle plugin to report the number of method references in your APK on every build
334 | * [Dex Method Counts](https://github.com/mihaip/dex-method-counts) - Command-line tool to count per-package methods in Android .dex files
335 | * [DTO Generator](https://plugins.jetbrains.com/plugin/7834-dto-generator) - Data Transfer Object(DTO) generator that generates Java classes from the given feed
336 | * [DPI Love](http://dpi.lv) - Get accurate DPI information on a wide range of Android devices
337 | * [Drawable Optimizer](https://github.com/fabiomsr/drawable-optimizer) - Gradle plugin to optimize png files and reduce resultant apk size within an Android project
338 | * [Dry Run](https://github.com/cesarferreira/dryrun) - Try any Android library hosted online directly from the command line
339 | * [FindBugs](http://findbugs.sourceforge.net) - Powerful static code analysis tool for Java and Android
340 | * [FlatIcon](http://www.flaticon.com) - The largest database of free icons available in PNG, SVG, EPS, PSD and BASE 64 formats
341 | * [Gradle Please](http://gradleplease.appspot.com) - Quick and easy way to build Gradle based libraries in Android
342 | * [Infer](https://github.com/facebook/infer) - A static analyzer for Java, C, C++, and Objective-C
343 | * [JSONBlob](https://jsonblob.com) - JSON Blob is a web-based tool to create, edit, view, format, and share JSON
344 | * [JSONSchema2POJO](http://www.jsonschema2pojo.org) - Easy and quick way to convert your JSON to Java objects
345 | * [KeyPromoter](https://plugins.jetbrains.com/plugin/4455-key-promoter) - Shows to user how easy he can make same action using only keyboard(menus and toolbar button mouse clicks initiates shortcut display)
346 | * [Material Design Icon Generator](https://github.com/konifar/android-material-design-icon-generator-plugin) - This plugin help you to set material design icon to your project
347 | * [Material Palette](https://www.materialpalette.com) - Generate Material Design color palettes quickly and easily
348 | * [Methods Count](http://www.methodscount.com) - Your solution for a perfectly fit APK
349 | * [Mocky.IO](http://www.mocky.io) - Mock your HTTP responses to test your REST API
350 | * [Pidcat](https://github.com/JakeWharton/pidcat) - Colored logcat script which only shows log entries for a specific application package
351 | * [RESTMock](https://github.com/andrzejchm/RESTMock) - HTTP Server for Android Instrumentation tests
352 | * [Scalpel](https://github.com/JakeWharton/scalpel) - A surgical debugging tool to uncover the layers under your app
353 | * [Shape Shifter](https://shapeshifter.design) - Useful tool for creating simple path morphing AnimatedVectorDrawables
354 | * [Slides Code Highlighter](https://romannurik.github.io/SlidesCodeHighlighter) - A nifty tool to turn your boring pieces of code into beautifully highlighted code snippets
355 | * [SonarLint](https://plugins.jetbrains.com/plugin/7973-sonarlint) - SonarLint is an IntelliJ IDEA plugin that provides on-the-fly feedback to developers on new bugs and quality issues injected into Java
356 | * [SourceTree](https://www.sourcetreeapp.com) - Harness the power of Git and Hg in a beautifully simple application
357 | * [String Manipulation](https://plugins.jetbrains.com/plugin/2162-string-manipulation) - Provides actions for text manipulation such as toggle, capitalize, encode/decode, etc
358 | * [SVG2VectorDrawable Plugin](https://plugins.jetbrains.com/plugin/8103-svg2vectordrawable) - Tools for convert SVG file to Android VectorDrawable
359 | * [WireMock](https://github.com/tomakehurst/wiremock) - A tool for mocking HTTP services
360 |
361 | ### Free (+ Pro)
362 |
363 | * [Crowdin](https://crowdin.com) - Translate and manage the process better, faster, and smarter
364 | * [GenyMotion](https://www.genymotion.com) - A unique platform to bring your Android app to perfection!
365 | * [GitKraken](https://www.gitkraken.com) - The most popular Git GUI for Windows, Mac AND Linux
366 | * [IDE Scout](https://www.idescout.com) - SQLScout is a plugin for Android Studio and IntelliJ IDEA that provides powerful, dedicated support for managing and debugging SQLite databases
367 | * [JRebel for Android](https://zeroturnaround.com/software/jrebel-for-android) - Instantly update code and resources
368 | JRebel for Android is an IDE plug-in that accelerates the development of Android applications
369 | * [NimbleDroid](https://nimbledroid.com) - Auto-test Your Android Apps for Critical Issues. No Coding Required
370 | * [Markdown Navigator 2.0](https://github.com/vsch/idea-multimarkdown) - Markdown language support for IntelliJ IDEA.
371 | * [The Noun Project](https://thenounproject.com) - Icons for Everything
372 | * [Trialy.IO](https://www.trialy.io) - Increase your IAP conversions by letting your users try premium features for a limited time
373 | * [Vysor](https://www.vysor.io) - Vysor puts your Android on your desktop
374 | * [Zeplin](https://zeplin.io) - Design hand-off has never been easier. Generate styleguides and resources, automatically
375 |
376 |
377 | ## Kotlin for Android
378 |
379 | Kotlin, the new statically-typed programming language from JetBrains aims to make Android app development fun and enjoyable once again. It's like Java on steroids. Here is a list of some cool Kotlin resources for you to get started.
380 |
381 | * [Anko](https://github.com/Kotlin/anko) - Pleasant Android application development
382 | * [Anvil](https://github.com/zserge/anvil) - Minimal UI library for Android inspired by React
383 | * [AsyncAwait](https://github.com/metalabdesign/AsyncAwait) - async/await for Android built upon coroutines introduced in Kotlin 1.1
384 | * [Exposed](https://github.com/JetBrains/Exposed) - Kotlin SQL Framework
385 | * [Klutter](https://github.com/kohesive/klutter) - A mix of random small libraries for Kotlin, the smallest reside here until big enough for their own repository
386 | * [Kodein](https://github.com/SalomonBrys/Kodein) - Painless Kotlin Dependency Injection
387 | * [Koi](https://github.com/mcxiaoke/kotlin-koi) - Koi, a lightweight Kotlin library for Android Development
388 | * [PreferenceHolder](https://github.com/MarcinMoskala/PreferenceHolder) - SharedPreference usage made easy using Kotlin
389 | * [RxKotlin](https://github.com/ReactiveX/RxKotlin) - RxJava bindings for Kotlin
390 |
391 |
392 | ## Android Studio Shortcuts
393 |
394 | IDE shortcuts can really make your development workflow fast and smooth and Android Studio shines perfectly in this aspect. Ideally, you should make it a habit to not pick up the mouse to perform most of your actions and slowly migrate towards a mouseless-workflow. Here are some of the most useful shortcuts for you to get started.
395 |
396 | *(Currently, only Mac shortcuts are available. Windows and Linux shortcuts coming soon.)*
397 |
398 | ### Must-Know Shortcuts:
399 |
400 | Never-ever-ever forget these shortcuts.
401 |
402 | | Description | Shortcut |
403 | |:----------------------------------------------------------------------------------------|:--------------------:|
404 | | Find everything (like files, classes, symbols, etc.) | Shift + Shift |
405 | | Show a list of automatic fixes and IDE suggestions at the cursor | Option + Enter |
406 | | Rename all copies of the variable/method/class at the cursor | Shift + F6 |
407 | | List all usages of the variable/method/class at the cursor | Command + Option + F7 |
408 | | Generate code (like getters, setters, constructors, method overrides) | Command + N |
409 | | Search for any action in Android Studio | Command + Shift + A |
410 | | Find text occurencesin the current file (Enter = cycle through results, Esc. = cancel) | Command + F |
411 | | Show the list of recently used files in the IDE | Command + E |
412 | | Run the app or test | Control + R |
413 |
414 |
415 | ### Frequently Used Shortcuts:
416 |
417 | You will surely need these quite often.
418 |
419 | | Description | Shortcut |
420 | |:----------------------------------------------------------------------------------------|:---------------------:|
421 | | Search for and open any file by name | Command + Shift + O |
422 | | Move a piece of code in upward/downward direction | Command + Shift + Up/Down |
423 | | View javadoc of symbol at cursor in pop-up | F1 |
424 | | View definition of method at cursor in pop-up | Command + Y |
425 | | Search for and list any occurrences of text | Command + Shift + F |
426 | | Comment/Uncomment all selected lines (also works in xml files) | Command + / |
427 | | Show available parameters for current method (must be inside parentheses) | Command + P |
428 | | Format code to match Android Studio's default style | Command + Option + L |
429 | | Delete a complete line at one go | Command + Delete |
430 | | Navigate through classes and methods | Command + Left Click |
431 |
432 |
433 | ### Useful Shortcuts:
434 |
435 | These can help you level up your development workflow.
436 |
437 | | Description | Shortcut |
438 | |:--------------------------------------------------------------------------------|:-------------------------------:|
439 | | Go to next highlighted error in current file | F2 |
440 | | Go to the declaration of the variable/method/class at cursor | Command + B |
441 | | Go to given line number in current file | Command + L |
442 | | Duplicate current line | Command + D |
443 | | Search for and go to any symbol (incl. variables and methods) | Command + Option + O |
444 | | Show class structure in pop-up | Command + F12 |
445 | | List recently edited files in pop-up | Command + Shift + E |
446 | | View full refactor menu | Control + T |
447 | | Collapse/expand all code blocks | Command + Shift + +/- |
448 | | Collapse/expand individual code block | Command + +/- |
449 | | Insert new line below current cursor position | Shift + Enter |
450 | | Complete statement (add braces, parentheses, semi-colon) | Command + Shift + Enter |
451 |
452 |
453 | ## Android Studio Live Templates
454 |
455 | Just like shortcuts, Live Templates can make your life a lot easier by generating tons of boring boilerplate code in a jiffy. Android Studio comes pre-loaded with a lot of these templates and here is a collection of some of the best ones for you to get started.
456 |
457 | * `Toast` - Creates a new `Toast.makeText(context, "", Toast.LENGTH_SHORT).show();` toast
458 | * `newInstance` - Generates the static `newInstance` factory method in a Fragment with arguments
459 | * `noInstance` - Generates a private empty constructor to prevent instance creation
460 | * `ViewConstructors` - Generates the view constructors
461 | * `Parcelable` - Generates the boilerplate code for Pacelable implementation
462 | * `fbc` - Generates the `findViewById` code with the appropriate cast
463 | * `const` - Generates a constant according to Android's coding conventions
464 | * `logd` - Generates `Log.d(TAG, "");` log. Check the other variants as well
465 | * `logm` - Generates a log with the current method name and its arguments
466 | * `logr` - Generates a log result of the current method
467 | * `psf` - Generates the boilerplate `public static final`. Also check `psfi` and `psfs`
468 | * `key` - Generates the key constant for a Bundle
469 | * `sout` - Prints a string to `System.out`. Also check `soutm` and `soutp`
470 | * `visible` - Sets a view's visibility to VISIBLE
471 | * `gone` - Sets view's visibility to GONE
472 | * `todo` - Adds a TODO comment. Also check `stopship`
473 |
474 | Can't get enough of Live Templates? [Here](https://github.com/keyboardsurfer/idea-live-templates) is a huge repository of lots of custom Live Templates for you to get your hands on.
475 |
476 | ## Sites
477 |
478 | If you want to keep yourself updated with all the latest Android development news, articles and tutorials then these are some of the best sites in the Internet where the good Androidy-things happen all the time.
479 |
480 | * [Android Arsenal](https://android-arsenal.com) - Android developer portal with tools, libraries, and apps
481 | * [Andorid Design Patterns](http://www.androiddesignpatterns.com) - Android Design Patterns is a website for developers who wish to better understand the Android application framework
482 | * [AndroidDevDigest](https://www.androiddevdigest.com) - A Handcrafted Weekly #AndroidDev Newsletter
483 | * [Android Developers Backstage](http://androidbackstage.blogspot.ch/) - Podcast made by Google, featuring Chet Haase and Tor Norbye
484 | * [Android Developers Official](https://developer.android.com/training/index.html) - The official Android development page provided by Google containing all the documentations and trainings
485 | * [Android Hive](http://www.androidhive.info) - Androidhive is independent online publication that covers Android programming tutorials, app reviews and more
486 | * [Android Niceties](http://androidniceties.tumblr.com) - A collection of screenshots encompassing some of the most beautiful looking Android apps
487 | * [Android Weekly](http://androidweekly.net) - Android Weekly is a free newsletter that helps you to stay cutting-edge with your Android Development
488 | * [Caster.IO](https://caster.io) - Skyrocket your Android career with bite sized Android development video training
489 | * [Codepath Android Cliffnotes](https://guides.codepath.com/android) - One of the best and most up-to-date crowdsourced resource for Android developers where you will find guides and tutorials about almost everything in Android
490 | * [Dan Lew Codes](http://blog.danlew.net) - Thoughts on life, the universe and the mystery of it all; but actually mostly just code
491 | * [Fragmented Podcast](http://fragmentedpodcast.com) - An Android Developer Podcast
492 | * [Grokking Android](https://www.grokkingandroid.com) - Getting Down to the Nitty Gritty of Android Development
493 | * [Material Up](https://material.uplabs.com) - Get fresh Material Design inspiration daily
494 | * [Medium's Google Developers Blog](https://medium.com/google-developers) - Engineering and technology articles for developers, written and curated by Googlers. The views expressed are those of the authors and don’t necessarily reflect those of Google
495 | * [Mindork's Blog](https://blog.mindorks.com) - A regularly updated blog talking about various aspects of Android development in detail
496 | * [Reddit's AndroidDev](https://www.reddit.com/r/androiddev) - News for Android developers with the who, what, where when and how of the Android community. Probably mostly the how
497 | * [Styling Android](https://blog.stylingandroid.com) - Learn perfecting your Android UI and UX development skills
498 | * [Vogella](http://www.vogella.com/tutorials/android.html) - Learn almost everything about Android development in an easy way
499 |
500 | ## Books
501 |
502 | *"Books are gifts that you can open again and again"* - here is a curated list of some of the best books that can help you sharpen your Android, Java and overall programming skills. Pick one of them and just start reading.
503 |
504 |
505 | * [Android Programming: The Big Nerd Ranch Guide](https://www.bignerdranch.com/books/android-programming) - by Bill Phillips, Chris Stewart, and Kristin Marsicano
506 | * [Asynchronous Android](https://www.amazon.in/Asynchronous-Android-Steve-Liles/dp/1783286873) - by Steve Liles
507 | * [Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) - by Robert C. Martin
508 | * [Effective Java](https://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683) - by Joshua Bloch
509 | * [Head First Design Patterns](https://www.amazon.com/First-Design-Patterns-Elisabeth-Freeman/dp/0596007124) - by Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson
510 | * [Java: The Complete Reference](https://www.amazon.com/Java-Complete-Reference-Herbert-Schildt/dp/9339212096) - by Herbert Schildt
511 | * [The Busy Coder's Guide to Advanced Android Development](https://commonsware.com/Android) - by Mark Murphy
512 | * [Working Effectively with Legacy Code](https://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/0131177052) - by Michael Feathers
513 |
514 | ## Sample Projects
515 |
516 | If you want to get started with something quick-and-dirty, then sample projects are something which can help you a lot in understanding the concepts and technicalities in almost no time.
517 |
518 | * [Android Architecture](https://github.com/googlesamples/android-architecture) - A collection of samples to discuss and showcase different architectural tools and patterns for Android apps
519 | * [Android Boilerplate](https://github.com/ribot/android-boilerplate) - Android boilerplate app that showcases architecture and libraries used at ribot
520 | * [Android Cookbook Examples](https://github.com/IanDarwin/Android-Cookbook-Examples) - Collected code examples from the O'Reilly Android Cookbook
521 | * [Android Instant Apps](https://github.com/googlesamples/android-instant-apps) - Samples for Android Instant Apps
522 | * [Android MVP Architecture](https://github.com/MindorksOpenSource/android-mvp-architecture) - This repository contains a detailed sample app that implements MVP architecture using Dagger2, GreenDao, RxJava2, FastAndroidNetworking and PlaceholderView
523 | * [Android Testing](https://github.com/googlesamples/android-testing) - A collection of samples demonstrating different frameworks and techniques for automated testing
524 | * [Android Testing Guide](https://github.com/ravidsrk/android-testing-guide) - Complete reference for Android Testing with examples
525 | * [Android Things Driver Samples](https://github.com/androidthings/drivers-samples) - Samples for Android Things peripheral drivers
526 | * [CW Omnibus](https://github.com/commonsguy/cw-omnibus) - Source code to omnibus edition of _The Busy Coder's Guide to Android Development_
527 | * [Effective Android UI](https://github.com/pedrovgs/EffectiveAndroidUI) - Sample project created to show some of the best Android practices to work in the Android UI Layer
528 | * [Espresso Samples](https://github.com/chiuki/espresso-samples) - A collection of samples demonstrating different Espresso techniques
529 | * [Firebase Quickstart Android](https://github.com/firebase/quickstart-android) - Firebase Quickstart Samples for Android
530 | * [Firebucket](https://github.com/remychantenay/Firebucket) - Glimpse into Firebase, with a simple TODO list app built around Dagger, RxJava 2, Clean architecture and of course, Firebase
531 | * [Java Design Patterns](https://github.com/iluwatar/java-design-patterns) - Design patterns implemented in Java
532 | * [Just Another Android App](https://github.com/athkalia/Just-Another-Android-App) - An Android base app with loads of cool libraries/configuration
533 | * [Material Animations](https://github.com/lgvalle/Material-Animations) - Android Transition animations explanation with examples
534 | * [Quality Matters](https://github.com/artem-zinnatullin/qualitymatters) - Android Development Culture
535 | * [RxJava Android Samples](https://github.com/kaushikgopal/RxJava-Android-Samples) - Learning RxJava for Android by example
536 | * [RxJava 2 Android Samples](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples) - RxJava 2 Android Examples - Migration From RxJava 1 to RxJava 2 - How to use RxJava 2 in Android
537 | * [u2020](https://github.com/JakeWharton/u2020) - A sample Android app which showcases advanced usage of Dagger among other open source libraries
538 | * [VB Android App Quality](https://github.com/vincentbrison/vb-android-app-quality) - Sample android project using Gradle, with basic quality tools set up
539 |
540 |
541 | ## Video Tutorials
542 |
543 | Love learning from videos? Don't worry, we have got you covered. This list contains some of the most useful and informative video tutorials to boost up your Android development skills to the next level.
544 |
545 | * [Advanced Android App Development (Udacity)](https://www.udacity.com/course/advanced-android-app-development--ud855) - This course will guide you through the process of productionizing an app, using Sunshine, the weather app we built in Developing Android Apps
546 | * [Android Developers (YouTube)](https://www.youtube.com/user/androiddevelopers) - Google's official Android development channel on Youtube for all the tutorials, demos, events, etc
547 | * [Beginner Java Tutorials (YouTube)](https://www.youtube.com/watch?v=Hl-zzrqQoSE&list=PLFE2CE09D83EE3E28) - An excellent Java video tutorial series for beginners by *thenewboston* on YouTube.
548 | * [Design Patterns Tutorials (YouTube)](https://www.youtube.com/watch?v=vNHpsC5ng_E&list=PLF206E906175C7E07) - Learn about all the Java design patterns in details from these quick and easy video tutorials by Derek Banas
549 | * [Developing Android Apps (Udacity)](https://www.udacity.com/course/new-android-fundamentals--ud851) - As the first course in the Android Developer Nanodegree, Developing Android Apps is the foundation of our advanced Android curriculum. This course blends theory and practice to help you build great apps the right way
550 | * [Firebase in a Weekend: Android (YouTube)](https://www.udacity.com/course/firebase-in-a-weekend-by-google-android--ud0352) - In this course, you’ll learn how to use Firebase. Firebase is app development platform that provides developers a variety of tools and a scalable infrastructure to build high quality apps
551 | * [Firebase for Android (YouTube)](https://www.youtube.com/user/Firebase) - Learn everything about Firebase and boost your Android development skills
552 | * [Slidenerd Tutorials (YouTube)](https://www.youtube.com/user/slidenerd) - One of the best channels covering a lot of tutorials on various aspects of Android
553 |
554 | ## Twitter Profiles
555 |
556 | If you are somebody who loves to engage with other fellow developers and surround yourself with all the latest news, ideas and happenings, then this list is just for you. Start following some of the best and most active Android and Java developers on Twitter.
557 |
558 | * [Android Developers](https://twitter.com/AndroidDev) - News and announcements for developers from the Android team
559 | * [Annyce Davis](https://twitter.com/brwngrldev) - #AndroidDev, Conference #Speaker, and #Instructor
560 | * [Chet Haase](https://twitter.com/chethaase) - Willful misinterpretation. Android. Comedy. That kind of stuff
561 | * [Chris Banes](https://twitter.com/chrisbanes) - #Android Developer Relations @Google
562 | * [Chiu-Ki Chan](https://twitter.com/chiuki) - @monkeywrite & @heartcollage creator, Android developer, public speaker (@techspeakdigest), sketchnoter, language lover, world traveller
563 | * [Cyril Mottier](https://twitter.com/cyrilmottier) - Mobile Product Devsigner & Android expert. ex-Head of Mobile & Web @captaintrain. #UI #UX #Design
564 | * [Dan Lew](https://twitter.com/danlew42) - Android @Trello/@Atlassian, gamer and geek. The views expressed in these tweets are yours and your employer's
565 | * [Donn Felker](https://twitter.com/donnfelker) - Best Selling Mobile Dev Book Author. Android GDE. Android Consultant. Co-Host of the @fragmentedcast. Teaching Android at @caster_io. Remote workforce advocate
566 | * [Dave Smith](https://twitter.com/devunwired) - I write, speak, and build...mostly with Android+Embedded. IoT @ Google. Recovering spark-chaser
567 | * [GenyMotion](https://twitter.com/Genymotion) - The most complete Android emulation platform (desktop, cloud, on-demand) 🚀 • Trusted by 5M+ developers, testers & enthusiasts 🙌 • Made by @Genymobile in France
568 | * [Huyen Tue Dao](https://twitter.com/queencodemonkey) - Native Android Code Monkey: monkey code, monkey break, monkey debug, monkey iterate. Randomly typing on @Trello for @Atlassian. GDE. ½ of Android Dialogs
569 | * [Jake Wharton](https://twitter.com/JakeWharton) - Stop stopping
570 | * [Jesse Wilson](https://twitter.com/jessewilson) - Android and jokes. Sometimes also inclusivity & sustainability
571 | * [Joe Birch](https://twitter.com/hitherejoe) - Android Engineer @Buffer. Instructor @caster_io & @Pluralsight. Public Speaker, Android Tinkerer
572 | * [Kaushik Gopal](https://twitter.com/kaushikgopal) - I'm ½ of the @FragmentedCast and a Google Developer Expert. I build Android apps for @Instacart. I watch atleast 1 movie every week and Jon Stewart is my hero
573 | * [Kristin Marsicano](https://twitter.com/kristinmars) - Android Developer and Instructor @bignerdranch. Co-author of Android Programming: The Big Nerd Ranch Guide. Always learning
574 | * [Lars Vogel](https://twitter.com/vogella) - Eclipse platform UI and e4 project lead. Android and Eclipse RCP developer. CEO of vogella GmbH, book author, speaker, trainer and proud Dad and husband
575 | * [Mark Allison](https://twitter.com/MarkIAllison) - GDE for Android. I write code and https://blog.stylingandroid.com . Then I relax by supporting Watford FC. After that I need to drink good whisky
576 | * [Nick Butcher](https://twitter.com/crafty) - Design + Developer Advocate @Google, I help people to design and build lovely Android apps
577 | * [Pierre-Yves Ricau](https://twitter.com/Piwai) - Android baker @Square
578 | * [Rebecca Franks](https://twitter.com/riggaroo) - Android Engineering Lead at @DVT_Corporate | Google Developer Expert for #Android and #IoT #GDE | Made @bookdash app | I ❤ baking and travelling
579 | * [Reto Meier](https://twitter.com/retomeier) - Developer Advocate at Google, Android developer, and author of Professional Android Application Development series. Views expressed are mine alone
580 | * [Romain Guy](https://twitter.com/romainguy) - Android Graphics team manager @Google, Photography
581 | * [Roman Nurik](https://twitter.com/romannurik) - Designer on @Firebase at @Google · Android/Web Developer
582 | * [Ryan Harter](https://twitter.com/rharter) - Freelance Android Developer, Google Developer Expert, community leader
583 | * [Tor Norbye](https://twitter.com/tornorbye) - Tor Norbye is the tech lead for Android Studio at Google
584 | * [Ty Smith](https://twitter.com/tsmith) - Android at @Uber Dev Platform - Google Developer Expert - @specializedtype investor - @sfaug and @droidconsf organizer - ex @twitter @fabric @evernote @zagat
585 | * [Zarah Dominguez](https://twitter.com/zarahjutz) - Having a love/hate affair with the little green 'droid at @domaincomau; Google Developer Expert for Android; a walking contradiction
586 |
587 | ## Game Development
588 |
589 | If you aspire to develop amazing games for the Android platform, we haven't forgotten about you. Here are some of the best resources which can help you in kickstarting your Android game development career.
590 |
591 | ### Frameworks
592 |
593 | * [AndEngine](http://www.andengine.org) - Free Android 2D OpenGL Game Engine
594 | * [LibGDX](https://libgdx.badlogicgames.com) - Desktop/Android/BlackBerry/iOS/HTML5 Java game development framework
595 | * [Rajawali](https://github.com/Rajawali/Rajawali) - Android OpenGL ES 2.0/3.0 Engine
596 | * [Unity](https://unity3d.com/unity) - Start creating a world class games using this framework
597 |
598 | ### Open-Source Games
599 |
600 | * [ColorPhun](https://github.com/prakhar1989/colorphun) - A Simple Color Game in Android
601 | * [Game of Life](https://github.com/zsoltk/GameOfLife) - An Android implementation of Conway's Game of Life, focusing on clean design and implementation
602 | * [Memory Game](https://github.com/sromku/memory-game) - Simple and beautiful memory game for kids
603 | * [Pixel Dungeon](https://github.com/watabou/pixel-dungeon) - Traditional rogue-like game with pixel-art graphics and simple interface
604 |
605 |
606 |
607 | ### :heart: Found this project useful?
608 | If you found this project useful, then please consider giving it a :star: on Github and sharing it with your friends via social media.
609 |
610 |
611 | ## Project Maintained By
612 |
613 | ### Aritra Roy
614 |
615 | Android & Backend Developer. Blogger. Designer. Fitness Enthusiast.
616 |
617 |
618 |
619 |
620 |
621 | ## License
622 |
623 | ```
624 | Copyright 2017 aritraroy
625 |
626 | Licensed under the Apache License, Version 2.0 (the "License");
627 | you may not use this file except in compliance with the License.
628 | You may obtain a copy of the License at
629 |
630 | http://www.apache.org/licenses/LICENSE-2.0
631 |
632 | Unless required by applicable law or agreed to in writing, software
633 | distributed under the License is distributed on an "AS IS" BASIS,
634 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
635 | See the License for the specific language governing permissions and
636 | limitations under the License.
637 |
--------------------------------------------------------------------------------
/others/Logger.java:
--------------------------------------------------------------------------------
1 | package com.aritraroy.logger;
2 |
3 | import android.util.Log;
4 |
5 | public class Logger {
6 |
7 | private final String TAG;
8 | private final int priority;
9 |
10 | public static Logger withTag(String tag) {
11 | return new Logger(tag);
12 | }
13 |
14 | private Logger(String TAG) {
15 | this.TAG = TAG;
16 | this.priority = Log.DEBUG;
17 | }
18 |
19 | public Logger log(String message) {
20 | if (BuildConfig.DEBUG) {
21 | Log.println(priority, TAG, message);
22 | }
23 | return this;
24 | }
25 |
26 | public void withCause(Exception cause) {
27 | if (BuildConfig.DEBUG) {
28 | Log.println(priority, TAG, Log.getStackTraceString(cause));
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/raw/top-banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/amitshekhariitbhu/UltimateAndroidReference/de07282868fe5c386ad263d8a558b9444fa6e543/raw/top-banner.png
--------------------------------------------------------------------------------
/raw/ultimate-android-reference-logo-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/amitshekhariitbhu/UltimateAndroidReference/de07282868fe5c386ad263d8a558b9444fa6e543/raw/ultimate-android-reference-logo-small.png
--------------------------------------------------------------------------------