Statistics
51
Views
0
Downloads
0
Donations
Uploader

高宏飞

Shared on 2025-12-05
Support
Share

AuthorGoalKicker.com

No description

Tags
No tags
Publisher: GoalKicker.com
Publish Year: 2018
Language: 英文
File Format: PDF
File Size: 11.9 MB
Support Statistics
¥.00 · 0times
Text Preview (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.

Android Notes for ProfessionalsAndroid™ Notes for Professionals GoalKicker.com Free Programming Books Disclaimer This is an unocial free book created for educational purposes and is not aliated with ocial 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
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 dierent Textsize 39 ............................................................................................................ Section 4.7: Theme and Style customization 39 ............................................................................................................ Section 4.8: TextView customization 41 ......................................................................................................................... Section 4.9: Single TextView with two dierent 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 .................................................................................................
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 ...............................................................................
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: ItemOsetDecoration 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 ................................................................
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 Dierent 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 dierent 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 .................................................................................................
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: Dierent ways of instantiating an object of SharedPreferences 303 ................................................. Section 40.12: Removing keys 304 .................................................................................................................................. Section 40.13: Support pre-Honeycomb with StringSet 304 ........................................................................................
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 dierent 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 ....................................................................................
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 dierent 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 ........................................................................................................................
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 ................................................................................................................................
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 Dierent 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 ...........................................................................................
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 dierent 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 ...................................................................................................
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 Buer 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 PorterDuXfermode 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 .................................................................................................................................................
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 oine 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 .................................................................................................................................
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 ..........................................................................................................................
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: Ecient 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 ..........................................................................................................................
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 .......................................................
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 ..............................................................................................................
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 .....................................................................................................................................
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 .........................................................................................................................................
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.