Share E-Book

Android Notes For Professionals. 1000+ pages of professional hints and tricks (GoalKicker.com) (Z-Library)

Author GoalKicker.com

Backend
Language English

No Description

Format PDF
Size 11.9 MB
396
Views
0
Downloads
0.00
Total Donations
(First 20 pages)

Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Page 1
Android Notes for ProfessionalsAndroid™ Notes for Professionals GoalKicker.com Free Programming Books Disclaimer This is an unocial free book created for educational purposes and is not aliated with ocial Android™ group(s) or company(s). All trademarks and registered trademarks are the property of their respective owners 1000+ pages of professional hints and tricks
Page 2
Contents About 1 ................................................................................................................................................................................... Chapter 1: Getting started with Android 2 ........................................................................................................... Section 1.1: Creating a New Project 2 .............................................................................................................................. Section 1.2: Setting up Android Studio 13 ....................................................................................................................... Section 1.3: Android programming without an IDE 14 .................................................................................................. Section 1.4: Application Fundamentals 18 ...................................................................................................................... Section 1.5: Setting up an AVD (Android Virtual Device) 19 ......................................................................................... Chapter 2: Android Studio 23 ...................................................................................................................................... Section 2.1: Setup Android Studio 23 .............................................................................................................................. Section 2.2: View And Add Shortcuts in Android Studio 23 .......................................................................................... Section 2.3: Android Studio useful shortcuts 24 ............................................................................................................ Section 2.4: Android Studio Improve performance tip 25 ............................................................................................ Section 2.5: Gradle build project takes forever 26 ........................................................................................................ Section 2.6: Enable/Disable blank line copy 26 ............................................................................................................ Section 2.7: Custom colors of logcat message based on message importance 27 ................................................. Section 2.8: Filter logs from UI 28 ................................................................................................................................... Section 2.9: Create filters configuration 29 ................................................................................................................... Section 2.10: Create assets folder 30 .............................................................................................................................. Chapter 3: Instant Run in Android Studio 32 ....................................................................................................... Section 3.1: Enabling or disabling Instant Run 32 .......................................................................................................... Section 3.2: Types of code Swaps in Instant Run 32 .................................................................................................... Section 3.3: Unsupported code changes when using Instant Run 33 ......................................................................... Chapter 4: TextView 34 ................................................................................................................................................. Section 4.1: Spannable TextView 34 ................................................................................................................................ Section 4.2: Strikethrough TextView 35 .......................................................................................................................... Section 4.3: TextView with image 36 .............................................................................................................................. Section 4.4: Make RelativeSizeSpan align to top 36 ..................................................................................................... Section 4.5: Pinchzoom on TextView 38 ......................................................................................................................... Section 4.6: Textview with dierent Textsize 39 ............................................................................................................ Section 4.7: Theme and Style customization 39 ............................................................................................................ Section 4.8: TextView customization 41 ......................................................................................................................... Section 4.9: Single TextView with two dierent colors 44 ............................................................................................ Chapter 5: AutoCompleteTextView 46 ................................................................................................................... Section 5.1: AutoComplete with CustomAdapter, ClickListener and Filter 46 ............................................................. Section 5.2: Simple, hard-coded AutoCompleteTextView 49 ....................................................................................... Chapter 6: Autosizing TextViews 50 ......................................................................................................................... Section 6.1: Granularity 50 ............................................................................................................................................... Section 6.2: Preset Sizes 50 ............................................................................................................................................. Chapter 7: ListView 52 .................................................................................................................................................... Section 7.1: Custom ArrayAdapter 52 ............................................................................................................................. Section 7.2: A basic ListView with an ArrayAdapter 53 ................................................................................................ Section 7.3: Filtering with CursorAdapter 53 .................................................................................................................. Chapter 8: Layouts 55 .................................................................................................................................................... Section 8.1: LayoutParams 55 ......................................................................................................................................... Section 8.2: Gravity and layout gravity 58 .................................................................................................................... Section 8.3: CoordinatorLayout Scrolling Behavior 60 .................................................................................................
Page 3
Section 8.4: Percent Layouts 62 ...................................................................................................................................... Section 8.5: View Weight 63 ............................................................................................................................................ Section 8.6: Creating LinearLayout programmatically 64 ........................................................................................... Section 8.7: LinearLayout 65 ........................................................................................................................................... Section 8.8: RelativeLayout 66 ........................................................................................................................................ Section 8.9: FrameLayout 68 .......................................................................................................................................... Section 8.10: GridLayout 69 ............................................................................................................................................. Section 8.11: CoordinatorLayout 71 ................................................................................................................................. Chapter 9: ConstraintLayout 73 ................................................................................................................................ Section 9.1: Adding ConstraintLayout to your project 73 ............................................................................................. Section 9.2: Chains 74 ...................................................................................................................................................... Chapter 10: TextInputLayout 75 ................................................................................................................................ Section 10.1: Basic usage 75 ............................................................................................................................................ Section 10.2: Password Visibility Toggles 75 .................................................................................................................. Section 10.3: Adding Character Counting 75 ................................................................................................................. Section 10.4: Handling Errors 76 ..................................................................................................................................... Section 10.5: Customizing the appearance of the TextInputLayout 76 ...................................................................... Section 10.6: TextInputEditText 77 .................................................................................................................................. Chapter 11: CoordinatorLayout and Behaviors 79 ........................................................................................... Section 11.1: Creating a simple Behavior 79 ................................................................................................................... Section 11.2: Using the SwipeDismissBehavior 80 .......................................................................................................... Section 11.3: Create dependencies between Views 80 .................................................................................................. Chapter 12: TabLayout 82 ............................................................................................................................................. Section 12.1: Using a TabLayout without a ViewPager 82 ............................................................................................ Chapter 13: ViewPager 83 ............................................................................................................................................. Section 13.1: ViewPager with a dots indicator 83 ........................................................................................................... Section 13.2: Basic ViewPager usage with fragments 85 ............................................................................................. Section 13.3: ViewPager with PreferenceFragment 86 ................................................................................................. Section 13.4: Adding a ViewPager 87 .............................................................................................................................. Section 13.5: Setup OnPageChangeListener 88 ............................................................................................................. Section 13.6: ViewPager with TabLayout 89 .................................................................................................................. Chapter 14: CardView 92 ............................................................................................................................................... Section 14.1: Getting Started with CardView 92 ............................................................................................................. Section 14.2: Adding Ripple animation 93 ...................................................................................................................... Section 14.3: Customizing the CardView 93 ................................................................................................................... Section 14.4: Using Images as Background in CardView (Pre-Lollipop device issues) 94 ........................................ Section 14.5: Animate CardView background color with TransitionDrawable 96 ...................................................... Chapter 15: NavigationView 97 .................................................................................................................................. Section 15.1: How to add the NavigationView 97 ........................................................................................................... Section 15.2: Add underline in menu elements 101 ....................................................................................................... Section 15.3: Add seperators to menu 102 ..................................................................................................................... Section 15.4: Add menu Divider using default DividerItemDecoration 103 ................................................................ Chapter 16: RecyclerView 105 ..................................................................................................................................... Section 16.1: Adding a RecyclerView 105 ........................................................................................................................ Section 16.2: Smoother loading of items 106 ................................................................................................................. Section 16.3: RecyclerView with DataBinding 107 ......................................................................................................... Section 16.4: Animate data change 108 ......................................................................................................................... Section 16.5: Popup menu with recyclerView 112 ......................................................................................................... Section 16.6: Using several ViewHolders with ItemViewType 114 ...............................................................................
Page 4
Section 16.7: Filter items inside RecyclerView with a SearchView 115 ........................................................................ Section 16.8: Drag&Drop and Swipe with RecyclerView 116 ....................................................................................... Section 16.9: Show default view till items load or when data is not available 117 .................................................... Section 16.10: Add header/footer to a RecyclerView 119 ............................................................................................ Section 16.11: Endless Scrolling in Recycleview 122 ....................................................................................................... Section 16.12: Add divider lines to RecyclerView items 122 .......................................................................................... Chapter 17: RecyclerView Decorations 125 ......................................................................................................... Section 17.1: Add divider to RecyclerView 125 ............................................................................................................... Section 17.2: Drawing a Separator 127 .......................................................................................................................... Section 17.3: How to add dividers using and DividerItemDecoration 128 .................................................................. Section 17.4: Per-item margins with ItemDecoration 128 ............................................................................................. Section 17.5: ItemOsetDecoration for GridLayoutManager in RecycleView 129 .................................................... Chapter 18: RecyclerView onClickListeners 131 ................................................................................................. Section 18.1: Kotlin and RxJava example 131 ................................................................................................................ Section 18.2: RecyclerView Click listener 132 ................................................................................................................. Section 18.3: Another way to implement Item Click Listener 133 ................................................................................ Section 18.4: New Example 135 ....................................................................................................................................... Section 18.5: Easy OnLongClick and OnClick Example 136 .......................................................................................... Section 18.6: Item Click Listeners 139 ............................................................................................................................. Chapter 19: RecyclerView and LayoutManagers 141 ..................................................................................... Section 19.1: Adding header view to recyclerview with gridlayout manager 141 ...................................................... Section 19.2: GridLayoutManager with dynamic span count 142 ............................................................................... Section 19.3: Simple list with LinearLayoutManager 144 .............................................................................................. Section 19.4: StaggeredGridLayoutManager 148 ......................................................................................................... Chapter 20: Pagination in RecyclerView 151 ...................................................................................................... Section 20.1: MainActivity.java 151 ................................................................................................................................. Chapter 21: ImageView 156 .......................................................................................................................................... Section 21.1: Set tint 156 ................................................................................................................................................... Section 21.2: Set alpha 157 .............................................................................................................................................. Section 21.3: Set Scale Type 157 ..................................................................................................................................... Section 21.4: ImageView ScaleType - Center 162 ......................................................................................................... Section 21.5: ImageView ScaleType - CenterCrop 164 ................................................................................................. Section 21.6: ImageView ScaleType - CenterInside 166 ............................................................................................... Section 21.7: ImageView ScaleType - FitStart and FitEnd 168 ..................................................................................... Section 21.8: ImageView ScaleType - FitCenter 172 ..................................................................................................... Section 21.9: Set Image Resource 174 ............................................................................................................................ Section 21.10: ImageView ScaleType - FitXy 175 ........................................................................................................... Section 21.11: MLRoundedImageView.java 177 .............................................................................................................. Chapter 22: VideoView 180 ........................................................................................................................................... Section 22.1: Play video from URL with using VideoView 180 ..................................................................................... Section 22.2: VideoView Create 180 ............................................................................................................................... Chapter 23: Optimized VideoView 181 .................................................................................................................... Section 23.1: Optimized VideoView in ListView 181 ....................................................................................................... Chapter 24: WebView 193 ............................................................................................................................................. Section 24.1: Troubleshooting WebView by printing console messages or by remote debugging 193 ................. Section 24.2: Communication from Javascript to Java (Android) 194 ...................................................................... Section 24.3: Communication from Java to Javascript 195 ........................................................................................ Section 24.4: Open dialer example 195 .......................................................................................................................... Section 24.5: Open Local File / Create dynamic content in Webview 196 ................................................................
Page 5
Section 24.6: JavaScript alert dialogs in WebView - How to make them work 196 ................................................. Chapter 25: SearchView 198 ........................................................................................................................................ Section 25.1: Setting Theme for SearchView 198 .......................................................................................................... Section 25.2: SearchView in Toolbar with Fragment 198 ............................................................................................. Section 25.3: Appcompat SearchView with RxBindings watcher 200 ......................................................................... Chapter 26: BottomNavigationView 203 ............................................................................................................... Section 26.1: Basic implemetation 203 ........................................................................................................................... Section 26.2: Customization of BottomNavigationView 204 ....................................................................................... Section 26.3: Handling Enabled / Disabled states 204 ................................................................................................. Section 26.4: Allowing more than 3 menus 205 ............................................................................................................ Chapter 27: Canvas drawing using SurfaceView 207 ..................................................................................... Section 27.1: SurfaceView with drawing thread 207 ..................................................................................................... Chapter 28: Creating Custom Views 212 ............................................................................................................... Section 28.1: Creating Custom Views 212 ...................................................................................................................... Section 28.2: Adding attributes to views 214 ................................................................................................................. Section 28.3: CustomView performance tips 216 ......................................................................................................... Section 28.4: Creating a compound view 217 ............................................................................................................... Section 28.5: Compound view for SVG/VectorDrawable as drawableRight 220 ...................................................... Section 28.6: Responding to Touch Events 223 ............................................................................................................ Chapter 29: Getting Calculated View Dimensions 224 .................................................................................... Section 29.1: Calculating initial View dimensions in an Activity 224 ............................................................................ Chapter 30: Adding a FuseView to an Android Project 225 ......................................................................... Section 30.1: hikr app, just another android.view.View 225 .......................................................................................... Chapter 31: Supporting Screens With Dierent Resolutions, Sizes 232 ................................................ Section 31.1: Using configuration qualifiers 232 ............................................................................................................. Section 31.2: Converting dp and sp to pixels 232 .......................................................................................................... Section 31.3: Text size and dierent android screen sizes 233 .................................................................................... Chapter 32: ViewFlipper 234 ........................................................................................................................................ Section 32.1: ViewFlipper with image sliding 234 .......................................................................................................... Chapter 33: Design Patterns 235 ............................................................................................................................... Section 33.1: Observer pattern 235 ................................................................................................................................. Section 33.2: Singleton Class Example 235 .................................................................................................................... Chapter 34: Activity 237 ................................................................................................................................................ Section 34.1: Activity launchMode 237 ............................................................................................................................ Section 34.2: Exclude an activity from back-stack history 238 ................................................................................... Section 34.3: Android Activity LifeCycle Explained 238 ................................................................................................ Section 34.4: End Application with exclude from Recents 241 .................................................................................... Section 34.5: Presenting UI with setContentView 242 ................................................................................................... Section 34.6: Up Navigation for Activities 243 ............................................................................................................... Section 34.7: Clear your current Activity stack and launch a new Activity 244 ......................................................... Chapter 35: Activity Recognition 246 ...................................................................................................................... Section 35.1: Google Play ActivityRecognitionAPI 246 .................................................................................................. Section 35.2: PathSense Activity Recognition 248 ........................................................................................................ Chapter 36: Split Screen / Multi-Screen Activities 250 ................................................................................... Section 36.1: Split Screen introduced in Android Nougat implemented 250 .............................................................. Chapter 37: Material Design 251 ............................................................................................................................... Section 37.1: Adding a Toolbar 251 ................................................................................................................................. Section 37.2: Buttons styled with Material Design 252 .................................................................................................
Page 6
Section 37.3: Adding a FloatingActionButton (FAB) 253 .............................................................................................. Section 37.4: RippleDrawable 254 .................................................................................................................................. Section 37.5: Adding a TabLayout 259 ........................................................................................................................... Section 37.6: Bottom Sheets in Design Support Library 261 ........................................................................................ Section 37.7: Apply an AppCompat theme 264 ............................................................................................................. Section 37.8: Add a Snackbar 265 .................................................................................................................................. Section 37.9: Add a Navigation Drawer 266 .................................................................................................................. Section 37.10: How to use TextInputLayout 269 ............................................................................................................ Chapter 38: Resources 270 ........................................................................................................................................... Section 38.1: Define colors 270 ........................................................................................................................................ Section 38.2: Color Transparency(Alpha) Level 271 .................................................................................................... Section 38.3: Define String Plurals 271 ........................................................................................................................... Section 38.4: Define strings 272 ...................................................................................................................................... Section 38.5: Define dimensions 273 .............................................................................................................................. Section 38.6: String formatting in strings.xml 273 ......................................................................................................... Section 38.7: Define integer array 274 ........................................................................................................................... Section 38.8: Define a color state list 274 ...................................................................................................................... Section 38.9: 9 Patches 275 ............................................................................................................................................. Section 38.10: Getting resources without "deprecated" warnings 278 ....................................................................... Section 38.11: Working with strings.xml file 278 ............................................................................................................. Section 38.12: Define string array 279 ............................................................................................................................ Section 38.13: Define integers 280 .................................................................................................................................. Section 38.14: Define a menu resource and use it inside Activity/Fragment 280 ..................................................... Chapter 39: Data Binding Library 282 .................................................................................................................... Section 39.1: Basic text field binding 282 ........................................................................................................................ Section 39.2: Built-in two-way Data Binding 283 .......................................................................................................... Section 39.3: Custom event using lambda expression 284 .......................................................................................... Section 39.4: Default value in Data Binding 286 ........................................................................................................... Section 39.5: Databinding in Dialog 286 ........................................................................................................................ Section 39.6: Binding with an accessor method 286 .................................................................................................... Section 39.7: Pass widget as reference in BindingAdapter 287 .................................................................................. Section 39.8: Click listener with Binding 288 .................................................................................................................. Section 39.9: Data binding in RecyclerView Adapter 289 ............................................................................................ Section 39.10: Databinding in Fragment 290 ................................................................................................................. Section 39.11: DataBinding with custom variables(int,boolean) 291 ........................................................................... Section 39.12: Referencing classes 291 .......................................................................................................................... Chapter 40: SharedPreferences 293 ....................................................................................................................... Section 40.1: Implementing a Settings screen using SharedPreferences 293 ............................................................ Section 40.2: Commit vs. Apply 295 ............................................................................................................................... Section 40.3: Read and write values to SharedPreferences 295 ................................................................................. Section 40.4: Retrieve all stored entries from a particular SharedPreferences file 296 ........................................... Section 40.5: Reading and writing data to SharedPreferences with Singleton 297 .................................................. Section 40.6: getPreferences(int) VS getSharedPreferences(String, int) 301 ............................................................ Section 40.7: Listening for SharedPreferences changes 301 ...................................................................................... Section 40.8: Store, Retrieve, Remove and Clear Data from SharedPreferences 302 ............................................. Section 40.9: Add filter for EditTextPreference 302 ...................................................................................................... Section 40.10: Supported data types in SharedPreferences 303 ................................................................................ Section 40.11: Dierent ways of instantiating an object of SharedPreferences 303 ................................................. Section 40.12: Removing keys 304 .................................................................................................................................. Section 40.13: Support pre-Honeycomb with StringSet 304 ........................................................................................
Page 7
Chapter 41: Intent 306 .................................................................................................................................................... Section 41.1: Getting a result from another Activity 306 ............................................................................................... Section 41.2: Passing data between activities 308 ........................................................................................................ Section 41.3: Open a URL in a browser 309 ................................................................................................................... Section 41.4: Starter Pattern 310 ..................................................................................................................................... Section 41.5: Clearing an activity stack 311 ................................................................................................................... Section 41.6: Start an activity 311 ................................................................................................................................... Section 41.7: Sending emails 312 .................................................................................................................................... Section 41.8: CustomTabsIntent for Chrome Custom Tabs 312 .................................................................................. Section 41.9: Intent URI 313 ............................................................................................................................................. Section 41.10: Start the dialer 314 ................................................................................................................................... Section 41.11: Broadcasting Messages to Other Components 314 .............................................................................. Section 41.12: Passing custom object between activities 315 ...................................................................................... Section 41.13: Open Google map with specified latitude, longitude 317 ..................................................................... Section 41.14: Passing dierent data through Intent in Activity 317 ............................................................................ Section 41.15: Share intent 319 ........................................................................................................................................ Section 41.16: Showing a File Chooser and Reading the Result 319 ............................................................................ Section 41.17: Sharing Multiple Files through Intent 321 ............................................................................................... Section 41.18: Start Unbound Service using an Intent 321 ............................................................................................ Section 41.19: Getting a result from Activity to Fragment 322 ..................................................................................... Chapter 42: Fragments 324 ......................................................................................................................................... Section 42.1: Pass data from Activity to Fragment using Bundle 324 ........................................................................ Section 42.2: The newInstance() pattern 324 ................................................................................................................ Section 42.3: Navigation between fragments using backstack and static fabric pattern 325 ................................ Section 42.4: Sending events back to an activity with callback interface 326 .......................................................... Section 42.5: Animate the transition between fragments 327 .................................................................................... Section 42.6: Communication between Fragments 328 ............................................................................................... Chapter 43: Button 333 .................................................................................................................................................. Section 43.1: Using the same click event for one or more Views in the XML 333 ...................................................... Section 43.2: Defining external Listener 333 .................................................................................................................. Section 43.3: inline onClickListener 334 .......................................................................................................................... Section 43.4: Customizing Button style 334 ................................................................................................................... Section 43.5: Custom Click Listener to prevent multiple fast clicks 338 ..................................................................... Section 43.6: Using the layout to define a click action 338 .......................................................................................... Section 43.7: Listening to the long click events 339 ...................................................................................................... Chapter 44: Emulator 340 ............................................................................................................................................ Section 44.1: Taking screenshots 340 ............................................................................................................................. Section 44.2: Simulate call 345 ........................................................................................................................................ Section 44.3: Open the AVD Manager 345 .................................................................................................................... Section 44.4: Resolving Errors while starting emulator 345 ........................................................................................ Chapter 45: Service 347 ................................................................................................................................................. Section 45.1: Lifecycle of a Service 347 .......................................................................................................................... Section 45.2: Defining the process of a service 348 ..................................................................................................... Section 45.3: Creating an unbound service 348 ............................................................................................................ Section 45.4: Starting a Service 351 ............................................................................................................................... Section 45.5: Creating Bound Service with help of Binder 351 .................................................................................... Section 45.6: Creating Remote Service (via AIDL) 352 ................................................................................................. Chapter 46: The Manifest File 354 ............................................................................................................................ Section 46.1: Declaring Components 354 ....................................................................................................................... Section 46.2: Declaring permissions in your manifest file 354 ....................................................................................
Page 8
Chapter 47: Gradle for Android 356 ........................................................................................................................ Section 47.1: A basic build.gradle file 356 ....................................................................................................................... Section 47.2: Define and use Build Configuration Fields 358 ....................................................................................... Section 47.3: Centralizing dependencies via "dependencies.gradle" file 361 ............................................................ Section 47.4: Sign APK without exposing keystore password 362 .............................................................................. Section 47.5: Adding product flavor-specific dependencies 364 ................................................................................ Section 47.6: Specifying dierent application IDs for build types and product flavors 364 .................................... Section 47.7: Versioning your builds via "version.properties" file 365 ......................................................................... Section 47.8: Defining product flavors 366 .................................................................................................................... Section 47.9: Changing output apk name and add version name: 366 ..................................................................... Section 47.10: Adding product flavor-specific resources 367 ...................................................................................... Section 47.11: Why are there two build.gradle files in an Android Studio project? 367 ............................................. Section 47.12: Directory structure for flavor-specific resources 368 .......................................................................... Section 47.13: Enable Proguard using gradle 368 ......................................................................................................... Section 47.14: Ignoring build variant 369 ....................................................................................................................... Section 47.15: Enable experimental NDK plugin support for Gradle and AndroidStudio 369 .................................. Section 47.16: Display signing information 371 ............................................................................................................. Section 47.17: Seeing dependency tree 372 ................................................................................................................... Section 47.18: Disable image compression for a smaller APK file size 373 ................................................................ Section 47.19: Delete "unaligned" apk automatically 373 ............................................................................................ Section 47.20: Executing a shell script from gradle 373 ............................................................................................... Section 47.21: Show all gradle project tasks 374 ........................................................................................................... Section 47.22: Debugging your Gradle errors 375 ....................................................................................................... Section 47.23: Use gradle.properties for central versionnumber/buildconfigurations 376 ..................................... Section 47.24: Defining build types 377 ......................................................................................................................... Chapter 48: FileIO with Android 378 ........................................................................................................................ Section 48.1: Obtaining the working folder 378 ............................................................................................................. Section 48.2: Writing raw array of bytes 378 ................................................................................................................ Section 48.3: Serializing the object 378 .......................................................................................................................... Section 48.4: Writing to external storage (SD card) 379 .............................................................................................. Section 48.5: Solving "Invisible MTP files" problem 379 ............................................................................................... Section 48.6: Working with big files 379 ......................................................................................................................... Chapter 49: FileProvider 381 ....................................................................................................................................... Section 49.1: Sharing a file 381 ........................................................................................................................................ Chapter 50: Storing Files in Internal & External Storage 383 .................................................................... Section 50.1: Android: Internal and External Storage - Terminology Clarification 383 ............................................. Section 50.2: Using External Storage 387 ...................................................................................................................... Section 50.3: Using Internal Storage 388 ....................................................................................................................... Section 50.4: Fetch Device Directory : 388 .................................................................................................................... Section 50.5: Save Database on SD Card (Backup DB on SD) 390 ............................................................................ Chapter 51: Zip file in android 392 ............................................................................................................................ Section 51.1: Zip file on android 392 ................................................................................................................................ Chapter 52: Unzip File in Android 393 ..................................................................................................................... Section 52.1: Unzip file 393 ............................................................................................................................................... Chapter 53: Camera and Gallery 394 ...................................................................................................................... Section 53.1: Take photo 394 ........................................................................................................................................... Section 53.2: Taking full-sized photo from camera 396 .............................................................................................. Section 53.3: Decode bitmap correctly rotated from the uri fetched with the intent 399 ........................................ Section 53.4: Set camera resolution 401 ........................................................................................................................
Page 9
Section 53.5: How to start camera or gallery and save camera result to storage 401 ........................................... Chapter 54: Camera 2 API 405 ................................................................................................................................... Section 54.1: Preview the main camera in a TextureView 405 ..................................................................................... Chapter 55: Fingerprint API in android 414 .......................................................................................................... Section 55.1: How to use Android Fingerprint API to save user passwords 414 ........................................................ Section 55.2: Adding the Fingerprint Scanner in Android application 421 ................................................................. Chapter 56: Bluetooth and Bluetooth LE API 424 ............................................................................................. Section 56.1: Permissions 424 .......................................................................................................................................... Section 56.2: Check if bluetooth is enabled 424 ............................................................................................................ Section 56.3: Find nearby Bluetooth Low Energy devices 424 .................................................................................... Section 56.4: Make device discoverable 429 ................................................................................................................. Section 56.5: Connect to Bluetooth device 429 ............................................................................................................. Section 56.6: Find nearby bluetooth devices 431 .......................................................................................................... Chapter 57: Runtime Permissions in API-23 + 432 ............................................................................................. Section 57.1: Android 6.0 multiple permissions 432 ....................................................................................................... Section 57.2: Multiple Runtime Permissions From Same Permission Groups 433 ..................................................... Section 57.3: Using PermissionUtil 434 ........................................................................................................................... Section 57.4: Include all permission-related code to an abstract base class and extend the activity of this base class to achieve cleaner/reusable code 435 ............................................................................................... Section 57.5: Enforcing Permissions in Broadcasts, URI 437 ....................................................................................... Chapter 58: Android Places API 439 ......................................................................................................................... Section 58.1: Getting Current Places by Using Places API 439 ..................................................................................... Section 58.2: Place Autocomplete Integration 440 ....................................................................................................... Section 58.3: Place Picker Usage Example 441 ............................................................................................................. Section 58.4: Setting place type filters for PlaceAutocomplete 442 ........................................................................... Section 58.5: Adding more than one google auto complete activity 443 .................................................................. Chapter 59: Android NDK 445 ..................................................................................................................................... Section 59.1: How to log in ndk 445 ................................................................................................................................ Section 59.2: Building native executables for Android 445 .......................................................................................... Section 59.3: How to clean the build 446 ....................................................................................................................... Section 59.4: How to use a makefile other than Android.mk 446 ............................................................................... Chapter 60: DayNight Theme (AppCompat v23.2 / API 14+) 447 ............................................................. Section 60.1: Adding the DayNight theme to an app 447 ............................................................................................ Chapter 61: Glide 448 ....................................................................................................................................................... Section 61.1: Loading an image 448 ................................................................................................................................ Section 61.2: Add Glide to your project 449 ................................................................................................................... Section 61.3: Glide circle transformation (Load image in a circular ImageView) 449 ............................................... Section 61.4: Default transformations 450 ..................................................................................................................... Section 61.5: Glide rounded corners image with custom Glide target 451 ................................................................. Section 61.6: Placeholder and Error handling 451 ......................................................................................................... Section 61.7: Preloading images 452 .............................................................................................................................. Section 61.8: Handling Glide image load failed 452 ...................................................................................................... Section 61.9: Load image in a circular ImageView without custom transformations 453 ........................................ Chapter 62: Dialog 454 ................................................................................................................................................... Section 62.1: Adding Material Design AlertDialog to your app using Appcompat 454 ............................................. Section 62.2: A Basic Alert Dialog 454 ............................................................................................................................ Section 62.3: ListView in AlertDialog 455 ....................................................................................................................... Section 62.4: Custom Alert Dialog with EditText 456 .................................................................................................... Section 62.5: DatePickerDialog 457 ................................................................................................................................
Page 10
Section 62.6: DatePicker 457 ........................................................................................................................................... Section 62.7: Alert Dialog 458 ......................................................................................................................................... Section 62.8: Alert Dialog with Multi-line Title 459 ........................................................................................................ Section 62.9: Date Picker within DialogFragment 461 ................................................................................................. Section 62.10: Fullscreen Custom Dialog with no background and no title 463 ........................................................ Chapter 63: Enhancing Alert Dialogs 465 .............................................................................................................. Section 63.1: Alert dialog containing a clickable link 465 ............................................................................................. Chapter 64: Animated AlertDialog Box 466 ......................................................................................................... Section 64.1: Put Below code for Animated dialog.. 466 ............................................................................................... Chapter 65: GreenDAO 469 ........................................................................................................................................... Section 65.1: Helper methods for SELECT, INSERT, DELETE, UPDATE queries 469 ................................................... Section 65.2: Creating an Entity with GreenDAO 3.X that has a Composite Primary Key 471 ................................ Section 65.3: Getting started with GreenDao v3.X 472 ................................................................................................. Chapter 66: Tools Attributes 474 ............................................................................................................................... Section 66.1: Designtime Layout Attributes 474 ............................................................................................................ Chapter 67: Formatting Strings 475 ........................................................................................................................ Section 67.1: Format a string resource 475 .................................................................................................................... Section 67.2: Formatting data types to String and vise versa 475 ............................................................................. Section 67.3: Format a timestamp to string 475 ........................................................................................................... Chapter 68: SpannableString 476 ............................................................................................................................. Section 68.1: Add styles to a TextView 476 .................................................................................................................... Section 68.2: Multi string , with multi color 478 .............................................................................................................. Chapter 69: Notifications 480 ...................................................................................................................................... Section 69.1: Heads Up Notification with Ticker for older devices 480 ....................................................................... Section 69.2: Creating a simple Notification 484 .......................................................................................................... Section 69.3: Set custom notification - show full content text 484 .............................................................................. Section 69.4: Dynamically getting the correct pixel size for the large icon 485 ........................................................ Section 69.5: Ongoing notification with Action button 485 .......................................................................................... Section 69.6: Setting Dierent priorities in notification 486 ......................................................................................... Section 69.7: Set custom notification icon using `Picasso` library 487 ........................................................................ Section 69.8: Scheduling notifications 488 ..................................................................................................................... Chapter 70: AlarmManager 490 ................................................................................................................................ Section 70.1: How to Cancel an Alarm 490 .................................................................................................................... Section 70.2: Creating exact alarms on all Android versions 490 ............................................................................... Section 70.3: API23+ Doze mode interferes with AlarmManager 491 ........................................................................ Section 70.4: Run an intent at a later time 491 ............................................................................................................. Chapter 71: Handler 492 ................................................................................................................................................. Section 71.1: HandlerThreads and communication between Threads 492 ................................................................. Section 71.2: Use Handler to create a Timer (similar to javax.swing.Timer) 492 ....................................................... Section 71.3: Using a Handler to execute code after a delayed amount of time 493 ............................................... Section 71.4: Stop handler from execution 494 ............................................................................................................. Chapter 72: BroadcastReceiver 495 ........................................................................................................................ Section 72.1: Using LocalBroadcastManager 495 ......................................................................................................... Section 72.2: BroadcastReceiver Basics 495 ................................................................................................................. Section 72.3: Introduction to Broadcast receiver 496 ................................................................................................... Section 72.4: Using ordered broadcasts 496 ................................................................................................................. Section 72.5: Sticky Broadcast 497 ................................................................................................................................. Section 72.6: Enabling and disabling a Broadcast Receiver programmatically 497 ................................................ Section 72.7: Example of a LocalBroadcastManager 498 ...........................................................................................
Page 11
Section 72.8: Android stopped state 499 ....................................................................................................................... Section 72.9: Communicate two activities through custom Broadcast receiver 499 ................................................ Section 72.10: BroadcastReceiver to handle BOOT_COMPLETED events 500 .......................................................... Section 72.11: Bluetooth Broadcast receiver 501 ........................................................................................................... Chapter 73: UI Lifecycle 502 ........................................................................................................................................ Section 73.1: Saving data on memory trimming 502 .................................................................................................... Chapter 74: HttpURLConnection 503 ...................................................................................................................... Section 74.1: Creating an HttpURLConnection 503 ....................................................................................................... Section 74.2: Sending an HTTP GET request 503 .......................................................................................................... Section 74.3: Reading the body of an HTTP GET request 504 .................................................................................... Section 74.4: Sending an HTTP POST request with parameters 504 .......................................................................... Section 74.5: A multi-purpose HttpURLConnection class to handle all types of HTTP requests 506 ..................... Section 74.6: Use HttpURLConnection for multipart/form-data 508 ......................................................................... Section 74.7: Upload (POST) file using HttpURLConnection 511 ................................................................................ Chapter 75: Callback URL 513 .................................................................................................................................... Section 75.1: Callback URL example with Instagram OAuth 513 ................................................................................. Chapter 76: Snackbar 514 ............................................................................................................................................. Section 76.1: Creating a simple Snackbar 514 ............................................................................................................... Section 76.2: Custom Snack Bar 514 .............................................................................................................................. Section 76.3: Custom Snackbar (no need view) 515 ..................................................................................................... Section 76.4: Snackbar with Callback 516 ..................................................................................................................... Section 76.5: Snackbar vs Toasts: Which one should I use? 516 ................................................................................. Section 76.6: Custom Snackbar 517 ............................................................................................................................... Chapter 77: Widgets 518 ............................................................................................................................................... Section 77.1: Manifest Declaration - 518 ........................................................................................................................ Section 77.2: Metadata 518 ............................................................................................................................................. Section 77.3: AppWidgetProvider Class 518 .................................................................................................................. Section 77.4: Create/Integrate Basic Widget using Android Studio 519 .................................................................... Section 77.5: Two widgets with dierent layouts declaration 520 .............................................................................. Chapter 78: Toast 522 ..................................................................................................................................................... Section 78.1: Creating a custom Toast 522 .................................................................................................................... Section 78.2: Set position of a Toast 523 ....................................................................................................................... Section 78.3: Showing a Toast Message 523 ................................................................................................................. Section 78.4: Show Toast Message Above Soft Keyboard 524 ................................................................................... Section 78.5: Thread safe way of displaying Toast (Application Wide) 524 ............................................................. Section 78.6: Thread safe way of displaying a Toast Message (For AsyncTask) 525 ............................................. Chapter 79: Create Singleton Class for Toast Message 526 ....................................................................... Section 79.1: Create own singleton class for toast massages 526 .............................................................................. Chapter 80: Interfaces 528 ........................................................................................................................................... Section 80.1: Custom Listener 528 .................................................................................................................................. Section 80.2: Basic Listener 529 ...................................................................................................................................... Chapter 81: Animators 531 ............................................................................................................................................ Section 81.1: TransitionDrawable animation 531 ........................................................................................................... Section 81.2: Fade in/out animation 531 ........................................................................................................................ Section 81.3: ValueAnimator 532 ..................................................................................................................................... Section 81.4: Expand and Collapse animation of View 533 .......................................................................................... Section 81.5: ObjectAnimator 534 ................................................................................................................................... Section 81.6: ViewPropertyAnimator 534 ....................................................................................................................... Section 81.7: Shake animation of an ImageView 535 ...................................................................................................
Page 12
Chapter 82: Location 537 .............................................................................................................................................. Section 82.1: Fused location API 537 ............................................................................................................................... Section 82.2: Get Address From Location using Geocoder 541 .................................................................................. Section 82.3: Requesting location updates using LocationManager 542 .................................................................. Section 82.4: Requesting location updates on a separate thread using LocationManager 543 ............................. Section 82.5: Getting location updates in a BroadcastReceiver 544 .......................................................................... Section 82.6: Register geofence 545 .............................................................................................................................. Chapter 83: Theme, Style, Attribute 549 ............................................................................................................... Section 83.1: Define primary, primary dark, and accent colors 549 ........................................................................... Section 83.2: Multiple Themes in one App 549 .............................................................................................................. Section 83.3: Navigation Bar Color (API 21+) 551 .......................................................................................................... Section 83.4: Use Custom Theme Per Activity 551 ....................................................................................................... Section 83.5: Light Status Bar (API 23+) 552 .................................................................................................................. Section 83.6: Use Custom Theme Globally 552 ............................................................................................................. Section 83.7: Overscroll Color (API 21+) 552 .................................................................................................................. Section 83.8: Ripple Color (API 21+) 552 ......................................................................................................................... Section 83.9: Translucent Navigation and Status Bars (API 19+) 553 ......................................................................... Section 83.10: Theme inheritance 553 ............................................................................................................................ Chapter 84: MediaPlayer 554 ..................................................................................................................................... Section 84.1: Basic creation and playing 554 ................................................................................................................ Section 84.2: Media Player with Buer progress and play position 554 .................................................................... Section 84.3: Getting system ringtones 556 .................................................................................................................. Section 84.4: Asynchronous prepare 557 ...................................................................................................................... Section 84.5: Import audio into androidstudio and play it 557 ................................................................................... Section 84.6: Getting and setting system volume 559 ................................................................................................. Chapter 85: Android Sound and Media 561 ......................................................................................................... Section 85.1: How to pick image and video for api >19 561 ......................................................................................... Section 85.2: Play sounds via SoundPool 562 ............................................................................................................... Chapter 86: MediaSession 563 .................................................................................................................................... Section 86.1: Receiving and handling button events 563 ............................................................................................. Chapter 87: MediaStore 566 ........................................................................................................................................ Section 87.1: Fetch Audio/MP3 files from specific folder of device or fetch all files 566 .......................................... Chapter 88: Multidex and the Dex Method Limit 569 ...................................................................................... Section 88.1: Enabling Multidex 569 ................................................................................................................................ Section 88.2: Multidex by extending Application 570 ................................................................................................... Section 88.3: Multidex by extending MultiDexApplication 570 ..................................................................................... Section 88.4: Multidex by using MultiDexApplication directly 571 ............................................................................... Section 88.5: Counting Method References On Every Build (Dexcount Gradle Plugin) 571 ..................................... Chapter 89: Data Synchronization with Sync Adapter 573 ......................................................................... Section 89.1: Dummy Sync Adapter with Stub Provider 573 ........................................................................................ Chapter 90: PorterDu Mode 579 ............................................................................................................................ Section 90.1: Creating a PorterDu ColorFilter 579 ...................................................................................................... Section 90.2: Creating a PorterDu XferMode 579 ...................................................................................................... Section 90.3: Apply a radial mask (vignette) to a bitmap using PorterDuXfermode 579 ..................................... Chapter 91: Menu 581 ...................................................................................................................................................... Section 91.1: Options menu with dividers 581 ................................................................................................................. Section 91.2: Apply custom font to Menu 581 ................................................................................................................ Section 91.3: Creating a Menu in an Activity 582 ........................................................................................................... Chapter 92: Picasso 585 .................................................................................................................................................
Page 13
Section 92.1: Adding Picasso Library to your Android Project 585 ............................................................................. Section 92.2: Circular Avatars with Picasso 585 ............................................................................................................ Section 92.3: Placeholder and Error Handling 587 ....................................................................................................... Section 92.4: Re-sizing and Rotating 587 ...................................................................................................................... Section 92.5: Disable cache in Picasso 588 ................................................................................................................... Section 92.6: Using Picasso as ImageGetter for Html.fromHtml 588 ......................................................................... Section 92.7: Cancelling Image Requests using Picasso 589 ....................................................................................... Section 92.8: Loading Image from external Storage 590 ............................................................................................ Section 92.9: Downloading image as Bitmap using Picasso 590 ................................................................................ Section 92.10: Try oine disk cache first, then go online and fetch the image 590 ................................................. Chapter 93: RoboGuice 592 .......................................................................................................................................... Section 93.1: Simple example 592 ................................................................................................................................... Section 93.2: Installation for Gradle Projects 592 ......................................................................................................... Section 93.3: @ContentView annotation 592 ................................................................................................................ Section 93.4: @InjectResource annotation 592 ............................................................................................................. Section 93.5: @InjectView annotation 593 ..................................................................................................................... Section 93.6: Introduction to RoboGuice 593 ................................................................................................................. Chapter 94: ACRA 596 ..................................................................................................................................................... Section 94.1: ACRAHandler 596 ....................................................................................................................................... Section 94.2: Example manifest 596 ............................................................................................................................... Section 94.3: Installation 597 ........................................................................................................................................... Chapter 95: Parcelable 598 .......................................................................................................................................... Section 95.1: Making a custom object Parcelable 598 .................................................................................................. Section 95.2: Parcelable object containing another Parcelable object 599 ............................................................... Section 95.3: Using Enums with Parcelable 600 ............................................................................................................ Chapter 96: Retrofit2 602 .............................................................................................................................................. Section 96.1: A Simple GET Request 602 ........................................................................................................................ Section 96.2: Debugging with Stetho 604 ...................................................................................................................... Section 96.3: Add logging to Retrofit2 605 .................................................................................................................... Section 96.4: A simple POST request with GSON 605 ................................................................................................... Section 96.5: Download a file from Server using Retrofit2 607 ................................................................................... Section 96.6: Upload multiple file using Retrofit as multipart 609 .............................................................................. Section 96.7: Retrofit with OkHttp interceptor 612 ....................................................................................................... Section 96.8: Header and Body: an Authentication Example 612 ............................................................................... Section 96.9: Uploading a file via Multipart 613 ............................................................................................................ Section 96.10: Retrofit 2 Custom Xml Converter 613 .................................................................................................... Section 96.11: Reading XML form URL with Retrofit 2 615 ............................................................................................ Chapter 97: ButterKnife 618 ........................................................................................................................................ Section 97.1: Configuring ButterKnife in your project 618 ............................................................................................ Section 97.2: Unbinding views in ButterKnife 620 ......................................................................................................... Section 97.3: Binding Listeners using ButterKnife 620 .................................................................................................. Section 97.4: Android Studio ButterKnife Plugin 621 .................................................................................................... Section 97.5: Binding Views using ButterKnife 622 ....................................................................................................... Chapter 98: Volley 625 .................................................................................................................................................... Section 98.1: Using Volley for HTTP requests 625 ......................................................................................................... Section 98.2: Basic StringRequest using GET method 626 .......................................................................................... Section 98.3: Adding custom design time attributes to NetworkImageView 627 ...................................................... Section 98.4: Adding custom headers to your requests [e.g. for basic auth] 628 .................................................... Section 98.5: Remote server authentication using StringRequest through POST method 629 ............................... Section 98.6: Cancel a request 631 .................................................................................................................................
Page 14
Section 98.7: Request JSON 631 ..................................................................................................................................... Section 98.8: Use JSONArray as request body 631 ..................................................................................................... Section 98.9: Boolean variable response from server with json request in volley 632 ............................................. Section 98.10: Helper Class for Handling Volley Errors 633 ......................................................................................... Chapter 99: Date and Time Pickers 635 ................................................................................................................. Section 99.1: Date Picker Dialog 635 .............................................................................................................................. Section 99.2: Material DatePicker 635 ............................................................................................................................ Chapter 100: Localized Date/Time in Android 638 .......................................................................................... Section 100.1: Custom localized date format with DateUtils.formatDateTime() 638 ................................................ Section 100.2: Standard date/time formatting in Android 638 ................................................................................... Section 100.3: Fully customized date/time 638 ............................................................................................................. Chapter 101: Time Utils 639 ........................................................................................................................................... Section 101.1: To check within a period 639 .................................................................................................................... Section 101.2: Convert Date Format into Milliseconds 639 ........................................................................................... Section 101.3: GetCurrentRealTime 640 .......................................................................................................................... Chapter 102: In-app Billing 641 ................................................................................................................................... Section 102.1: Consumable In-app Purchases 641 ........................................................................................................ Section 102.2: (Third party) In-App v3 Library 645 ....................................................................................................... Chapter 103: FloatingActionButton 647 ................................................................................................................. Section 103.1: How to add the FAB to the layout 647 .................................................................................................... Section 103.2: Show and Hide FloatingActionButton on Swipe 648 ............................................................................ Section 103.3: Show and Hide FloatingActionButton on Scroll 650 ............................................................................. Section 103.4: Setting behaviour of FloatingActionButton 652 .................................................................................... Chapter 104: Touch Events 653 .................................................................................................................................. Section 104.1: How to vary between child and parent view group touch events 653 ............................................... Chapter 105: Handling touch and motion events 656 .................................................................................... Section 105.1: Buttons 656 ................................................................................................................................................ Section 105.2: Surface 657 ............................................................................................................................................... Section 105.3: Handling multitouch in a surface 658 .................................................................................................... Chapter 106: Detect Shake Event in Android 659 ............................................................................................. Section 106.1: Shake Detector in Android Example 659 ................................................................................................ Section 106.2: Using Seismic shake detection 660 ........................................................................................................ Chapter 107: Hardware Button Events/Intents (PTT, LWP, etc.) 661 ..................................................... Section 107.1: Sonim Devices 661 .................................................................................................................................... Section 107.2: RugGear Devices 661 ............................................................................................................................... Chapter 108: GreenRobot EventBus 662 ................................................................................................................ Section 108.1: Passing a Simple Event 662 ..................................................................................................................... Section 108.2: Receiving Events 663 ............................................................................................................................... Section 108.3: Sending Events 663 .................................................................................................................................. Chapter 109: Otto Event Bus 664 ............................................................................................................................... Section 109.1: Passing an event 664 ................................................................................................................................ Section 109.2: Receiving an event 664 ........................................................................................................................... Chapter 110: Vibration 666 ............................................................................................................................................ Section 110.1: Getting Started with Vibration 666 ........................................................................................................... Section 110.2: Vibrate Indefinitely 666 ............................................................................................................................ Section 110.3: Vibration Patterns 666 .............................................................................................................................. Section 110.4: Stop Vibrate 667 ........................................................................................................................................ Section 110.5: Vibrate for one time 667 ..........................................................................................................................
Page 15
Chapter 111: ContentProvider 668 .............................................................................................................................. Section 111.1: Implementing a basic content provider class 668 .................................................................................. Chapter 112: Dagger 2 672 ............................................................................................................................................. Section 112.1: Component setup for Application and Activity injection 672 ................................................................ Section 112.2: Custom Scopes 673 .................................................................................................................................. Section 112.3: Using @Subcomponent instead of @Component(dependencies={...}) 674 ....................................... Section 112.4: Creating a component from multiple modules 674 .............................................................................. Section 112.5: How to add Dagger 2 in build.gradle 675 .............................................................................................. Section 112.6: Constructor Injection 676 ......................................................................................................................... Chapter 113: Realm 678 ................................................................................................................................................... Section 113.1: Sorted queries 678 ..................................................................................................................................... Section 113.2: Using Realm with RxJava 678 ................................................................................................................. Section 113.3: Basic Usage 679 ........................................................................................................................................ Section 113.4: List of primitives (RealmList<Integer/String/...>) 682 ............................................................................ Section 113.5: Async queries 683 ..................................................................................................................................... Section 113.6: Adding Realm to your project 683 .......................................................................................................... Section 113.7: Realm Models 683 ..................................................................................................................................... Section 113.8: try-with-resources 684 .............................................................................................................................. Chapter 114: Android Versions 685 ........................................................................................................................... Section 114.1: Checking the Android Version on device at runtime 685 ...................................................................... Chapter 115: Wi-Fi Connections 686 .......................................................................................................................... Section 115.1: Connect with WEP encryption 686 ........................................................................................................... Section 115.2: Connect with WPA2 encryption 686 ........................................................................................................ Section 115.3: Scan for access points 687 ....................................................................................................................... Chapter 116: SensorManager 689 .............................................................................................................................. Section 116.1: Decide if your device is static or not, using the accelerometer 689 ..................................................... Section 116.2: Retrieving sensor events 689 ................................................................................................................... Section 116.3: Sensor transformation to world coordinate system 690 ...................................................................... Chapter 117: ProgressBar 692 ..................................................................................................................................... Section 117.1: Material Linear ProgressBar 692 .............................................................................................................. Section 117.2: Tinting ProgressBar 694 ........................................................................................................................... Section 117.3: Customized progressbar 694 ................................................................................................................... Section 117.4: Creating Custom Progress Dialog 696 .................................................................................................... Section 117.5: Indeterminate ProgressBar 698 ............................................................................................................... Section 117.6: Determinate ProgressBar 699 ................................................................................................................. Chapter 118: Custom Fonts 701 ................................................................................................................................... Section 118.1: Custom font in canvas text 701 ................................................................................................................ Section 118.2: Working with fonts in Android O 701 ...................................................................................................... Section 118.3: Custom font to whole activity 702 ........................................................................................................... Section 118.4: Putting a custom font in your app 702 ................................................................................................... Section 118.5: Initializing a font 702 ................................................................................................................................. Section 118.6: Using a custom font in a TextView 702 .................................................................................................. Section 118.7: Apply font on TextView by xml (Not required Java code) 703 ............................................................ Section 118.8: Ecient Typeface loading 704 ................................................................................................................ Chapter 119: Getting system font names and using the fonts 705 .......................................................... Section 119.1: Getting system font names 705 ............................................................................................................... Section 119.2: Applying a system font to a TextView 705 ............................................................................................. Chapter 120: Text to Speech(TTS) 706 ................................................................................................................... Section 120.1: Text to Speech Base 706 ..........................................................................................................................
Page 16
Section 120.2: TextToSpeech implementation across the APIs 707 ............................................................................ Chapter 121: Spinner 711 ................................................................................................................................................ Section 121.1: Basic Spinner Example 711 ....................................................................................................................... Section 121.2: Adding a spinner to your activity 712 ..................................................................................................... Chapter 122: Data Encryption/Decryption 714 .................................................................................................. Section 122.1: AES encryption of data using password in a secure way 714 ............................................................. Chapter 123: OkHttp 716 ................................................................................................................................................ Section 123.1: Basic usage example 716 ......................................................................................................................... Section 123.2: Setting up OkHttp 716 .............................................................................................................................. Section 123.3: Logging interceptor 716 .......................................................................................................................... Section 123.4: Synchronous Get Call 717 ........................................................................................................................ Section 123.5: Asynchronous Get Call 717 ..................................................................................................................... Section 123.6: Posting form parameters 718 ................................................................................................................. Section 123.7: Posting a multipart request 718 .............................................................................................................. Section 123.8: Rewriting Responses 718 ........................................................................................................................ Chapter 124: Handling Deep Links 720 ................................................................................................................... Section 124.1: Retrieving query parameters 720 ........................................................................................................... Section 124.2: Simple deep link 720 ................................................................................................................................ Section 124.3: Multiple paths on a single domain 721 .................................................................................................. Section 124.4: Multiple domains and multiple paths 721 .............................................................................................. Section 124.5: Both http and https for the same domain 722 ...................................................................................... Section 124.6: Using pathPrefix 722 ................................................................................................................................ Chapter 125: Crash Reporting Tools 723 ............................................................................................................... Section 125.1: Fabric - Crashlytics 723 ............................................................................................................................ Section 125.2: Capture crashes using Sherlock 728 ...................................................................................................... Section 125.3: Force a Test Crash With Fabric 729 ....................................................................................................... Section 125.4: Crash Reporting with ACRA 730 ............................................................................................................. Chapter 126: Check Internet Connectivity 732 .................................................................................................... Section 126.1: Check if device has internet connectivity 732 ........................................................................................ Section 126.2: How to check network strength in android? 732 .................................................................................. Section 126.3: How to check network strength 733 ....................................................................................................... Chapter 127: Creating your own libraries for Android applications 736 ............................................... Section 127.1: Create a library available on Jitpack.io 736 ........................................................................................... Section 127.2: Creating library project 736 .................................................................................................................... Section 127.3: Using library in project as a module 737 ............................................................................................... Chapter 128: Device Display Metrics 738 ............................................................................................................... Section 128.1: Get the screens pixel dimensions 738 ..................................................................................................... Section 128.2: Get screen density 738 ............................................................................................................................ Section 128.3: Formula px to dp, dp to px conversation 738 ....................................................................................... Chapter 129: Building Backwards Compatible Apps 739 ............................................................................... Section 129.1: How to handle deprecated API 739 ........................................................................................................ Chapter 130: Loader 741 ................................................................................................................................................ Section 130.1: Basic AsyncTaskLoader 741 .................................................................................................................... Section 130.2: AsyncTaskLoader with cache 742 .......................................................................................................... Section 130.3: Reloading 743 ........................................................................................................................................... Section 130.4: Pass parameters using a Bundle 744 .................................................................................................... Chapter 131: ProGuard - Obfuscating and Shrinking your code 745 ....................................................... Section 131.1: Rules for some of the widely used Libraries 745 .................................................................................... Section 131.2: Remove trace logging (and other) statements at build time 747 .......................................................
Page 17
Section 131.3: Protecting your code from hackers 747 ................................................................................................. Section 131.4: Enable ProGuard for your build 748 ........................................................................................................ Section 131.5: Enabling ProGuard with a custom obfuscation configuration file 748 ................................................ Chapter 132: Typedef Annotations: @IntDef, @StringDef 750 .................................................................. Section 132.1: IntDef Annotations 750 ............................................................................................................................. Section 132.2: Combining constants with flags 750 ...................................................................................................... Chapter 133: Capturing Screenshots 752 ............................................................................................................... Section 133.1: Taking a screenshot of a particular view 752 ........................................................................................ Section 133.2: Capturing Screenshot via Android Studio 752 ....................................................................................... Section 133.3: Capturing Screenshot via ADB and saving directly in your PC 753 .................................................... Section 133.4: Capturing Screenshot via Android Device Monitor 753 ........................................................................ Section 133.5: Capturing Screenshot via ADB 754 ......................................................................................................... Chapter 134: MVP Architecture 755 .......................................................................................................................... Section 134.1: Login example in the Model View Presenter (MVP) pattern 755 ......................................................... Section 134.2: Simple Login Example in MVP 758 .......................................................................................................... Chapter 135: Orientation Changes 765 ................................................................................................................... Section 135.1: Saving and Restoring Activity State 765 ................................................................................................. Section 135.2: Retaining Fragments 765 ........................................................................................................................ Section 135.3: Manually Managing Configuration Changes 766 ................................................................................. Section 135.4: Handling AsyncTask 767 ......................................................................................................................... Section 135.5: Lock Screen's rotation programmatically 768 ...................................................................................... Section 135.6: Saving and Restoring Fragment State 769 ........................................................................................... Chapter 136: Xposed 771 ................................................................................................................................................ Section 136.1: Creating a Xposed Module 771 ................................................................................................................ Section 136.2: Hooking a method 771 ............................................................................................................................ Chapter 137: PackageManager 773 .......................................................................................................................... Section 137.1: Retrieve application version 773 ............................................................................................................. Section 137.2: Version name and version code 773 ...................................................................................................... Section 137.3: Install time and update time 773 ............................................................................................................ Section 137.4: Utility method using PackageManager 774 .......................................................................................... Chapter 138: Gesture Detection 776 ........................................................................................................................ Section 138.1: Swipe Detection 776 .................................................................................................................................. Section 138.2: Basic Gesture Detection 777 ................................................................................................................... Chapter 139: Doze Mode 779 ........................................................................................................................................ Section 139.1: Whitelisting an Android application programmatically 779 ................................................................. Section 139.2: Exclude app from using doze mode 779 ............................................................................................... Chapter 140: Colors 780 ................................................................................................................................................. Section 140.1: Color Manipulation 780 ............................................................................................................................ Chapter 141: Keyboard 781 .......................................................................................................................................... Section 141.1: Register a callback for keyboard open and close 781 .......................................................................... Section 141.2: Hide keyboard when user taps anywhere else on the screen 781 ...................................................... Chapter 142: RenderScript 783 .................................................................................................................................. Section 142.1: Getting Started 783 ................................................................................................................................... Section 142.2: Blur a View 789 ......................................................................................................................................... Section 142.3: Blur an image 791 .................................................................................................................................... Chapter 143: Fresco 794 ................................................................................................................................................. Section 143.1: Getting Started with Fresco 794 .............................................................................................................. Section 143.2: Using OkHttp 3 with Fresco 795 ..............................................................................................................
Page 18
Section 143.3: JPEG Streaming with Fresco using DraweeController 795 .................................................................. Chapter 144: Swipe to Refresh 796 ......................................................................................................................... Section 144.1: How to add Swipe-to-Refresh To your app 796 .................................................................................... Section 144.2: Swipe To Refresh with RecyclerView 796 .............................................................................................. Chapter 145: Creating Splash screen 798 ............................................................................................................. Section 145.1: Splash screen with animation 798 ........................................................................................................... Section 145.2: A basic splash screen 799 ....................................................................................................................... Chapter 146: IntentService 802 .................................................................................................................................. Section 146.1: Creating an IntentService 802 .................................................................................................................. Section 146.2: Basic IntentService Example 802 ............................................................................................................ Section 146.3: Sample Intent Service 803 ....................................................................................................................... Chapter 147: Implicit Intents 805 ............................................................................................................................... Section 147.1: Implicit and Explicit Intents 805 ................................................................................................................ Section 147.2: Implicit Intents 805 ................................................................................................................................... Chapter 148: Publish to Play Store 806 .................................................................................................................. Section 148.1: Minimal app submission guide 806 ......................................................................................................... Chapter 149: Universal Image Loader 808 ........................................................................................................... Section 149.1: Basic usage 808 ........................................................................................................................................ Section 149.2: Initialize Universal Image Loader 808 .................................................................................................... Chapter 150: Image Compression 809 .................................................................................................................... Section 150.1: How to compress image without size change 809 ................................................................................ Chapter 151: 9-Patch Images 812 ............................................................................................................................... Section 151.1: Basic rounded corners 812 ....................................................................................................................... Section 151.2: Optional padding lines 812 ...................................................................................................................... Section 151.3: Basic spinner 813 ...................................................................................................................................... Chapter 152: Email Validation 814 ............................................................................................................................ Section 152.1: Email address validation 814 ................................................................................................................... Section 152.2: Email Address validation with using Patterns 814 ................................................................................ Chapter 153: Bottom Sheets 815 ............................................................................................................................... Section 153.1: Quick Setup 815 ......................................................................................................................................... Section 153.2: BottomSheetBehavior like Google maps 815 ........................................................................................ Section 153.3: Modal bottom sheets with BottomSheetDialog 822 ............................................................................. Section 153.4: Modal bottom sheets with BottomSheetDialogFragment 822 ............................................................ Section 153.5: Persistent Bottom Sheets 822 ................................................................................................................. Section 153.6: Open BottomSheet DialogFragment in Expanded mode by default 823 .......................................... Chapter 154: EditText 825 ............................................................................................................................................. Section 154.1: Working with EditTexts 825 ...................................................................................................................... Section 154.2: Customizing the InputType 827 .............................................................................................................. Section 154.3: Icon or button inside Custom Edit Text and its action and click listeners 827 ................................... Section 154.4: Hiding SoftKeyboard 829 ........................................................................................................................ Section 154.5: `inputype` attribute 830 ............................................................................................................................ Chapter 155: Speech to Text Conversion 832 ...................................................................................................... Section 155.1: Speech to Text With Default Google Prompt Dialog 832 ...................................................................... Section 155.2: Speech to Text without Dialog 833 ......................................................................................................... Chapter 156: Installing apps with ADB 835 ........................................................................................................... Section 156.1: Uninstall an app 835 ................................................................................................................................. Section 156.2: Install all apk file in directory 835 ........................................................................................................... Section 156.3: Install an app 835 .....................................................................................................................................
Page 19
Chapter 157: Count Down Timer 836 ....................................................................................................................... Section 157.1: Creating a simple countdown timer 836 ................................................................................................. Section 157.2: A More Complex Example 836 ................................................................................................................ Chapter 158: Barcode and QR code reading 838 .............................................................................................. Section 158.1: Using QRCodeReaderView (based on Zxing) 838 ................................................................................. Chapter 159: Android PayPal Gateway Integration 840 ................................................................................ Section 159.1: Setup PayPal in your android code 840 ................................................................................................. Chapter 160: Drawables 842 ........................................................................................................................................ Section 160.1: Custom Drawable 842 .............................................................................................................................. Section 160.2: Tint a drawable 843 ................................................................................................................................. Section 160.3: Circular View 844 ...................................................................................................................................... Section 160.4: Make View with rounded corners 844 .................................................................................................... Chapter 161: TransitionDrawable 846 ...................................................................................................................... Section 161.1: Animate views background color (switch-color) with TransitionDrawable 846 .................................. Section 161.2: Add transition or Cross-fade between two images 846 ....................................................................... Chapter 162: Vector Drawables 848 ......................................................................................................................... Section 162.1: Importing SVG file as VectorDrawable 848 ............................................................................................ Section 162.2: VectorDrawable Usage Example 850 .................................................................................................... Section 162.3: VectorDrawable xml example 851 ......................................................................................................... Chapter 163: VectorDrawable and AnimatedVectorDrawable 852 ......................................................... Section 163.1: Basic VectorDrawable 852 ....................................................................................................................... Section 163.2: <group> tags 852 ...................................................................................................................................... Section 163.3: Basic AnimatedVectorDrawable 853 ...................................................................................................... Section 163.4: Using Strokes 854 ..................................................................................................................................... Section 163.5: Using <clip-path> 856 ............................................................................................................................... Section 163.6: Vector compatibility through AppCompat 856 ..................................................................................... Chapter 164: Port Mapping using Cling library in Android 858 .................................................................. Section 164.1: Mapping a NAT port 858 .......................................................................................................................... Section 164.2: Adding Cling Support to your Android Project 858 .............................................................................. Chapter 165: Creating Overlay (always-on-top) Windows 860 .................................................................. Section 165.1: Popup overlay 860 .................................................................................................................................... Section 165.2: Granting SYSTEM_ALERT_WINDOW Permission on android 6.0 and above 860 ............................ Chapter 166: ExoPlayer 862 .......................................................................................................................................... Section 166.1: Add ExoPlayer to the project 862 ............................................................................................................ Section 166.2: Using ExoPlayer 862 ................................................................................................................................ Section 166.3: Main steps to play video & audio using the standard TrackRenderer implementations 863 ............................................................................................................................................................................. Chapter 167: XMPP register login and chat simple example 864 .............................................................. Section 167.1: XMPP register login and chat basic example 864 .................................................................................. Chapter 168: Android Authenticator 873 ............................................................................................................... Section 168.1: Basic Account Authenticator Service 873 ............................................................................................... Chapter 169: AudioManager 876 ................................................................................................................................ Section 169.1: Requesting Transient Audio Focus 876 .................................................................................................. Section 169.2: Requesting Audio Focus 876 ................................................................................................................... Chapter 170: AudioTrack 877 ....................................................................................................................................... Section 170.1: Generate tone of a specific frequency 877 ............................................................................................ Chapter 171: Job Scheduling 878 ............................................................................................................................... Section 171.1: Basic usage 878 .........................................................................................................................................
Page 20
Chapter 172: Accounts and AccountManager 880 ............................................................................................ Section 172.1: Understanding custom accounts/authentication 880 .......................................................................... Chapter 173: Integrate OpenCV into Android Studio 882 .............................................................................. Section 173.1: Instructions 882 .......................................................................................................................................... Chapter 174: MVVM (Architecture) 890 .................................................................................................................. Section 174.1: MVVM Example using DataBinding Library 890 .................................................................................... Chapter 175: ORMLite in android 897 ...................................................................................................................... Section 175.1: Android OrmLite over SQLite example 897 ............................................................................................ Chapter 176: Retrofit2 with RxJava 901 ................................................................................................................. Section 176.1: Retrofit2 with RxJava 901 ........................................................................................................................ Section 176.2: Nested requests example: multiple requests, combine results 902 .................................................... Section 176.3: Retrofit with RxJava to fetch data asyncronously 903 ........................................................................ Chapter 177: ShortcutManager 906 ......................................................................................................................... Section 177.1: Dynamic Launcher Shortcuts 906 ............................................................................................................ Chapter 178: LruCache 907 ........................................................................................................................................... Section 178.1: Adding a Bitmap(Resource) to the cache 907 ....................................................................................... Section 178.2: Initialising the cache 907 .......................................................................................................................... Section 178.3: Getting a Bitmap(Resouce) from the cache 907 .................................................................................. Chapter 179: Jenkins CI setup for Android Projects 908 ................................................................................ Section 179.1: Step by step approach to set up Jenkins for Android 908 ................................................................... Chapter 180: fastlane 912 ............................................................................................................................................. Section 180.1: Fastfile lane to build and install all flavors for given build type to a device 912 ............................... Section 180.2: Fastfile to build and upload multiple flavors to Beta by Crashlytics 912 .......................................... Chapter 181: Define step value (increment) for custom RangeSeekBar 915 ..................................... Section 181.1: Define a step value of 7 915 ..................................................................................................................... Chapter 182: Getting started with OpenGL ES 2.0+ 916 ................................................................................. Section 182.1: Setting up GLSurfaceView and OpenGL ES 2.0+ 916 ............................................................................ Section 182.2: Compiling and Linking GLSL-ES Shaders from asset file 916 .............................................................. Chapter 183: Check Data Connection 919 ............................................................................................................. Section 183.1: Check data connection 919 ...................................................................................................................... Section 183.2: Check connection using ConnectivityManager 919 ............................................................................. Section 183.3: Use network intents to perform tasks while data is allowed 919 ........................................................ Chapter 184: Java on Android 920 ........................................................................................................................... Section 184.1: Java 8 features subset with Retrolambda 920 ...................................................................................... Chapter 185: Android Java Native Interface (JNI) 922 .................................................................................. Section 185.1: How to call functions in a native library via the JNI interface 922 ...................................................... Section 185.2: How to call a Java method from native code 922 ............................................................................... Section 185.3: Utility method in JNI layer 923 ................................................................................................................ Chapter 186: Notification Channel Android O 925 ............................................................................................ Section 186.1: Notification Channel 925 .......................................................................................................................... Chapter 187: Robolectric 931 ....................................................................................................................................... Section 187.1: Robolectric test 931 .................................................................................................................................. Section 187.2: Configuration 931 ..................................................................................................................................... Chapter 188: Moshi 933 ................................................................................................................................................... Section 188.1: JSON into Java 933 .................................................................................................................................. Section 188.2: serialize Java objects as JSON 933 ....................................................................................................... Section 188.3: Built in Type Adapters 933 ......................................................................................................................
The above is a preview of the first 20 pages. Register to read the complete e-book.

Recommended for You

Loading recommended books...
Failed to load, please try again later

Tip the Site

Scan the WeChat Pay or Alipay code to tip. No login required.

WeChat Pay
Alipay
Back to List