Android Notes for Professionals book

    Amazing collection of free programming books

    5.0
    免费
    Amazing collection of free programming books

    The Notes for Professionals book is compiled from Stack Overflow Documentation, the content is written by the beautiful people at Stack Overflow. Text content is released under Creative Commons BY-SA. See credits at the end of this book whom contributed to the various chapters. Images may be copyright of their respective owners unless otherwise specified

    Book created for educational purposes and is not affiliated with group(s), company(s) nor Stack Overflow. All trademarks belong to their respective company owners

    https://goalkicker.com/

    章节目录

    1-1Content list
    1-2About
    1-3Chapter 1: Getting started with Android
    1-4Section 1.1: Creating a New Project
    1-5Section 1.2: Setting up Android Studio
    1-6Section 1.3: Android programming without an IDE
    1-7Section 1.4: Application Fundamentals
    1-8Section 1.5: Setting up an AVD (Android Virtual Device)
    1-9Chapter 2: Android Studio
    1-10Section 2.1: Setup Android Studio
    1-11Section 2.2: View And Add Shortcuts in Android Studio
    1-12Section 2.3: Android Studio useful shortcuts
    1-13Section 2.4: Android Studio Improve performance tip
    1-14Section 2.5: Gradle build project takes forever
    1-15Section 2.6: Enable/Disable blank line copy
    1-16Section 2.7: Custom colors of logcat message based on message importance
    1-17Section 2.8: Filter logs from UI
    1-18Section 2.9: Create filters configuration
    1-19Section 2.10: Create assets folder
    1-20Chapter 3: Instant Run in Android Studio
    1-21Section 3.1: Enabling or disabling Instant Run
    1-22Section 3.2: Types of code Swaps in Instant Run
    1-23Section 3.3: Unsupported code changes when using Instant Run
    1-24Chapter 4: TextView
    1-25Section 4.1: Spannable TextView
    1-26Section 4.2: Strikethrough TextView
    1-27Section 4.3: TextView with image
    1-28Section 4.4: Make RelativeSizeSpan align to top
    1-29Section 4.5: Pinchzoom on TextView
    1-30Section 4.6: Textview with dierent Textsize
    1-31Section 4.7: Theme and Style customization
    1-32Section 4.8: TextView customization
    1-33Section 4.9: Single TextView with two dierent colors
    1-34Chapter 5: AutoCompleteTextView
    1-35Section 5.1: AutoComplete with CustomAdapter, ClickListener and Filter
    1-36Section 5.2: Simple, hard-coded AutoCompleteTextView
    1-37Chapter 6: Autosizing TextViews
    1-38Section 6.1: Granularity
    1-39Section 6.2: Preset Sizes
    1-40Chapter 7: ListView
    1-41Section 7.1: Custom ArrayAdapter
    1-42Section 7.2: A basic ListView with an ArrayAdapter
    1-43Section 7.3: Filtering with CursorAdapter
    1-44Chapter 8: Layouts
    1-45Section 8.1: LayoutParams
    1-46Section 8.2: Gravity and layout gravity
    1-47Section 8.3: CoordinatorLayout Scrolling Behavior
    1-48Section 8.4: Percent Layouts
    1-49Section 8.5: View Weight
    1-50Section 8.6: Creating LinearLayout programmatically
    1-51Section 8.7: LinearLayout
    1-52Section 8.8: RelativeLayout
    1-53Section 8.9: FrameLayout
    1-54Section 8.10: GridLayout
    1-55Section 8.11: CoordinatorLayout
    1-56Chapter 9: ConstraintLayout
    1-57Section 9.1: Adding ConstraintLayout to your project
    1-58Section 9.2: Chains
    1-59Chapter 10: TextInputLayout
    1-60Section 10.1: Basic usage
    1-61Section 10.2: Password Visibility Toggles
    1-62Section 10.3: Adding Character Counting
    1-63Section 10.4: Handling Errors
    1-64Section 10.5: Customizing the appearance of the TextInputLayout
    1-65Section 10.6: TextInputEditText
    1-66Chapter 11: CoordinatorLayout and Behaviors
    1-67Section 11.1: Creating a simple Behavior
    1-68Section 11.2: Using the SwipeDismissBehavior
    1-69Section 11.3: Create dependencies between Views
    1-70Chapter 12: TabLayout
    1-71Section 12.1: Using a TabLayout without a ViewPager
    1-72Chapter 13: ViewPager
    1-73Section 13.1: ViewPager with a dots indicator
    1-74Section 13.2: Basic ViewPager usage with fragments
    1-75Section 13.3: ViewPager with PreferenceFragment
    1-76Section 13.4: Adding a ViewPager
    1-77Section 13.5: Setup OnPageChangeListener
    1-78Section 13.6: ViewPager with TabLayout
    1-79Chapter 14: CardView
    1-80Section 14.1: Getting Started with CardView
    1-81Section 14.2: Adding Ripple animation
    1-82Section 14.3: Customizing the CardView
    1-83Section 14.4: Using Images as Background in CardView (Pre-Lollipop device issues)
    1-84Section 14.5: Animate CardView background color with TransitionDrawable
    1-85Chapter 15: NavigationView
    1-86Section 15.1: How to add the NavigationView
    1-87Section 15.2: Add underline in menu elements
    1-88Section 15.3: Add seperators to menu
    1-89Section 15.4: Add menu Divider using default DividerItemDecoration
    1-90Chapter 16: RecyclerView
    1-91Section 16.1: Adding a RecyclerView
    1-92Section 16.2: Smoother loading of items
    1-93Section 16.3: RecyclerView with DataBinding
    1-94Section 16.4: Animate data change
    1-95Section 16.5: Popup menu with recyclerView
    1-96Section 16.6: Using several ViewHolders with ItemViewType
    1-97Section 16.7: Filter items inside RecyclerView with a SearchView
    1-98Section 16.8: Drag&Drop and Swipe with RecyclerView
    1-99Section 16.9: Show default view till items load or when data is not available
    1-100Section 16.10: Add header/footer to a RecyclerView
    1-101Section 16.11: Endless Scrolling in Recycleview
    1-102Section 16.12: Add divider lines to RecyclerView items
    1-103Chapter 17: RecyclerView Decorations
    1-104Section 17.1: Add divider to RecyclerView
    1-105Section 17.2: Drawing a Separator
    1-106Section 17.3: How to add dividers using and DividerItemDecoration
    1-107Section 17.4: Per-item margins with ItemDecoration
    1-108Section 17.5: ItemOsetDecoration for GridLayoutManager in RecycleView
    1-109Chapter 18: RecyclerView onClickListeners
    1-110Section 18.1: Kotlin and RxJava example
    1-111Section 18.2: RecyclerView Click listener
    1-112Section 18.3: Another way to implement Item Click Listener
    1-113Section 18.4: New Example
    1-114Section 18.5: Easy OnLongClick and OnClick Example
    1-115Section 18.6: Item Click Listeners
    1-116Chapter 19: RecyclerView and LayoutManagers
    1-117Section 19.1: Adding header view to recyclerview with gridlayout manager
    1-118Section 19.2: GridLayoutManager with dynamic span count
    1-119Section 19.3: Simple list with LinearLayoutManager
    1-120Section 19.4: StaggeredGridLayoutManager
    1-121Chapter 20: Pagination in RecyclerView
    1-122Section 20.1: MainActivity.java
    1-123Chapter 21: ImageView
    1-124Section 21.1: Set tint
    1-125Section 21.2: Set alpha
    1-126Section 21.3: Set Scale Type
    1-127Section 21.4: ImageView ScaleType - Center
    1-128Section 21.5: ImageView ScaleType - CenterCrop
    1-129Section 21.6: ImageView ScaleType - CenterInside
    1-130Section 21.7: ImageView ScaleType - FitStart and FitEnd
    1-131Section 21.8: ImageView ScaleType - FitCenter
    1-132Section 21.9: Set Image Resource
    1-133Section 21.10: ImageView ScaleType - FitXy
    1-134Section 21.11: MLRoundedImageView.java
    1-135Chapter 22: VideoView
    1-136Section 22.1: Play video from URL with using VideoView
    1-137Section 22.2: VideoView Create
    1-138Chapter 23: Optimized VideoView
    1-139Section 23.1: Optimized VideoView in ListView
    1-140Chapter 24: WebView
    1-141Section 24.1: Troubleshooting WebView by printing console messages or by remote debugging
    1-142Section 24.2: Communication from Javascript to Java (Android)
    1-143Section 24.3: Communication from Java to Javascript
    1-144Section 24.4: Open dialer example
    1-145Section 24.5: Open Local File / Create dynamic content in Webview
    1-146Section 24.6: JavaScript alert dialogs in WebView - How to make them work
    1-147Chapter 25: SearchView
    1-148Section 25.1: Setting Theme for SearchView
    1-149Section 25.2: SearchView in Toolbar with Fragment
    1-150Section 25.3: Appcompat SearchView with RxBindings watcher
    1-151Chapter 26: BottomNavigationView
    1-152Section 26.1: Basic implemetation
    1-153Section 26.2: Customization of BottomNavigationView
    1-154Section 26.3: Handling Enabled / Disabled states
    1-155Section 26.4: Allowing more than 3 menus
    1-156Chapter 27: Canvas drawing using SurfaceView
    1-157Section 27.1: SurfaceView with drawing thread
    1-158Chapter 28: Creating Custom Views
    1-159Section 28.1: Creating Custom Views
    1-160Section 28.2: Adding attributes to views
    1-161Section 28.3: CustomView performance tips
    1-162Section 28.4: Creating a compound view
    1-163Section 28.5: Compound view for SVG/VectorDrawable as drawableRight
    1-164Section 28.6: Responding to Touch Events
    1-165Chapter 29: Getting Calculated View Dimensions
    1-166Section 29.1: Calculating initial View dimensions in an Activity
    1-167Chapter 30: Adding a FuseView to an Android Project
    1-168Section 30.1: hikr app, just another android.view.View
    1-169Chapter 31: Supporting Screens With Dierent Resolutions, Sizes
    1-170Section 31.1: Using configuration qualifiers
    1-171Section 31.2: Converting dp and sp to pixels
    1-172Section 31.3: Text size and dierent android screen sizes
    1-173Chapter 32: ViewFlipper
    1-174Section 32.1: ViewFlipper with image sliding
    1-175Chapter 33: Design Patterns
    1-176Section 33.1: Observer pattern
    1-177Section 33.2: Singleton Class Example
    1-178Chapter 34: Activity
    1-179Section 34.1: Activity launchMode
    1-180Section 34.2: Exclude an activity from back-stack history
    1-181Section 34.3: Android Activity LifeCycle Explained
    1-182Section 34.4: End Application with exclude from Recents
    1-183Section 34.5: Presenting UI with setContentView
    1-184Section 34.6: Up Navigation for Activities
    1-185Section 34.7: Clear your current Activity stack and launch a new Activity
    1-186Chapter 35: Activity Recognition
    1-187Section 35.1: Google Play ActivityRecognitionAPI
    1-188Section 35.2: PathSense Activity Recognition
    1-189Chapter 36: Split Screen / Multi-Screen Activities
    1-190Section 36.1: Split Screen introduced in Android Nougat implemented
    1-191Chapter 37: Material Design
    1-192Section 37.1: Adding a Toolbar
    1-193Section 37.2: Buttons styled with Material Design
    1-194Section 37.3: Adding a FloatingActionButton (FAB)
    1-195Section 37.4: RippleDrawable
    1-196Section 37.5: Adding a TabLayout
    1-197Section 37.6: Bottom Sheets in Design Support Library
    1-198Section 37.7: Apply an AppCompat theme
    1-199Section 37.8: Add a Snackbar
    1-200Section 37.9: Add a Navigation Drawer
    1-201Section 37.10: How to use TextInputLayout
    1-202Chapter 38: Resources
    1-203Section 38.1: Define colors
    1-204Section 38.2: Color Transparency(Alpha) Level
    1-205Section 38.3: Define String Plurals
    1-206Section 38.4: Define strings
    1-207Section 38.5: Define dimensions
    1-208Section 38.6: String formatting in strings.xml
    1-209Section 38.7: Define integer array
    1-210Section 38.8: Define a color state list
    1-211Section 38.9: 9 Patches
    1-212Section 38.10: Getting resources without "deprecated" warnings
    1-213Section 38.11: Working with strings.xml file
    1-214Section 38.12: Define string array
    1-215Section 38.13: Define integers
    1-216Section 38.14: Define a menu resource and use it inside Activity/Fragment
    1-217Chapter 39: Data Binding Library
    1-218Section 39.1: Basic text field binding
    1-219Section 39.2: Built-in two-way Data Binding
    1-220Section 39.3: Custom event using lambda expression
    1-221Section 39.4: Default value in Data Binding
    1-222Section 39.5: Databinding in Dialog
    1-223Section 39.6: Binding with an accessor method
    1-224Section 39.7: Pass widget as reference in BindingAdapter
    1-225Section 39.8: Click listener with Binding
    1-226Section 39.9: Data binding in RecyclerView Adapter
    1-227Section 39.10: Databinding in Fragment
    1-228Section 39.11: DataBinding with custom variables(int,boolean)
    1-229Section 39.12: Referencing classes
    1-230Chapter 40: SharedPreferences
    1-231Section 40.1: Implementing a Settings screen using SharedPreferences
    1-232Section 40.2: Commit vs. Apply
    1-233Section 40.3: Read and write values to SharedPreferences
    1-234Section 40.4: Retrieve all stored entries from a particular SharedPreferences file
    1-235Section 40.5: Reading and writing data to SharedPreferences with Singleton
    1-236Section 40.6: getPreferences(int) VS getSharedPreferences(String, int)
    1-237Section 40.7: Listening for SharedPreferences changes
    1-238Section 40.8: Store, Retrieve, Remove and Clear Data from SharedPreferences
    1-239Section 40.9: Add filter for EditTextPreference
    1-240Section 40.10: Supported data types in SharedPreferences
    1-241Section 40.11: Dierent ways of instantiating an object of SharedPreferences
    1-242Section 40.12: Removing keys
    1-243Section 40.13: Support pre-Honeycomb with StringSet
    1-244Chapter 41: Intent
    1-245Section 41.1: Getting a result from another Activity
    1-246Section 41.2: Passing data between activities
    1-247Section 41.3: Open a URL in a browser
    1-248Section 41.4: Starter Pattern
    1-249Section 41.5: Clearing an activity stack
    1-250Section 41.6: Start an activity
    1-251Section 41.7: Sending emails
    1-252Section 41.8: CustomTabsIntent for Chrome Custom Tabs
    1-253Section 41.9: Intent URI
    1-254Section 41.10: Start the dialer
    1-255Section 41.11: Broadcasting Messages to Other Components
    1-256Section 41.12: Passing custom object between activities
    1-257Section 41.13: Open Google map with specified latitude, longitude
    1-258Section 41.14: Passing dierent data through Intent in Activity
    1-259Section 41.15: Share intent
    1-260Section 41.16: Showing a File Chooser and Reading the Result
    1-261Section 41.17: Sharing Multiple Files through Intent
    1-262Section 41.18: Start Unbound Service using an Intent
    1-263Section 41.19: Getting a result from Activity to Fragment
    1-264Chapter 42: Fragments
    1-265Section 42.1: Pass data from Activity to Fragment using Bundle
    1-266Section 42.2: The newInstance() pattern
    1-267Section 42.3: Navigation between fragments using backstack and static fabric pattern
    1-268Section 42.4: Sending events back to an activity with callback interface
    1-269Section 42.5: Animate the transition between fragments
    1-270Section 42.6: Communication between Fragments
    1-271Chapter 43: Button
    1-272Section 43.1: Using the same click event for one or more Views in the XML
    1-273Section 43.2: Defining external Listener
    1-274Section 43.3: inline onClickListener
    1-275Section 43.4: Customizing Button style
    1-276Section 43.5: Custom Click Listener to prevent multiple fast clicks
    1-277Section 43.6: Using the layout to define a click action
    1-278Section 43.7: Listening to the long click events
    1-279Chapter 44: Emulator
    1-280Section 44.1: Taking screenshots
    1-281Section 44.2: Simulate call
    1-282Section 44.3: Open the AVD Manager
    1-283Section 44.4: Resolving Errors while starting emulator
    1-284Chapter 45: Service
    1-285Section 45.1: Lifecycle of a Service
    1-286Section 45.2: Defining the process of a service
    1-287Section 45.3: Creating an unbound service
    1-288Section 45.4: Starting a Service
    1-289Section 45.5: Creating Bound Service with help of Binder
    1-290Section 45.6: Creating Remote Service (via AIDL)
    1-291Chapter 46: The Manifest File
    1-292Section 46.1: Declaring Components
    1-293Section 46.2: Declaring permissions in your manifest file
    1-294Chapter 47: Gradle for Android
    1-295Section 47.1: A basic build.gradle file
    1-296Section 47.2: Define and use Build Configuration Fields
    1-297Section 47.3: Centralizing dependencies via "dependencies.gradle" file
    1-298Section 47.4: Sign APK without exposing keystore password
    1-299Section 47.5: Adding product flavor-specific dependencies
    1-300Section 47.6: Specifying dierent application IDs for build types and product flavors
    1-301Section 47.7: Versioning your builds via "version.properties" file
    1-302Section 47.8: Defining product flavors
    1-303Section 47.9: Changing output apk name and add version name:
    1-304Section 47.10: Adding product flavor-specific resources
    1-305Section 47.11: Why are there two build.gradle files in an Android Studio project?
    1-306Section 47.12: Directory structure for flavor-specific resources
    1-307Section 47.13: Enable Proguard using gradle
    1-308Section 47.14: Ignoring build variant
    1-309Section 47.15: Enable experimental NDK plugin support for Gradle and AndroidStudio
    1-310Section 47.16: Display signing information
    1-311Section 47.17: Seeing dependency tree
    1-312Section 47.18: Disable image compression for a smaller APK file size
    1-313Section 47.19: Delete "unaligned" apk automatically
    1-314Section 47.20: Executing a shell script from gradle
    1-315Section 47.21: Show all gradle project tasks
    1-316Section 47.22: Debugging your Gradle errors
    1-317Section 47.23: Use gradle.properties for central versionnumber/buildconfigurations
    1-318Section 47.24: Defining build types
    1-319Chapter 48: FileIO with Android
    1-320Section 48.1: Obtaining the working folder
    1-321Section 48.2: Writing raw array of bytes
    1-322Section 48.3: Serializing the object
    1-323Section 48.4: Writing to external storage (SD card)
    1-324Section 48.5: Solving "Invisible MTP files" problem
    1-325Section 48.6: Working with big files
    1-326Chapter 49: FileProvider
    1-327Section 49.1: Sharing a file
    1-328Chapter 50: Storing Files in Internal & External Storage
    1-329Section 50.1: Android: Internal and External Storage - Terminology Clarification
    1-330Section 50.2: Using External Storage
    1-331Section 50.3: Using Internal Storage
    1-332Section 50.4: Fetch Device Directory :
    1-333Section 50.5: Save Database on SD Card (Backup DB on SD)
    1-334Chapter 51: Zip file in android
    1-335Section 51.1: Zip file on android
    1-336Chapter 52: Unzip File in Android
    1-337Section 52.1: Unzip file
    1-338Chapter 53: Camera and Gallery
    1-339Section 53.1: Take photo
    1-340Section 53.2: Taking full-sized photo from camera
    1-341Section 53.3: Decode bitmap correctly rotated from the uri fetched with the intent
    1-342Section 53.4: Set camera resolution
    1-343Section 53.5: How to start camera or gallery and save camera result to storage
    1-344Chapter 54: Camera 2 API
    1-345Section 54.1: Preview the main camera in a TextureView
    1-346Chapter 55: Fingerprint API in android
    1-347Section 55.1: How to use Android Fingerprint API to save user passwords
    1-348Section 55.2: Adding the Fingerprint Scanner in Android application
    1-349Chapter 56: Bluetooth and Bluetooth LE API
    1-350Section 56.1: Permissions
    1-351Section 56.2: Check if bluetooth is enabled
    1-352Section 56.3: Find nearby Bluetooth Low Energy devices
    1-353Section 56.4: Make device discoverable
    1-354Section 56.5: Connect to Bluetooth device
    1-355Section 56.6: Find nearby bluetooth devices
    1-356Chapter 57: Runtime Permissions in API-23 +
    1-357Section 57.1: Android 6.0 multiple permissions
    1-358Section 57.2: Multiple Runtime Permissions From Same Permission Groups
    1-359Section 57.3: Using PermissionUtil
    1-360Section 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
    1-361Section 57.5: Enforcing Permissions in Broadcasts, URI
    1-362Chapter 58: Android Places API
    1-363Section 58.1: Getting Current Places by Using Places API
    1-364Section 58.2: Place Autocomplete Integration
    1-365Section 58.3: Place Picker Usage Example
    1-366Section 58.4: Setting place type filters for PlaceAutocomplete
    1-367Section 58.5: Adding more than one google auto complete activity
    1-368Chapter 59: Android NDK
    1-369Section 59.1: How to log in ndk
    1-370Section 59.2: Building native executables for Android
    1-371Section 59.3: How to clean the build
    1-372Section 59.4: How to use a makefile other than Android.mk
    1-373Chapter 60: DayNight Theme (AppCompat v23.2 / API 14+)
    1-374Section 60.1: Adding the DayNight theme to an app
    1-375Chapter 61: Glide
    1-376Section 61.1: Loading an image
    1-377Section 61.2: Add Glide to your project
    1-378Section 61.3: Glide circle transformation (Load image in a circular ImageView)
    1-379Section 61.4: Default transformations
    1-380Section 61.5: Glide rounded corners image with custom Glide target
    1-381Section 61.6: Placeholder and Error handling
    1-382Section 61.7: Preloading images
    1-383Section 61.8: Handling Glide image load failed
    1-384Section 61.9: Load image in a circular ImageView without custom transformations
    1-385Chapter 62: Dialog
    1-386Section 62.1: Adding Material Design AlertDialog to your app using Appcompat
    1-387Section 62.2: A Basic Alert Dialog
    1-388Section 62.3: ListView in AlertDialog
    1-389Section 62.4: Custom Alert Dialog with EditText
    1-390Section 62.5: DatePickerDialog
    1-391Section 62.6: DatePicker
    1-392Section 62.7: Alert Dialog
    1-393Section 62.8: Alert Dialog with Multi-line Title
    1-394Section 62.9: Date Picker within DialogFragment
    1-395Section 62.10: Fullscreen Custom Dialog with no background and no title
    1-396Chapter 63: Enhancing Alert Dialogs
    1-397Section 63.1: Alert dialog containing a clickable link
    1-398Chapter 64: Animated AlertDialog Box
    1-399Section 64.1: Put Below code for Animated dialog..
    1-400Chapter 65: GreenDAO
    1-401Section 65.1: Helper methods for SELECT, INSERT, DELETE, UPDATE queries
    1-402Section 65.2: Creating an Entity with GreenDAO 3.X that has a Composite Primary Key
    1-403Section 65.3: Getting started with GreenDao v3.X
    1-404Chapter 66: Tools Attributes
    1-405Section 66.1: Designtime Layout Attributes
    1-406Chapter 67: Formatting Strings
    1-407Section 67.1: Format a string resource
    1-408Section 67.2: Formatting data types to String and vise versa
    1-409Section 67.3: Format a timestamp to string
    1-410Chapter 68: SpannableString
    1-411Section 68.1: Add styles to a TextView
    1-412Section 68.2: Multi string , with multi color
    1-413Chapter 69: Notifications
    1-414Section 69.1: Heads Up Notification with Ticker for older devices
    1-415Section 69.2: Creating a simple Notification
    1-416Section 69.3: Set custom notification - show full content text
    1-417Section 69.4: Dynamically getting the correct pixel size for the large icon
    1-418Section 69.5: Ongoing notification with Action button
    1-419Section 69.6: Setting Dierent priorities in notification
    1-420Section 69.7: Set custom notification icon using `Picasso` library
    1-421Section 69.8: Scheduling notifications
    1-422Chapter 70: AlarmManager
    1-423Section 70.1: How to Cancel an Alarm
    1-424Section 70.2: Creating exact alarms on all Android versions
    1-425Section 70.3: API23+ Doze mode interferes with AlarmManager
    1-426Section 70.4: Run an intent at a later time
    1-427Chapter 71: Handler
    1-428Section 71.1: HandlerThreads and communication between Threads
    1-429Section 71.2: Use Handler to create a Timer (similar to javax.swing.Timer)
    1-430Section 71.3: Using a Handler to execute code after a delayed amount of time
    1-431Section 71.4: Stop handler from execution
    1-432Chapter 72: BroadcastReceiver
    1-433Section 72.1: Using LocalBroadcastManager
    1-434Section 72.2: BroadcastReceiver Basics
    1-435Section 72.3: Introduction to Broadcast receiver
    1-436Section 72.4: Using ordered broadcasts
    1-437Section 72.5: Sticky Broadcast
    1-438Section 72.6: Enabling and disabling a Broadcast Receiver programmatically
    1-439Section 72.7: Example of a LocalBroadcastManager
    1-440Section 72.8: Android stopped state
    1-441Section 72.9: Communicate two activities through custom Broadcast receiver
    1-442Section 72.10: BroadcastReceiver to handle BOOT_COMPLETED events
    1-443Section 72.11: Bluetooth Broadcast receiver
    1-444Chapter 73: UI Lifecycle
    1-445Section 73.1: Saving data on memory trimming
    1-446Chapter 74: HttpURLConnection
    1-447Section 74.1: Creating an HttpURLConnection
    1-448Section 74.2: Sending an HTTP GET request
    1-449Section 74.3: Reading the body of an HTTP GET request
    1-450Section 74.4: Sending an HTTP POST request with parameters
    1-451Section 74.5: A multi-purpose HttpURLConnection class to handle all types of HTTP requests
    1-452Section 74.6: Use HttpURLConnection for multipart/form-data
    1-453Section 74.7: Upload (POST) file using HttpURLConnection
    1-454Chapter 75: Callback URL
    1-455Section 75.1: Callback URL example with Instagram OAuth
    1-456Chapter 76: Snackbar
    1-457Section 76.1: Creating a simple Snackbar
    1-458Section 76.2: Custom Snack Bar
    1-459Section 76.3: Custom Snackbar (no need view)
    1-460Section 76.4: Snackbar with Callback
    1-461Section 76.5: Snackbar vs Toasts: Which one should I use?
    1-462Section 76.6: Custom Snackbar
    1-463Chapter 77: Widgets
    1-464Section 77.1: Manifest Declaration -
    1-465Section 77.2: Metadata
    1-466Section 77.3: AppWidgetProvider Class
    1-467Section 77.4: Create/Integrate Basic Widget using Android Studio
    1-468Section 77.5: Two widgets with dierent layouts declaration
    1-469Chapter 78: Toast
    1-470Section 78.1: Creating a custom Toast
    1-471Section 78.2: Set position of a Toast
    1-472Section 78.3: Showing a Toast Message
    1-473Section 78.4: Show Toast Message Above Soft Keyboard
    1-474Section 78.5: Thread safe way of displaying Toast (Application Wide)
    1-475Section 78.6: Thread safe way of displaying a Toast Message (For AsyncTask)
    1-476Chapter 79: Create Singleton Class for Toast Message
    1-477Section 79.1: Create own singleton class for toast massages
    1-478Chapter 80: Interfaces
    1-479Section 80.1: Custom Listener
    1-480Section 80.2: Basic Listener
    1-481Chapter 81: Animators
    1-482Section 81.1: TransitionDrawable animation
    1-483Section 81.2: Fade in/out animation
    1-484Section 81.3: ValueAnimator
    1-485Section 81.4: Expand and Collapse animation of View
    1-486Section 81.5: ObjectAnimator
    1-487Section 81.6: ViewPropertyAnimator
    1-488Section 81.7: Shake animation of an ImageView
    1-489Chapter 82: Location
    1-490Section 82.1: Fused location API
    1-491Section 82.2: Get Address From Location using Geocoder
    1-492Section 82.3: Requesting location updates using LocationManager
    1-493Section 82.4: Requesting location updates on a separate thread using LocationManager
    1-494Section 82.5: Getting location updates in a BroadcastReceiver
    1-495Section 82.6: Register geofence
    1-496Chapter 83: Theme, Style, Attribute
    1-497Section 83.1: Define primary, primary dark, and accent colors
    1-498Section 83.2: Multiple Themes in one App
    1-499Section 83.3: Navigation Bar Color (API 21+)
    1-500Section 83.4: Use Custom Theme Per Activity
    1-501Section 83.5: Light Status Bar (API 23+)
    1-502Section 83.6: Use Custom Theme Globally
    1-503Section 83.7: Overscroll Color (API 21+)
    1-504Section 83.8: Ripple Color (API 21+)
    1-505Section 83.9: Translucent Navigation and Status Bars (API 19+)
    1-506Section 83.10: Theme inheritance
    1-507Chapter 84: MediaPlayer
    1-508Section 84.1: Basic creation and playing
    1-509Section 84.2: Media Player with Buer progress and play position
    1-510Section 84.3: Getting system ringtones
    1-511Section 84.4: Asynchronous prepare
    1-512Section 84.5: Import audio into androidstudio and play it
    1-513Section 84.6: Getting and setting system volume
    1-514Chapter 85: Android Sound and Media
    1-515Section 85.1: How to pick image and video for api >19
    1-516Section 85.2: Play sounds via SoundPool
    1-517Chapter 86: MediaSession
    1-518Section 86.1: Receiving and handling button events
    1-519Chapter 87: MediaStore
    1-520Section 87.1: Fetch Audio/MP3 files from specific folder of device or fetch all files
    1-521Chapter 88: Multidex and the Dex Method Limit
    1-522Section 88.1: Enabling Multidex
    1-523Section 88.2: Multidex by extending Application
    1-524Section 88.3: Multidex by extending MultiDexApplication
    1-525Section 88.4: Multidex by using MultiDexApplication directly
    1-526Section 88.5: Counting Method References On Every Build (Dexcount Gradle Plugin)
    1-527Chapter 89: Data Synchronization with Sync Adapter
    1-528Section 89.1: Dummy Sync Adapter with Stub Provider
    1-529Chapter 90: PorterDu Mode
    1-530Section 90.1: Creating a PorterDu ColorFilter
    1-531Section 90.2: Creating a PorterDu XferMode
    1-532Section 90.3: Apply a radial mask (vignette) to a bitmap using PorterDuXfermode
    1-533Chapter 91: Menu
    1-534Section 91.1: Options menu with dividers
    1-535Section 91.2: Apply custom font to Menu
    1-536Section 91.3: Creating a Menu in an Activity
    1-537Chapter 92: Picasso
    1-538Section 92.1: Adding Picasso Library to your Android Project
    1-539Section 92.2: Circular Avatars with Picasso
    1-540Section 92.3: Placeholder and Error Handling
    1-541Section 92.4: Re-sizing and Rotating
    1-542Section 92.5: Disable cache in Picasso
    1-543Section 92.6: Using Picasso as ImageGetter for Html.fromHtml
    1-544Section 92.7: Cancelling Image Requests using Picasso
    1-545Section 92.8: Loading Image from external Storage
    1-546Section 92.9: Downloading image as Bitmap using Picasso
    1-547Section 92.10: Try oine disk cache first, then go online and fetch the image
    1-548Chapter 93: RoboGuice
    1-549Section 93.1: Simple example
    1-550Section 93.2: Installation for Gradle Projects
    1-551Section 93.3: @ContentView annotation
    1-552Section 93.4: @InjectResource annotation
    1-553Section 93.5: @InjectView annotation
    1-554Section 93.6: Introduction to RoboGuice
    1-555Chapter 94: ACRA
    1-556Section 94.1: ACRAHandler
    1-557Section 94.2: Example manifest
    1-558Section 94.3: Installation
    1-559Chapter 95: Parcelable
    1-560Section 95.1: Making a custom object Parcelable
    1-561Section 95.2: Parcelable object containing another Parcelable object
    1-562Section 95.3: Using Enums with Parcelable
    1-563Chapter 96: Retrofit2
    1-564Section 96.1: A Simple GET Request
    1-565Section 96.2: Debugging with Stetho
    1-566Section 96.3: Add logging to Retrofit2
    1-567Section 96.4: A simple POST request with GSON
    1-568Section 96.5: Download a file from Server using Retrofit2
    1-569Section 96.6: Upload multiple file using Retrofit as multipart
    1-570Section 96.7: Retrofit with OkHttp interceptor
    1-571Section 96.8: Header and Body: an Authentication Example
    1-572Section 96.9: Uploading a file via Multipart
    1-573Section 96.10: Retrofit 2 Custom Xml Converter
    1-574Section 96.11: Reading XML form URL with Retrofit 2
    1-575Chapter 97: ButterKnife
    1-576Section 97.1: Configuring ButterKnife in your project
    1-577Section 97.2: Unbinding views in ButterKnife
    1-578Section 97.3: Binding Listeners using ButterKnife
    1-579Section 97.4: Android Studio ButterKnife Plugin
    1-580Section 97.5: Binding Views using ButterKnife
    1-581Chapter 98: Volley
    1-582Section 98.1: Using Volley for HTTP requests
    1-583Section 98.2: Basic StringRequest using GET method
    1-584Section 98.3: Adding custom design time attributes to NetworkImageView
    1-585Section 98.4: Adding custom headers to your requests [e.g. for basic auth]
    1-586Section 98.5: Remote server authentication using StringRequest through POST method
    1-587Section 98.6: Cancel a request
    1-588Section 98.7: Request JSON
    1-589Section 98.8: Use JSONArray as request body
    1-590Section 98.9: Boolean variable response from server with json request in volley
    1-591Section 98.10: Helper Class for Handling Volley Errors
    1-592Chapter 99: Date and Time Pickers
    1-593Section 99.1: Date Picker Dialog
    1-594Section 99.2: Material DatePicker
    1-595Chapter 100: Localized Date/Time in Android
    1-596Section 100.1: Custom localized date format with DateUtils.formatDateTime()
    1-597Section 100.2: Standard date/time formatting in Android
    1-598Section 100.3: Fully customized date/time
    1-599Chapter 101: Time Utils
    1-600Section 101.1: To check within a period
    1-601Section 101.2: Convert Date Format into Milliseconds
    1-602Section 101.3: GetCurrentRealTime
    1-603Chapter 102: In-app Billing
    1-604Section 102.1: Consumable In-app Purchases
    1-605Section 102.2: (Third party) In-App v3 Library
    1-606Chapter 103: FloatingActionButton
    1-607Section 103.1: How to add the FAB to the layout
    1-608Section 103.2: Show and Hide FloatingActionButton on Swipe
    1-609Section 103.3: Show and Hide FloatingActionButton on Scroll
    1-610Section 103.4: Setting behaviour of FloatingActionButton
    1-611Chapter 104: Touch Events
    1-612Section 104.1: How to vary between child and parent view group touch events
    1-613Chapter 105: Handling touch and motion events
    1-614Section 105.1: Buttons
    1-615Section 105.2: Surface
    1-616Section 105.3: Handling multitouch in a surface
    1-617Chapter 106: Detect Shake Event in Android
    1-618Section 106.1: Shake Detector in Android Example
    1-619Section 106.2: Using Seismic shake detection
    1-620Chapter 107: Hardware Button Events/Intents (PTT, LWP, etc.)
    1-621Section 107.1: Sonim Devices
    1-622Section 107.2: RugGear Devices
    1-623Chapter 108: GreenRobot EventBus
    1-624Section 108.1: Passing a Simple Event
    1-625Section 108.2: Receiving Events
    1-626Section 108.3: Sending Events
    1-627Chapter 109: Otto Event Bus
    1-628Section 109.1: Passing an event
    1-629Section 109.2: Receiving an event
    1-630Chapter 110: Vibration
    1-631Section 110.1: Getting Started with Vibration
    1-632Section 110.2: Vibrate Indefinitely
    1-633Section 110.3: Vibration Patterns
    1-634Section 110.4: Stop Vibrate
    1-635Section 110.5: Vibrate for one time
    1-636Chapter 111: ContentProvider
    1-637Section 111.1: Implementing a basic content provider class
    1-638Chapter 112: Dagger 2
    1-639Section 112.1: Component setup for Application and Activity injection
    1-640Section 112.2: Custom Scopes
    1-641Section 112.3: Using @Subcomponent instead of @Component(dependencies={...})
    1-642Section 112.4: Creating a component from multiple modules
    1-643Section 112.5: How to add Dagger 2 in build.gradle
    1-644Section 112.6: Constructor Injection
    1-645Chapter 113: Realm
    1-646Section 113.1: Sorted queries
    1-647Section 113.2: Using Realm with RxJava
    1-648Section 113.3: Basic Usage
    1-649Section 113.4: List of primitives (RealmList<Integer/String/...>)
    1-650Section 113.5: Async queries
    1-651Section 113.6: Adding Realm to your project
    1-652Section 113.7: Realm Models
    1-653Section 113.8: try-with-resources
    1-654Chapter 114: Android Versions
    1-655Section 114.1: Checking the Android Version on device at runtime
    1-656Chapter 115: Wi-Fi Connections
    1-657Section 115.1: Connect with WEP encryption
    1-658Section 115.2: Connect with WPA2 encryption
    1-659Section 115.3: Scan for access points
    1-660Chapter 116: SensorManager
    1-661Section 116.1: Decide if your device is static or not, using the accelerometer
    1-662Section 116.2: Retrieving sensor events
    1-663Section 116.3: Sensor transformation to world coordinate system
    1-664Chapter 117: ProgressBar
    1-665Section 117.1: Material Linear ProgressBar
    1-666Section 117.2: Tinting ProgressBar
    1-667Section 117.3: Customized progressbar
    1-668Section 117.4: Creating Custom Progress Dialog
    1-669Section 117.5: Indeterminate ProgressBar
    1-670Section 117.6: Determinate ProgressBar
    1-671Chapter 118: Custom Fonts
    1-672Section 118.1: Custom font in canvas text
    1-673Section 118.2: Working with fonts in Android O
    1-674Section 118.3: Custom font to whole activity
    1-675Section 118.4: Putting a custom font in your app
    1-676Section 118.5: Initializing a font
    1-677Section 118.6: Using a custom font in a TextView
    1-678Section 118.7: Apply font on TextView by xml (Not required Java code)
    1-679Section 118.8: Ecient Typeface loading
    1-680Chapter 119: Getting system font names and using the fonts
    1-681Section 119.1: Getting system font names
    1-682Section 119.2: Applying a system font to a TextView
    1-683Chapter 120: Text to Speech(TTS)
    1-684Section 120.1: Text to Speech Base
    1-685Section 120.2: TextToSpeech implementation across the APIs
    1-686Chapter 121: Spinner
    1-687Section 121.1: Basic Spinner Example
    1-688Section 121.2: Adding a spinner to your activity
    1-689Chapter 122: Data Encryption/Decryption
    1-690Section 122.1: AES encryption of data using password in a secure way
    1-691Chapter 123: OkHttp
    1-692Section 123.1: Basic usage example
    1-693Section 123.2: Setting up OkHttp
    1-694Section 123.3: Logging interceptor
    1-695Section 123.4: Synchronous Get Call
    1-696Section 123.5: Asynchronous Get Call
    1-697Section 123.6: Posting form parameters
    1-698Section 123.7: Posting a multipart request
    1-699Section 123.8: Rewriting Responses
    1-700Chapter 124: Handling Deep Links
    1-701Section 124.1: Retrieving query parameters
    1-702Section 124.2: Simple deep link
    1-703Section 124.3: Multiple paths on a single domain
    1-704Section 124.4: Multiple domains and multiple paths
    1-705Section 124.5: Both http and https for the same domain
    1-706Section 124.6: Using pathPrefix
    1-707Chapter 125: Crash Reporting Tools
    1-708Section 125.1: Fabric - Crashlytics
    1-709Section 125.2: Capture crashes using Sherlock
    1-710Section 125.3: Force a Test Crash With Fabric
    1-711Section 125.4: Crash Reporting with ACRA
    1-712Chapter 126: Check Internet Connectivity
    1-713Section 126.1: Check if device has internet connectivity
    1-714Section 126.2: How to check network strength in android?
    1-715Section 126.3: How to check network strength
    1-716Chapter 127: Creating your own libraries for Android applications
    1-717Section 127.1: Create a library available on Jitpack.io
    1-718Section 127.2: Creating library project
    1-719Section 127.3: Using library in project as a module
    1-720Chapter 128: Device Display Metrics
    1-721Section 128.1: Get the screens pixel dimensions
    1-722Section 128.2: Get screen density
    1-723Section 128.3: Formula px to dp, dp to px conversation
    1-724Chapter 129: Building Backwards Compatible Apps
    1-725Section 129.1: How to handle deprecated API
    1-726Chapter 130: Loader
    1-727Section 130.1: Basic AsyncTaskLoader
    1-728Section 130.2: AsyncTaskLoader with cache
    1-729Section 130.3: Reloading
    1-730Section 130.4: Pass parameters using a Bundle
    1-731Chapter 131: ProGuard - Obfuscating and Shrinking your code
    1-732Section 131.1: Rules for some of the widely used Libraries
    1-733Section 131.2: Remove trace logging (and other) statements at build time
    1-734Section 131.3: Protecting your code from hackers
    1-735Section 131.4: Enable ProGuard for your build
    1-736Section 131.5: Enabling ProGuard with a custom obfuscation configuration file
    1-737Chapter 132: Typedef Annotations: @IntDef, @StringDef
    1-738Section 132.1: IntDef Annotations
    1-739Section 132.2: Combining constants with flags
    1-740Chapter 133: Capturing Screenshots
    1-741Section 133.1: Taking a screenshot of a particular view
    1-742Section 133.2: Capturing Screenshot via Android Studio
    1-743Section 133.3: Capturing Screenshot via ADB and saving directly in your PC
    1-744Section 133.4: Capturing Screenshot via Android Device Monitor
    1-745Section 133.5: Capturing Screenshot via ADB
    1-746Chapter 134: MVP Architecture
    1-747Section 134.1: Login example in the Model View Presenter (MVP) pattern
    1-748Section 134.2: Simple Login Example in MVP
    1-749Chapter 135: Orientation Changes
    1-750Section 135.1: Saving and Restoring Activity State
    1-751Section 135.2: Retaining Fragments
    1-752Section 135.3: Manually Managing Configuration Changes
    1-753Section 135.4: Handling AsyncTask
    1-754Section 135.5: Lock Screen's rotation programmatically
    1-755Section 135.6: Saving and Restoring Fragment State
    1-756Chapter 136: Xposed
    1-757Section 136.1: Creating a Xposed Module
    1-758Section 136.2: Hooking a method
    1-759Chapter 137: PackageManager
    1-760Section 137.1: Retrieve application version
    1-761Section 137.2: Version name and version code
    1-762Section 137.3: Install time and update time
    1-763Section 137.4: Utility method using PackageManager
    1-764Chapter 138: Gesture Detection
    1-765Section 138.1: Swipe Detection
    1-766Section 138.2: Basic Gesture Detection
    1-767Chapter 139: Doze Mode
    1-768Section 139.1: Whitelisting an Android application programmatically
    1-769Section 139.2: Exclude app from using doze mode
    1-770Chapter 140: Colors
    1-771Section 140.1: Color Manipulation
    1-772Chapter 141: Keyboard
    1-773Section 141.1: Register a callback for keyboard open and close
    1-774Section 141.2: Hide keyboard when user taps anywhere else on the screen
    1-775Chapter 142: RenderScript
    1-776Section 142.1: Getting Started
    1-777Section 142.2: Blur a View
    1-778Section 142.3: Blur an image
    1-779Chapter 143: Fresco
    1-780Section 143.1: Getting Started with Fresco
    1-781Section 143.2: Using OkHttp 3 with Fresco
    1-782Section 143.3: JPEG Streaming with Fresco using DraweeController
    1-783Chapter 144: Swipe to Refresh
    1-784Section 144.1: How to add Swipe-to-Refresh To your app
    1-785Section 144.2: Swipe To Refresh with RecyclerView
    1-786Chapter 145: Creating Splash screen
    1-787Section 145.1: Splash screen with animation
    1-788Section 145.2: A basic splash screen
    1-789Chapter 146: IntentService
    1-790Section 146.1: Creating an IntentService
    1-791Section 146.2: Basic IntentService Example
    1-792Section 146.3: Sample Intent Service
    1-793Chapter 147: Implicit Intents
    1-794Section 147.1: Implicit and Explicit Intents
    1-795Section 147.2: Implicit Intents
    1-796Chapter 148: Publish to Play Store
    1-797Section 148.1: Minimal app submission guide
    1-798Chapter 149: Universal Image Loader
    1-799Section 149.1: Basic usage
    1-800Section 149.2: Initialize Universal Image Loader
    1-801Chapter 150: Image Compression
    1-802Section 150.1: How to compress image without size change
    1-803Chapter 151: 9-Patch Images
    1-804Section 151.1: Basic rounded corners
    1-805Section 151.2: Optional padding lines
    1-806Section 151.3: Basic spinner
    1-807Chapter 152: Email Validation
    1-808Section 152.1: Email address validation
    1-809Section 152.2: Email Address validation with using Patterns
    1-810Chapter 153: Bottom Sheets
    1-811Section 153.1: Quick Setup
    1-812Section 153.2: BottomSheetBehavior like Google maps
    1-813Section 153.3: Modal bottom sheets with BottomSheetDialog
    1-814Section 153.4: Modal bottom sheets with BottomSheetDialogFragment
    1-815Section 153.5: Persistent Bottom Sheets
    1-816Section 153.6: Open BottomSheet DialogFragment in Expanded mode by default
    1-817Chapter 154: EditText
    1-818Section 154.1: Working with EditTexts
    1-819Section 154.2: Customizing the InputType
    1-820Section 154.3: Icon or button inside Custom Edit Text and its action and click listeners
    1-821Section 154.4: Hiding SoftKeyboard
    1-822Section 154.5: `inputype` attribute
    1-823Chapter 155: Speech to Text Conversion
    1-824Section 155.1: Speech to Text With Default Google Prompt Dialog
    1-825Section 155.2: Speech to Text without Dialog
    1-826Chapter 156: Installing apps with ADB
    1-827Section 156.1: Uninstall an app
    1-828Section 156.2: Install all apk file in directory
    1-829Section 156.3: Install an app
    1-830Chapter 157: Count Down Timer
    1-831Section 157.1: Creating a simple countdown timer
    1-832Section 157.2: A More Complex Example
    1-833Chapter 158: Barcode and QR code reading
    1-834Section 158.1: Using QRCodeReaderView (based on Zxing)
    1-835Chapter 159: Android PayPal Gateway Integration
    1-836Section 159.1: Setup PayPal in your android code
    1-837Chapter 160: Drawables
    1-838Section 160.1: Custom Drawable
    1-839Section 160.2: Tint a drawable
    1-840Section 160.3: Circular View
    1-841Section 160.4: Make View with rounded corners
    1-842Chapter 161: TransitionDrawable
    1-843Section 161.1: Animate views background color (switch-color) with TransitionDrawable
    1-844Section 161.2: Add transition or Cross-fade between two images
    1-845Chapter 162: Vector Drawables
    1-846Section 162.1: Importing SVG file as VectorDrawable
    1-847Section 162.2: VectorDrawable Usage Example
    1-848Section 162.3: VectorDrawable xml example
    1-849Chapter 163: VectorDrawable and AnimatedVectorDrawable
    1-850Section 163.1: Basic VectorDrawable
    1-851Section 163.2: <group> tags
    1-852Section 163.3: Basic AnimatedVectorDrawable
    1-853Section 163.4: Using Strokes
    1-854Section 163.5: Using <clip-path>
    1-855Section 163.6: Vector compatibility through AppCompat
    1-856Chapter 164: Port Mapping using Cling library in Android
    1-857Section 164.1: Mapping a NAT port
    1-858Section 164.2: Adding Cling Support to your Android Project
    1-859Chapter 165: Creating Overlay (always-on-top) Windows
    1-860Section 165.1: Popup overlay
    1-861Section 165.2: Granting SYSTEM_ALERT_WINDOW Permission on android 6.0 and above
    1-862Chapter 166: ExoPlayer
    1-863Section 166.1: Add ExoPlayer to the project
    1-864Section 166.2: Using ExoPlayer
    1-865Section 166.3: Main steps to play video & audio using the standard TrackRenderer implementations
    1-866Chapter 167: XMPP register login and chat simple example
    1-867Section 167.1: XMPP register login and chat basic example
    1-868Chapter 168: Android Authenticator
    1-869Section 168.1: Basic Account Authenticator Service
    1-870Chapter 169: AudioManager
    1-871Section 169.1: Requesting Transient Audio Focus
    1-872Section 169.2: Requesting Audio Focus
    1-873Chapter 170: AudioTrack
    1-874Section 170.1: Generate tone of a specific frequency
    1-875Chapter 171: Job Scheduling
    1-876Section 171.1: Basic usage
    1-877Chapter 172: Accounts and AccountManager
    1-878Section 172.1: Understanding custom accounts/authentication
    1-879Chapter 173: Integrate OpenCV into Android Studio
    1-880Section 173.1: Instructions
    1-881Chapter 174: MVVM (Architecture)
    1-882Section 174.1: MVVM Example using DataBinding Library
    1-883Chapter 175: ORMLite in android
    1-884Section 175.1: Android OrmLite over SQLite example
    1-885Chapter 176: Retrofit2 with RxJava
    1-886Section 176.1: Retrofit2 with RxJava
    1-887Section 176.2: Nested requests example: multiple requests, combine results
    1-888Section 176.3: Retrofit with RxJava to fetch data asyncronously
    1-889Chapter 177: ShortcutManager
    1-890Section 177.1: Dynamic Launcher Shortcuts
    1-891Chapter 178: LruCache
    1-892Section 178.1: Adding a Bitmap(Resource) to the cache
    1-893Section 178.2: Initialising the cache
    1-894Section 178.3: Getting a Bitmap(Resouce) from the cache
    1-895Chapter 179: Jenkins CI setup for Android Projects
    1-896Section 179.1: Step by step approach to set up Jenkins for Android
    1-897Chapter 180: fastlane
    1-898Section 180.1: Fastfile lane to build and install all flavors for given build type to a device
    1-899Section 180.2: Fastfile to build and upload multiple flavors to Beta by Crashlytics
    1-900Chapter 181: Define step value (increment) for custom RangeSeekBar
    1-901Section 181.1: Define a step value of 7
    1-902Chapter 182: Getting started with OpenGL ES 2.0+
    1-903Section 182.1: Setting up GLSurfaceView and OpenGL ES 2.0+
    1-904Section 182.2: Compiling and Linking GLSL-ES Shaders from asset file
    1-905Chapter 183: Check Data Connection
    1-906Section 183.1: Check data connection
    1-907Section 183.2: Check connection using ConnectivityManager
    1-908Section 183.3: Use network intents to perform tasks while data is allowed
    1-909Chapter 184: Java on Android
    1-910Section 184.1: Java 8 features subset with Retrolambda
    1-911Chapter 185: Android Java Native Interface (JNI)
    1-912Section 185.1: How to call functions in a native library via the JNI interface
    1-913Section 185.2: How to call a Java method from native code
    1-914Section 185.3: Utility method in JNI layer
    1-915Chapter 186: Notification Channel Android O
    1-916Section 186.1: Notification Channel
    1-917Chapter 187: Robolectric
    1-918Section 187.1: Robolectric test
    1-919Section 187.2: Configuration
    1-920Chapter 188: Moshi
    1-921Section 188.1: JSON into Java
    1-922Section 188.2: serialize Java objects as JSON
    1-923Section 188.3: Built in Type Adapters
    1-924Chapter 189: Strict Mode Policy : A tool to catch the bug in the Compile Time.
    1-925Section 189.1: The below Code Snippet is to setup the StrictMode for Thread Policies. This Code is to be set at the entry points to our application
    1-926Section 189.2: The below code deals with leaks of memory, like it detects when in SQLLite finalize is called or not
    1-927Chapter 190: Internationalization and localization (I18N and L10N)
    1-928Section 190.1: Planning for localization : enable RTL support in Manifest
    1-929Section 190.2: Planning for localization : Add RTL support in Layouts
    1-930Section 190.3: Planning for localization : Test layouts for RTL
    1-931Section 190.4: Coding for Localization : Creating default strings and resources
    1-932Section 190.5: Coding for localization : Providing alternative strings
    1-933Section 190.6: Coding for localization : Providing alternate layouts
    1-934Chapter 191: Fast way to setup Retrolambda on an android project.
    1-935Section 191.1: Setup and example how to use:
    1-936Chapter 192: How to use SparseArray
    1-937Section 192.1: Basic example using SparseArray
    1-938Chapter 193: Shared Element Transitions
    1-939Section 193.1: Shared Element Transition between two Fragments
    1-940Chapter 194: Android Things
    1-941Section 194.1: Controlling a Servo Motor
    1-942Chapter 195: Library Dagger 2: Dependency Injection in Applications
    1-943Section 195.1: Create @Module Class and @Singleton annotation for Object
    1-944Section 195.2: Request Dependencies in Dependent Objects
    1-945Section 195.3: Connecting @Modules with @Inject
    1-946Section 195.4: Using @Component Interface to Obtain Objects
    1-947Chapter 196: JCodec
    1-948Section 196.1: Getting Started
    1-949Section 196.2: Getting frame from movie
    1-950Chapter 197: Formatting phone numbers with pattern.
    1-951Section 197.1: Patterns + 1 (786) 1234 5678
    1-952Chapter 198: Paint
    1-953Section 198.1: Creating a Paint
    1-954Section 198.2: Setting up Paint for text
    1-955Section 198.3: Setting up Paint for drawing shapes
    1-956Section 198.4: Setting flags
    1-957Chapter 199: What is ProGuard? What is use in Android?
    1-958Section 199.1: Shrink your code and resources with proguard
    1-959Chapter 200: Create Android Custom ROMs
    1-960Section 200.1: Making Your Machine Ready for Building!
    1-961Chapter 201: Genymotion for android
    1-962Section 201.1: Installing Genymotion, the free version
    1-963Section 201.2: Google framework on Genymotion
    1-964Chapter 202: ConstraintSet
    1-965Section 202.1: ConstraintSet with ContraintLayout Programmatically
    1-966Chapter 203: CleverTap
    1-967Section 203.1: Setting the debug level
    1-968Section 203.2: Get an instance of the SDK to record events
    1-969Chapter 204: Publish a library to Maven Repositories
    1-970Section 204.1: Publish .aar file to Maven
    1-971Chapter 205: adb shell
    1-972Section 205.1: Granting & revoking API 23+ permissions
    1-973Section 205.2: Send text, key pressed and touch events to Android Device via ADB
    1-974Section 205.3: List packages
    1-975Section 205.4: Recording the display
    1-976Section 205.5: Open Developer Options
    1-977Section 205.6: Set Date/Time via adb
    1-978Section 205.7: Generating a "Boot Complete" broadcast
    1-979Section 205.8: Print application data
    1-980Section 205.9: Changing file permissions using chmod command
    1-981Section 205.10: View external/secondary storage content
    1-982Section 205.11: kill a process inside an Android device
    1-983Chapter 206: Ping ICMP
    1-984Section 206.1: Performs a single Ping
    1-985Chapter 207: AIDL
    1-986Section 207.1: AIDL Service
    1-987Chapter 208: Android game development
    1-988Section 208.1: Game using Canvas and SurfaceView
    1-989Chapter 209: Android programming with Kotlin
    1-990Section 209.1: Installing the Kotlin plugin
    1-991Section 209.2: Configuring an existing Gradle project with Kotlin
    1-992Section 209.3: Creating a new Kotlin Activity
    1-993Section 209.4: Converting existing Java code to Kotlin
    1-994Section 209.5: Starting a new Activity
    1-995Chapter 210: Android-x86 in VirtualBox
    1-996Section 210.1: Virtual hard drive Setup for SDCARD Support
    1-997Section 210.2: Installation in partition
    1-998Section 210.3: Virtual Machine setup
    1-999Chapter 211: Leakcanary
    1-1000Section 211.1: Implementing a Leak Canary in Android Application
    1-1001Chapter 212: Okio
    1-1002Section 212.1: Download / Implement
    1-1003Section 212.2: PNG decoder
    1-1004Section 212.3: ByteStrings and Buers
    1-1005Chapter 213: Bluetooth Low Energy
    1-1006Section 213.1: Finding BLE Devices
    1-1007Section 213.2: Connecting to a GATT Server
    1-1008Section 213.3: Writing and Reading from Characteristics
    1-1009Section 213.4: Subscribing to Notifications from the Gatt Server
    1-1010Section 213.5: Advertising a BLE Device
    1-1011Section 213.6: Using a Gatt Server
    1-1012Chapter 214: Looper
    1-1013Section 214.1: Create a simple LooperThread
    1-1014Section 214.2: Run a loop with a HandlerThread
    1-1015Chapter 215: Annotation Processor
    1-1016Section 215.1: @NonNull Annotation
    1-1017Section 215.2: Types of Annotations
    1-1018Section 215.3: Creating and Using Custom Annotations
    1-1019Chapter 216: SyncAdapter with periodically do sync of data
    1-1020Section 216.1: Sync adapter with every min requesting value from server
    1-1021Chapter 217: Fastjson
    1-1022Section 217.1: Parsing JSON with Fastjson
    1-1023Section 217.2: Convert the data of type Map to JSON String
    1-1024Chapter 218: JSON in Android with org.json
    1-1025Section 218.1: Creating a simple JSON object
    1-1026Section 218.2: Create a JSON String with null value
    1-1027Section 218.3: Add JSONArray to JSONObject
    1-1028Section 218.4: Parse simple JSON object
    1-1029Section 218.5: Check for the existence of fields on JSON
    1-1030Section 218.6: Create nested JSON object
    1-1031Section 218.7: Updating the elements in the JSON
    1-1032Section 218.8: Using JsonReader to read JSON from a stream
    1-1033Section 218.9: Working with null-string when parsing json
    1-1034Section 218.10: Handling dynamic key for JSON response
    1-1035Chapter 219: Gson
    1-1036Section 219.1: Parsing JSON with Gson
    1-1037Section 219.2: Adding a custom Converter to Gson
    1-1038Section 219.3: Parsing a List<String> with Gson
    1-1039Section 219.4: Adding Gson to your project
    1-1040Section 219.5: Parsing JSON to Generic Class Object with Gson
    1-1041Section 219.6: Using Gson with inheritance
    1-1042Section 219.7: Parsing JSON property to enum with Gson
    1-1043Section 219.8: Using Gson to load a JSON file from disk
    1-1044Section 219.9: Using Gson as serializer with Retrofit
    1-1045Section 219.10: Parsing json array to generic class using Gson
    1-1046Section 219.11: Custom JSON Deserializer using Gson
    1-1047Section 219.12: JSON Serialization/Deserialization with AutoValue and Gson
    1-1048Chapter 220: Android Architecture Components
    1-1049Section 220.1: Using Lifecycle in AppCompatActivity
    1-1050Section 220.2: Add Architecture Components
    1-1051Section 220.3: ViewModel with LiveData transformations
    1-1052Section 220.4: Room peristence
    1-1053Section 220.5: Custom LiveData
    1-1054Section 220.6: Custom Lifecycle-aware component
    1-1055Chapter 221: Jackson
    1-1056Section 221.1: Full Data Binding Example
    1-1057Chapter 222: Smartcard
    1-1058Section 222.1: Smart card send and receive
    1-1059Chapter 223: Security
    1-1060Section 223.1: Verifying App Signature - Tamper Detection
    1-1061Chapter 224: How to store passwords securely
    1-1062Section 224.1: Using AES for salted password encryption
    1-1063Chapter 225: Secure SharedPreferences
    1-1064Section 225.1: Securing a Shared Preference
    1-1065Chapter 226: Secure SharedPreferences
    1-1066Section 226.1: Securing a Shared Preference
    1-1067Chapter 227: SQLite
    1-1068Section 227.1: onUpgrade() method
    1-1069Section 227.2: Reading data from a Cursor
    1-1070Section 227.3: Using the SQLiteOpenHelper class
    1-1071Section 227.4: Insert data into database
    1-1072Section 227.5: Bulk insert
    1-1073Section 227.6: Create a Contract, Helper and Provider for SQLite in Android
    1-1074Section 227.7: Delete row(s) from the table
    1-1075Section 227.8: Updating a row in a table
    1-1076Section 227.9: Performing a Transaction
    1-1077Section 227.10: Create Database from assets folder
    1-1078Section 227.11: Store image into SQLite
    1-1079Section 227.12: Exporting and importing a database
    1-1080Chapter 228: Accessing SQLite databases using the ContentValues class
    1-1081Section 228.1: Inserting and updating rows in a SQLite database
    1-1082Chapter 229: Firebase
    1-1083Section 229.1: Add Firebase to Your Android Project
    1-1084Section 229.2: Updating a Firebase users's email
    1-1085Section 229.3: Create a Firebase user
    1-1086Section 229.4: Change Password
    1-1087Section 229.5: Firebase Cloud Messaging
    1-1088Section 229.6: Firebase Storage Operations
    1-1089Section 229.7: Firebase Realtime Database: how to set/get data
    1-1090Section 229.8: Demo of FCM based notifications
    1-1091Section 229.9: Sign In Firebase user with email and password
    1-1092Section 229.10: Send Firebase password reset email
    1-1093Section 229.11: Re-Authenticate Firebase user
    1-1094Section 229.12: Firebase Sign Out
    1-1095Chapter 230: Firebase Cloud Messaging
    1-1096Section 230.1: Set Up a Firebase Cloud Messaging Client App on Android
    1-1097Section 230.2: Receive Messages
    1-1098Section 230.3: This code that i have implemnted in my app for pushing image,message and also link for opening in your webView
    1-1099Section 230.4: Registration token
    1-1100Section 230.5: Subscribe to a topic
    1-1101Chapter 231: Firebase Realtime DataBase
    1-1102Section 231.1: Quick setup
    1-1103Section 231.2: Firebase Realtime DataBase event handler
    1-1104Section 231.3: Understanding firebase JSON database
    1-1105Section 231.4: Retrieving data from firebase
    1-1106Section 231.5: Listening for child updates
    1-1107Section 231.6: Retrieving data with pagination
    1-1108Section 231.7: Denormalization: Flat Database Structure
    1-1109Section 231.8: Designing and understanding how to retrieve realtime data from the Firebase Database
    1-1110Chapter 232: Firebase App Indexing
    1-1111Section 232.1: Supporting Http URLs
    1-1112Section 232.2: Add AppIndexing API
    1-1113Chapter 233: Firebase Crash Reporting
    1-1114Section 233.1: How to report an error
    1-1115Section 233.2: How to add Firebase Crash Reporting to your app
    1-1116Chapter 234: Twitter APIs
    1-1117Section 234.1: Creating login with twitter button and attach a callback to it
    1-1118Chapter 235: Youtube-API
    1-1119Section 235.1: Activity extending YouTubeBaseActivity
    1-1120Section 235.2: Consuming YouTube Data API on Android
    1-1121Section 235.3: Launching StandAlonePlayerActivity
    1-1122Section 235.4: YoutubePlayerFragment in portrait Activty
    1-1123Section 235.5: YouTube Player API
    1-1124Chapter 236: Integrate Google Sign In
    1-1125Section 236.1: Google Sign In with Helper class
    1-1126Chapter 237: Google signin integration on android
    1-1127Section 237.1: Integration of google Auth in your project. (Get a configuration file)
    1-1128Section 237.2: Code Implementation Google SignIn
    1-1129Chapter 238: Google Awareness APIs
    1-1130Section 238.1: Get changes for location within a certain range using Fence API
    1-1131Section 238.2: Get current location using Snapshot API
    1-1132Section 238.3: Get changes in user activity with Fence API
    1-1133Section 238.4: Get current user activity using Snapshot API
    1-1134Section 238.5: Get headphone state with Snapshot API
    1-1135Section 238.6: Get nearby places using Snapshot API
    1-1136Section 238.7: Get current weather using Snapshot API
    1-1137Chapter 239: Google Maps API v2 for Android
    1-1138Section 239.1: Custom Google Map Styles
    1-1139Section 239.2: Default Google Map Activity
    1-1140Section 239.3: Show Current Location in a Google Map
    1-1141Section 239.4: Change Oset
    1-1142Section 239.5: MapView: embedding a GoogleMap in an existing layout
    1-1143Section 239.6: Get debug SHA1 fingerprint
    1-1144Section 239.7: Adding markers to a map
    1-1145Section 239.8: UISettings
    1-1146Section 239.9: InfoWindow Click Listener
    1-1147Section 239.10: Obtaining the SH1-Fingerprint of your certificate keystore file
    1-1148Section 239.11: Do not launch Google Maps when the map is clicked (lite mode)
    1-1149Chapter 240: Google Drive API
    1-1150Section 240.1: Integrate Google Drive in Android
    1-1151Section 240.2: Create a File on Google Drive
    1-1152Chapter 241: Displaying Google Ads
    1-1153Section 241.1: Adding Interstitial Ad
    1-1154Section 241.2: Basic Ad Setup
    1-1155Chapter 242: AdMob
    1-1156Section 242.1: Implementing
    1-1157Chapter 243: Google Play Store
    1-1158Section 243.1: Open Google Play Store Listing for your app
    1-1159Section 243.2: Open Google Play Store with the list of all applications from your publisher account
    1-1160Chapter 244: Sign your Android App for Release
    1-1161Section 244.1: Sign your App
    1-1162Section 244.2: Configure the build.gradle with signing configuration
    1-1163Chapter 245: TensorFlow
    1-1164Section 245.1: How to use
    1-1165Chapter 246: Android Vk Sdk
    1-1166Section 246.1: Initialization and login
    1-1167Chapter 247: Project SDK versions
    1-1168Section 247.1: Defining project SDK versions
    1-1169Chapter 248: Facebook SDK for Android
    1-1170Section 248.1: How to add Facebook Login in Android
    1-1171Section 248.2: Create your own custom button for Facebook login
    1-1172Section 248.3: A minimalistic guide to Facebook login/signup implementation
    1-1173Section 248.4: Setting permissions to access data from the Facebook profile
    1-1174Section 248.5: Logging out of Facebook
    1-1175Chapter 249: Thread
    1-1176Section 249.1: Thread Example with its description
    1-1177Section 249.2: Updating the UI from a Background Thread
    1-1178Chapter 250: AsyncTask
    1-1179Section 250.1: Basic Usage
    1-1180Section 250.2: Pass Activity as WeakReference to avoid memory leaks
    1-1181Section 250.3: Download Image using AsyncTask in Android
    1-1182Section 250.4: Canceling AsyncTask
    1-1183Section 250.5: AsyncTask: Serial Execution and Parallel Execution of Task
    1-1184Section 250.6: Order of execution
    1-1185Section 250.7: Publishing progress
    1-1186Chapter 251: Testing UI with Espresso
    1-1187Section 251.1: Overall Espresso
    1-1188Section 251.2: Espresso simple UI test
    1-1189Section 251.3: Open Close DrawerLayout
    1-1190Section 251.4: Set Up Espresso
    1-1191Section 251.5: Performing an action on a view
    1-1192Section 251.6: Finding a view with onView
    1-1193Section 251.7: Create Espresso Test Class
    1-1194Section 251.8: Up Navigation
    1-1195Section 251.9: Group a collection of test classes in a test suite
    1-1196Section 251.10: Espresso custom matchers
    1-1197Chapter 252: Writing UI tests - Android
    1-1198Section 252.1: MockWebServer example
    1-1199Section 252.2: IdlingResource
    1-1200Chapter 253: Unit testing in Android with JUnit
    1-1201Section 253.1: Moving Business Logic Out of Android Componenets
    1-1202Section 253.2: Creating Local unit tests
    1-1203Section 253.3: Getting started with JUnit
    1-1204Section 253.4: Exceptions
    1-1205Section 253.5: Static import
    1-1206Chapter 254: Inter-app UI testing with UIAutomator
    1-1207Section 254.1: Prepare your project and write the first UIAutomator test
    1-1208Section 254.2: Writing more complex tests using the UIAutomatorViewer
    1-1209Section 254.3: Creating a test suite of UIAutomator tests
    1-1210Chapter 255: Lint Warnings
    1-1211Section 255.1: Using tools:ignore in xml files
    1-1212Section 255.2: Configure LintOptions with gradle
    1-1213Section 255.3: Configuring lint checking in Java and XML source files
    1-1214Section 255.4: How to configure the lint.xml file
    1-1215Section 255.5: Mark Suppress Warnings
    1-1216Section 255.6: Importing resources without "Deprecated" error
    1-1217Chapter 256: Performance Optimization
    1-1218Section 256.1: Save View lookups with the ViewHolder pattern
    1-1219Chapter 257: Android Kernel Optimization
    1-1220Section 257.1: Low RAM Configuration
    1-1221Section 257.2: How to add a CPU Governor
    1-1222Section 257.3: I/O Schedulers
    1-1223Chapter 258: Memory Leaks
    1-1224Section 258.1: Avoid leaking Activities with AsyncTask
    1-1225Section 258.2: Common memory leaks and how to fix them
    1-1226Section 258.3: Detect memory leaks with the LeakCanary library
    1-1227Section 258.4: Anonymous callback in activities
    1-1228Section 258.5: Activity Context in static classes
    1-1229Section 258.6: Avoid leaking Activities with Listeners
    1-1230Section 258.7: Avoid memory leaks with Anonymous Class, Handler, Timer Task, Thread
    1-1231Chapter 259: Enhancing Android Performance Using Icon Fonts
    1-1232Section 259.1: How to integrate Icon fonts
    1-1233Section 259.2: TabLayout with icon fonts
    1-1234Chapter 260: Bitmap Cache
    1-1235Section 260.1: Bitmap Cache Using LRU Cache
    1-1236Chapter 261: Loading Bitmaps Eectively
    1-1237Section 261.1: Load the Image from Resource from Android Device. Using Intents
    1-1238Chapter 262: Exceptions
    1-1239Section 262.1: ActivityNotFoundException
    1-1240Section 262.2: OutOfMemoryError
    1-1241Section 262.3: Registering own Handler for unexpected exceptions
    1-1242Section 262.4: UncaughtException
    1-1243Section 262.5: NetworkOnMainThreadException
    1-1244Section 262.6: DexException
    1-1245Chapter 263: Logging and using Logcat
    1-1246Section 263.1: Filtering the logcat output
    1-1247Section 263.2: Logging
    1-1248Section 263.3: Using the Logcat
    1-1249Section 263.4: Log with link to source directly from Logcat
    1-1250Section 263.5: Clear logs
    1-1251Section 263.6: Android Studio usage
    1-1252Section 263.7: Generating Logging code
    1-1253Chapter 264: ADB (Android Debug Bridge)
    1-1254Section 264.1: Connect ADB to a device via WiFi
    1-1255Section 264.2: Direct ADB command to specific device in a multi-device setting
    1-1256Section 264.3: Taking a screenshot and video (for kitkat only) from a device display
    1-1257Section 264.4: Pull (push) files from (to) the device
    1-1258Section 264.5: Print verbose list of connected devices
    1-1259Section 264.6: View logcat
    1-1260Section 264.7: View and pull cache files of an app
    1-1261Section 264.8: Clear application data
    1-1262Section 264.9: View an app's internal data (data/data/<sample.package.id>) on a device
    1-1263Section 264.10: Install and run an application
    1-1264Section 264.11: Sending broadcast
    1-1265Section 264.12: Backup
    1-1266Section 264.13: View available devices
    1-1267Section 264.14: Connect device by IP
    1-1268Section 264.15: Install ADB on Linux system
    1-1269Section 264.16: View activity stack
    1-1270Section 264.17: Reboot device
    1-1271Section 264.18: Read device information
    1-1272Section 264.19: List all permissions that require runtime grant from users on Android 6.0
    1-1273Section 264.20: Turn on/o Wifi
    1-1274Section 264.21: Start/stop adb
    1-1275Chapter 265: Localization with resources in Android
    1-1276Section 265.1: Configuration types and qualifier names for each folder under the "res" directory
    1-1277Section 265.2: Adding translation to your Android app
    1-1278Section 265.3: Type of resource directories under the "res" folder
    1-1279Section 265.4: Change locale of android application programmatically
    1-1280Section 265.5: Currency
    1-1281Chapter 266: Convert vietnamese string to english string Android
    1-1282Section 266.1: example:
    1-1283Section 266.2: Chuyển chuỗi Tiếng Việt thành chuỗi không dấu
    1-1284Credits
    1-1285You may also like

    常见问答

    您可以透過手機、平板或是電腦登入 HiSKIO 平台,在【我的學習】>【我的書籍】頁面,選擇想看的電子書。

    猜你喜欢

    销售方案