Android Studio Giraffe Essentials - Java Edition: Developing Android Apps Using Android Studio 2022.3.1 and Java

Оглавление⌄
1. Introduction....40 1.1 Downloading the Code Samples....41 1.2 Feedback....41 1.3 Errata....41 2. Setting up an Android Studio Development Environment....42 2.1 System requirements....42 2.2 Downloading the Android Studio package....42 2.3 Installing Android Studio....43 2.3.1 Installation on Windows....43 2.3.2 Installation on macOS....44 2.3.3 Installation on Linux....45 2.4 The Android Studio setup wizard....45 2.5 Installing additional Android SDK packages....47 2.6 Installing the Android SDK Command-line Tools....50 2.6.1 Windows 8.1....52 2.6.2 Windows 10....53 2.6.3 Windows 11....53 2.6.4 Linux....53 2.6.5 macOS....54 2.7 Android Studio memory management....54 2.8 Updating Android Studio and the SDK....56 2.9 Summary....56 3. Creating an Example Android App in Android Studio....57 3.1 About the Project....57 3.2 Creating a New Android Project....57 3.3 Creating an Activity....58 3.4 Defining the Project and SDK Settings....59 3.5 Enabling the New Android Studio UI....60 3.6 Modifying the Example Application....61 3.7 Modifying the User Interface....62 3.8 Reviewing the Layout and Resource Files....70 3.9 Adding Interaction....74 3.10 Summary....76 4. Creating an Android Virtual Device (AVD) in Android Studio....77 4.1 About Android Virtual Devices....77 4.2 Starting the Emulator....80 4.3 Running the Application in the AVD....81 4.4 Running on Multiple Devices....83 4.5 Stopping a Running Application....83 4.6 Supporting Dark Theme....84 4.7 Running the Emulator in a Separate Window....85 4.8 Enabling the Device Frame....88 4.9 Summary....89 5. Using and Configuring the Android Studio AVD Emulator....90 5.1 The Emulator Environment....90 5.2 Emulator Toolbar Options....91 5.3 Working in Zoom Mode....92 5.4 Resizing the Emulator Window....93 5.5 Extended Control Options....93 5.5.1 Location....93 5.5.2 Displays....94 5.5.3 Cellular....94 5.5.4 Battery....94 5.5.5 Camera....94 5.5.6 Phone....94 5.5.7 Directional Pad....95 5.5.8 Microphone....95 5.5.9 Fingerprint....95 5.5.10 Virtual Sensors....95 5.5.11 Snapshots....95 5.5.12 Record and Playback....96 5.5.13 Google Play....96 5.5.14 Settings....96 5.5.15 Help....96 5.6 Working with Snapshots....96 5.7 Configuring Fingerprint Emulation....98 5.8 The Emulator in Tool Window Mode....99 5.9 Creating a Resizable Emulator....100 5.10 Summary....101 6. A Tour of the Android Studio User Interface....102 6.1 The Welcome Screen....102 6.2 The Menu Bar....103 6.3 The Main Window....104 6.4 The Tool Windows....107 6.5 The Tool Window Menus....110 6.6 Android Studio Keyboard Shortcuts....111 6.7 Switcher and Recent Files Navigation....112 6.8 Changing the Android Studio Theme....113 6.9 Summary....114 7. Testing Android Studio Apps on a Physical Android Device....116 7.1 An Overview of the Android Debug Bridge (ADB)....116 7.2 Enabling USB Debugging ADB on Android Devices....117 7.2.1 macOS ADB Configuration....118 7.2.2 Windows ADB Configuration....119 7.2.3 Linux adb Configuration....120 7.3 Resolving USB Connection Issues....121 7.4 Enabling Wireless Debugging on Android Devices....121 7.5 Testing the adb Connection....124 7.6 Device Mirroring....124 7.7 Summary....124 8. The Basics of the Android Studio Code Editor....126 8.1 The Android Studio Editor....126 8.2 Splitting the Editor Window....130 8.3 Code Completion....131 8.4 Statement Completion....133 8.5 Parameter Information....133 8.6 Parameter Name Hints....134 8.7 Code Generation....134 8.8 Code Folding....136 8.9 Quick Documentation Lookup....137 8.10 Code Reformatting....138 8.11 Finding Sample Code....139 8.12 Live Templates....139 8.13 Summary....140 9. An Overview of the Android Architecture....141 9.1 The Android Software Stack....141 9.2 The Linux Kernel....142 9.3 Android Runtime – ART....143 9.4 Android Libraries....143 9.4.1 C/C++ Libraries....145 9.5 Application Framework....145 9.6 Applications....146 9.7 Summary....146 10. The Anatomy of an Android App....148 10.1 Android Activities....148 10.2 Android Fragments....149 10.3 Android Intents....150 10.4 Broadcast Intents....150 10.5 Broadcast Receivers....150 10.6 Android Services....151 10.7 Content Providers....151 10.8 The Application Manifest....152 10.9 Application Resources....152 10.10 Application Context....152 10.11 Summary....153 11. An Overview of Android View Binding....154 11.1 Find View by Id....154 11.2 View Binding....155 11.3 Converting the AndroidSample project....155 11.4 Enabling View Binding....155 11.5 Using View Binding....156 11.6 Choosing an Option....158 11.7 View Binding in the Book Examples....158 11.8 Migrating a Project to View Binding....158 11.9 Summary....160 12. Understanding Android Application and Activity Lifecycles....161 12.1 Android Applications and Resource Management....161 12.2 Android Process States....162 12.2.1 Foreground Process....162 12.2.2 Visible Process....163 12.2.3 Service Process....163 12.2.4 Background Process....163 12.2.5 Empty Process....163 12.3 Inter-Process Dependencies....164 12.4 The Activity Lifecycle....164 12.5 The Activity Stack....164 12.6 Activity States....165 12.7 Configuration Changes....166 12.8 Handling State Change....167 12.9 Summary....167 13. Handling Android Activity State Changes....169 13.1 New vs. Old Lifecycle Techniques....169 13.2 The Activity and Fragment Classes....170 13.3 Dynamic State vs. Persistent State....172 13.4 The Android Lifecycle Methods....173 13.5 Lifetimes....176 13.6 Foldable Devices and Multi-Resume....177 13.7 Disabling Configuration Change Restarts....178 13.8 Lifecycle Method Limitations....178 13.9 Summary....179 14. Android Activity State Changes by Example....181 14.1 Creating the State Change Example Project....181 14.2 Designing the User Interface....182 14.3 Overriding the Activity Lifecycle Methods....184 14.4 Filtering the Logcat Panel....187 14.5 Running the Application....189 14.6 Experimenting with the Activity....190 14.7 Summary....192 15. Saving and Restoring the State of an Android Activity....193 15.1 Saving Dynamic State....193 15.2 Default Saving of User Interface State....193 15.3 The Bundle Class....195 15.4 Saving the State....196 15.5 Restoring the State....198 15.6 Testing the Application....199 15.7 Summary....199 16. Understanding Android Views, View Groups and Layouts....201 16.1 Designing for Different Android Devices....201 16.2 Views and View Groups....202 16.3 Android Layout Managers....202 16.4 The View Hierarchy....204 16.5 Creating User Interfaces....206 16.6 Summary....206 17. A Guide to the Android Studio Layout Editor Tool....208 17.1 Basic vs. Empty Views Activity Templates....208 17.2 The Android Studio Layout Editor....214 17.3 Design Mode....214 17.4 The Palette....216 17.5 Design Mode and Layout Views....216 17.6 Night Mode....218 17.7 Code Mode....218 17.8 Split Mode....219 17.9 Setting Attributes....220 17.10 Transforms....222 17.11 Tools Visibility Toggles....222 17.12 Converting Views....225 17.13 Displaying Sample Data....226 17.14 Creating a Custom Device Definition....227 17.15 Changing the Current Device....228 17.16 Layout Validation....228 17.17 Summary....229 18. A Guide to the Android ConstraintLayout....231 18.1 How ConstraintLayout Works....231 18.1.1 Constraints....232 18.1.2 Margins....232 18.1.3 Opposing Constraints....233 18.1.4 Constraint Bias....234 18.1.5 Chains....235 18.1.6 Chain Styles....235 18.2 Baseline Alignment....236 18.3 Configuring Widget Dimensions....237 18.4 Guideline Helper....237 18.5 Group Helper....238 18.6 Barrier Helper....238 18.7 Flow Helper....240 18.8 Ratios....242 18.9 ConstraintLayout Advantages....242 18.10 ConstraintLayout Availability....243 18.11 Summary....243 19. A Guide to Using ConstraintLayout in Android Studio....244 19.1 Design and Layout Views....244 19.2 Autoconnect Mode....246 19.3 Inference Mode....246 19.4 Manipulating Constraints Manually....247 19.5 Adding Constraints in the Inspector....249 19.6 Viewing Constraints in the Attributes Window....250 19.7 Deleting Constraints....251 19.8 Adjusting Constraint Bias....252 19.9 Understanding ConstraintLayout Margins....252 19.10 The Importance of Opposing Constraints and Bias....254 19.11 Configuring Widget Dimensions....257 19.12 Design Time Tools Positioning....258 19.13 Adding Guidelines....259 19.14 Adding Barriers....261 19.15 Adding a Group....262 19.16 Working with the Flow Helper....264 19.17 Widget Group Alignment and Distribution....264 19.18 Converting other Layouts to ConstraintLayout....266 19.19 Summary....267 20. Working with ConstraintLayout Chains and Ratios in Android Studio....268 20.1 Creating a Chain....268 20.2 Changing the Chain Style....271 20.3 Spread Inside Chain Style....271 20.4 Packed Chain Style....272 20.5 Packed Chain Style with Bias....272 20.6 Weighted Chain....272 20.7 Working with Ratios....274 20.8 Summary....276 21. An Android Studio Layout Editor ConstraintLayout Tutorial....277 21.1 An Android Studio Layout Editor Tool Example....277 21.2 Preparing the Layout Editor Environment....277 21.3 Adding the Widgets to the User Interface....279 21.4 Adding the Constraints....282 21.5 Testing the Layout....285 21.6 Using the Layout Inspector....285 21.7 Summary....287 22. Manual XML Layout Design in Android Studio....288 22.1 Manually Creating an XML Layout....288 22.2 Manual XML vs. Visual Layout Design....292 22.3 Summary....293 23. Managing Constraints using Constraint Sets....294 23.1 Java Code vs. XML Layout Files....294 23.2 Creating Views....295 23.3 View Attributes....296 23.4 Constraint Sets....296 23.4.1 Establishing Connections....297 23.4.2 Applying Constraints to a Layout....297 23.4.3 Parent Constraint Connections....297 23.4.4 Sizing Constraints....297 23.4.5 Constraint Bias....297 23.4.6 Alignment Constraints....298 23.4.7 Copying and Applying Constraint Sets....298 23.4.8 ConstraintLayout Chains....299 23.4.9 Guidelines....300 23.4.10 Removing Constraints....300 23.4.11 Scaling....300 23.4.12 Rotation....301 23.5 Summary....301 24. An Android ConstraintSet Tutorial....303 24.1 Creating the Example Project in Android Studio....303 24.2 Adding Views to an Activity....303 24.3 Setting View Attributes....305 24.4 Creating View IDs....306 24.5 Configuring the Constraint Set....307 24.6 Adding the EditText View....309 24.7 Converting Density Independent Pixels (dp) to Pixels (px)....311 24.8 Summary....312 25. A Guide to Using Apply Changes in Android Studio....313 25.1 Introducing Apply Changes....313 25.2 Understanding Apply Changes Options....314 25.3 Using Apply Changes....314 25.4 Configuring Apply Changes Fallback Settings....316 25.5 An Apply Changes Tutorial....316 25.6 Using Apply Code Changes....316 25.7 Using Apply Changes and Restart Activity....318 25.8 Using Run App....318 25.9 Summary....318 26. An Overview and Example of Android Event Handling....320 26.1 Understanding Android Events....320 26.2 Using the android:onClick Resource....321 26.3 Event Listeners and Callback Methods....322 26.4 An Event Handling Example....323 26.5 Designing the User Interface....323 26.6 The Event Listener and Callback Method....324 26.7 Consuming Events....327 26.8 Summary....329 27. Android Touch and Multi-touch Event Handling....330 27.1 Intercepting Touch Events....330 27.2 The MotionEvent Object....331 27.3 Understanding Touch Actions....331 27.4 Handling Multiple Touches....332 27.5 An Example Multi-Touch Application....333 27.6 Designing the Activity User Interface....333 27.7 Implementing the Touch Event Listener....334 27.8 Running the Example Application....339 27.9 Summary....339 28. Detecting Common Gestures Using the Android Gesture Detector Class....341 28.1 Implementing Common Gesture Detection....341 28.2 Creating an Example Gesture Detection Project....343 28.3 Implementing the Listener Class....343 28.4 Creating the GestureDetectorCompat Instance....346 28.5 Implementing the onTouchEvent() Method....347 28.6 Testing the Application....348 28.7 Summary....349 29. Implementing Custom Gesture and Pinch Recognition on Android....350 29.1 The Android Gesture Builder Application....350 29.2 The GestureOverlayView Class....350 29.3 Detecting Gestures....351 29.4 Identifying Specific Gestures....351 29.5 Installing and Running the Gesture Builder Application....351 29.6 Creating a Gestures File....352 29.7 Creating the Example Project....352 29.8 Extracting the Gestures File from the SD Card....353 29.9 Adding the Gestures File to the Project....354 29.10 Designing the User Interface....354 29.11 Loading the Gestures File....355 29.12 Registering the Event Listener....356 29.13 Implementing the onGesturePerformed Method....357 29.14 Testing the Application....358 29.15 Configuring the GestureOverlayView....359 29.16 Intercepting Gestures....359 29.17 Detecting Pinch Gestures....360 29.18 A Pinch Gesture Example Project....360 29.19 Summary....364 30. An Introduction to Android Fragments....365 30.1 What is a Fragment?....365 30.2 Creating a Fragment....365 30.3 Adding a Fragment to an Activity using the Layout XML File....367 30.4 Adding and Managing Fragments in Code....369 30.5 Handling Fragment Events....371 30.6 Implementing Fragment Communication....372 30.7 Summary....374 31. Using Fragments in Android Studio - An Example....376 31.1 About the Example Fragment Application....376 31.2 Creating the Example Project....377 31.3 Creating the First Fragment Layout....377 31.4 Migrating a Fragment to View Binding....379 31.5 Adding the Second Fragment....380 31.6 Adding the Fragments to the Activity....382 31.7 Making the Toolbar Fragment Talk to the Activity....384 31.8 Making the Activity Talk to the Text Fragment....388 31.9 Testing the Application....389 31.10 Summary....390 32. Modern Android App Architecture with Jetpack....391 32.1 What is Android Jetpack?....391 32.2 The “Old” Architecture....392 32.3 Modern Android Architecture....392 32.4 The ViewModel Component....392 32.5 The LiveData Component....393 32.6 ViewModel Saved State....395 32.7 LiveData and Data Binding....395 32.8 Android Lifecycles....396 32.9 Repository Modules....397 32.10 Summary....398 33. An Android ViewModel Tutorial....400 33.1 About the Project....400 33.2 Creating the ViewModel Example Project....400 33.3 Removing Unwanted Project Elements....401 33.4 Designing the Fragment Layout....402 33.5 Implementing the View Model....404 33.6 Associating the Fragment with the View Model....405 33.7 Modifying the Fragment....406 33.8 Accessing the ViewModel Data....407 33.9 Testing the Project....408 33.10 Summary....409 34. An Android Jetpack LiveData Tutorial....410 34.1 LiveData - A Recap....410 34.2 Adding LiveData to the ViewModel....410 34.3 Implementing the Observer....413 34.4 Summary....416 35. An Overview of Android Jetpack Data Binding....417 35.1 An Overview of Data Binding....417 35.2 The Key Components of Data Binding....418 35.2.1 The Project Build Configuration....418 35.2.2 The Data Binding Layout File....419 35.2.3 The Layout File Data Element....420 35.2.4 The Binding Classes....421 35.2.5 Data Binding Variable Configuration....422 35.2.6 Binding Expressions (One-Way)....423 35.2.7 Binding Expressions (Two-Way)....426 35.2.8 Event and Listener Bindings....426 35.3 Summary....427 36. An Android Jetpack Data Binding Tutorial....428 36.1 Removing the Redundant Code....428 36.2 Enabling Data Binding....430 36.3 Adding the Layout Element....431 36.4 Adding the Data Element to Layout File....432 36.5 Working with the Binding Class....433 36.6 Assigning the ViewModel Instance to the Data Binding Variable....435 36.7 Adding Binding Expressions....435 36.8 Adding the Conversion Method....437 36.9 Adding a Listener Binding....438 36.10 Testing the App....438 36.11 Summary....438 37. An Android ViewModel Saved State Tutorial....440 37.1 Understanding ViewModel State Saving....440 37.2 Implementing ViewModel State Saving....441 37.3 Saving and Restoring State....443 37.4 Adding Saved State Support to the ViewModelDemo Project....444 37.5 Summary....446 38. Working with Android Lifecycle-Aware Components....448 38.1 Lifecycle Awareness....448 38.2 Lifecycle Owners....449 38.3 Lifecycle Observers....450 38.4 Lifecycle States and Events....451 38.5 Summary....452 39. An Android Jetpack Lifecycle Awareness Tutorial....453 39.1 Creating the Example Lifecycle Project....453 39.2 Creating a Lifecycle Observer....453 39.3 Adding the Observer....455 39.4 Testing the Observer....456 39.5 Creating a Lifecycle Owner....457 39.6 Testing the Custom Lifecycle Owner....460 39.7 Summary....460 40. An Overview of the Navigation Architecture Component....461 40.1 Understanding Navigation....461 40.2 Declaring a Navigation Host....463 40.3 The Navigation Graph....465 40.4 Accessing the Navigation Controller....467 40.5 Triggering a Navigation Action....468 40.6 Passing Arguments....468 40.7 Summary....469 41. An Android Jetpack Navigation Component Tutorial....471 41.1 Creating the NavigationDemo Project....471 41.2 Adding Navigation to the Build Configuration....471 41.3 Creating the Navigation Graph Resource File....472 41.4 Declaring a Navigation Host....474 41.5 Adding Navigation Destinations....476 41.6 Designing the Destination Fragment Layouts....478 41.7 Adding an Action to the Navigation Graph....480 41.8 Implement the OnFragmentInteractionListener....482 41.9 Adding View Binding Support to the Destination Fragments....483 41.10 Triggering the Action....484 41.11 Passing Data Using Safeargs....486 41.12 Summary....490 42. An Introduction to MotionLayout....491 42.1 An Overview of MotionLayout....491 42.2 MotionLayout....492 42.3 MotionScene....492 42.4 Configuring ConstraintSets....494 42.5 Custom Attributes....495 42.6 Triggering an Animation....497 42.7 Arc Motion....498 42.8 Keyframes....499 42.8.1 Attribute Keyframes....500 42.8.2 Position Keyframes....500 42.9 Time Linearity....504 42.10 KeyTrigger....505 42.11 Cycle and Time Cycle Keyframes....506 42.12 Starting an Animation from Code....506 43. An Android MotionLayout Editor Tutorial....508 43.1 Creating the MotionLayoutDemo Project....508 43.2 ConstraintLayout to MotionLayout Conversion....508 43.3 Configuring Start and End Constraints....511 43.4 Previewing the MotionLayout Animation....514 43.5 Adding an OnClick Gesture....515 43.6 Adding an Attribute Keyframe to the Transition....517 43.7 Adding a CustomAttribute to a Transition....520 43.8 Adding Position Keyframes....522 43.9 Summary....525 44. A MotionLayout KeyCycle Tutorial....526 44.1 An Overview of Cycle Keyframes....526 44.2 Using the Cycle Editor....530 44.3 Creating the KeyCycleDemo Project....531 44.4 Configuring the Start and End Constraints....532 44.5 Creating the Cycles....533 44.6 Previewing the Animation....536 44.7 Adding the KeyFrameSet to the MotionScene....536 44.8 Summary....539 45. Working with the Floating Action Button and Snackbar....540 45.1 The Material Design....540 45.2 The Design Library....541 45.3 The Floating Action Button (FAB)....541 45.4 The Snackbar....542 45.5 Creating the Example Project....543 45.6 Reviewing the Project....543 45.7 Removing Navigation Features....545 45.8 Changing the Floating Action Button....546 45.9 Adding an Action to the Snackbar....547 45.10 Summary....549 46. Creating a Tabbed Interface using the TabLayout Component....550 46.1 An Introduction to the ViewPager2....550 46.2 An Overview of the TabLayout Component....550 46.3 Creating the TabLayoutDemo Project....551 46.4 Creating the First Fragment....553 46.5 Duplicating the Fragments....554 46.6 Adding the TabLayout and ViewPager2....556 46.7 Creating the Pager Adapter....558 46.8 Performing the Initialization Tasks....559 46.9 Testing the Application....561 46.10 Customizing the TabLayout....562 46.11 Summary....564 47. Working with the RecyclerView and CardView Widgets....565 47.1 An Overview of the RecyclerView....565 47.2 An Overview of the CardView....568 47.3 Summary....570 48. An Android RecyclerView and CardView Tutorial....571 48.1 Creating the CardDemo Project....571 48.2 Modifying the Basic Views Activity Project....571 48.3 Designing the CardView Layout....572 48.4 Adding the RecyclerView....574 48.5 Adding the Image Files....575 48.6 Creating the RecyclerView Adapter....575 48.7 Initializing the RecyclerView Component....578 48.8 Testing the Application....580 48.9 Responding to Card Selections....581 48.10 Summary....583 49. A Layout Editor Sample Data Tutorial....585 49.1 Adding Sample Data to a Project....585 49.2 Using Custom Sample Data....590 49.3 Summary....594 50. Working with the AppBar and Collapsing Toolbar Layouts....595 50.1 The Anatomy of an AppBar....595 50.2 The Example Project....596 50.3 Coordinating the RecyclerView and Toolbar....597 50.4 Introducing the Collapsing Toolbar Layout....599 50.5 Changing the Title and Scrim Color....603 50.6 Summary....605 51. An Android Studio Primary/Detail Flow Tutorial....606 51.1 The Primary/Detail Flow....606 51.2 Creating a Primary/Detail Flow Activity....607 51.3 Adding the Primary/Detail Flow Activity....608 51.4 Modifying the Primary/Detail Flow Template....609 51.5 Changing the Content Model....609 51.6 Changing the Detail Pane....611 51.7 Modifying the ItemDetailFragment Class....613 51.8 Modifying the ItemListFragment Class....614 51.9 Adding Manifest Permissions....615 51.10 Running the Application....616 51.11 Summary....617 52. An Overview of Android Services....618 52.1 Intent Service....618 52.2 Bound Service....619 52.3 The Anatomy of a Service....620 52.4 Controlling Destroyed Service Restart Options....621 52.5 Declaring a Service in the Manifest File....621 52.6 Starting a Service Running on System Startup....623 52.7 Summary....623 53. An Overview of Android Intents....625 53.1 An Overview of Intents....625 53.2 Explicit Intents....626 53.3 Returning Data from an Activity....628 53.4 Implicit Intents....629 53.5 Using Intent Filters....630 53.6 Automatic Link Verification....631 53.7 Manually Enabling Links....635 53.8 Checking Intent Availability....636 53.9 Summary....637 54. Android Explicit Intents – A Worked Example....639 54.1 Creating the Explicit Intent Example Application....639 54.2 Designing the User Interface Layout for MainActivity....639 54.3 Creating the Second Activity Class....641 54.4 Designing the User Interface Layout for SecondActivity....642 54.5 Reviewing the Application Manifest File....642 54.6 Creating the Intent....644 54.7 Extracting Intent Data....645 54.8 Launching SecondActivity as a Sub-Activity....646 54.9 Returning Data from a Sub-Activity....648 54.10 Testing the Application....649 54.11 Summary....649 55. Android Implicit Intents – A Worked Example....650 55.1 Creating the Android Studio Implicit Intent Example Project....650 55.2 Designing the User Interface....650 55.3 Creating the Implicit Intent....651 55.4 Adding a Second Matching Activity....653 55.5 Adding the Web View to the UI....653 55.6 Obtaining the Intent URL....654 55.7 Modifying the MyWebView Project Manifest File....656 55.8 Installing the MyWebView Package on a Device....658 55.9 Testing the Application....659 55.10 Manually Enabling the Link....659 55.11 Automatic Link Verification....662 55.12 Summary....664 56. Android Broadcast Intents and Broadcast Receivers....665 56.1 An Overview of Broadcast Intents....665 56.2 An Overview of Broadcast Receivers....666 56.3 Obtaining Results from a Broadcast....669 56.4 Sticky Broadcast Intents....669 56.5 The Broadcast Intent Example....670 56.6 Creating the Example Application....670 56.7 Creating and Sending the Broadcast Intent....670 56.8 Creating the Broadcast Receiver....671 56.9 Registering the Broadcast Receiver....673 56.10 Testing the Broadcast Example....674 56.11 Listening for System Broadcasts....675 56.12 Summary....676 57. Android Local Bound Services – A Worked Example....677 57.1 Understanding Bound Services....677 57.2 Bound Service Interaction Options....677 57.3 A Local Bound Service Example....678 57.4 Adding a Bound Service to the Project....678 57.5 Implementing the Binder....679 57.6 Binding the Client to the Service....683 57.7 Completing the Example....685 57.8 Testing the Application....687 57.9 Summary....687 58. Android Remote Bound Services – A Worked Example....688 58.1 Client to Remote Service Communication....688 58.2 Creating the Example Application....689 58.3 Designing the User Interface....689 58.4 Implementing the Remote Bound Service....689 58.5 Configuring a Remote Service in the Manifest File....691 58.6 Launching and Binding to the Remote Service....693 58.7 Sending a Message to the Remote Service....695 58.8 Summary....696 59. A Basic Overview of Java Threads, Handlers and Executors....697 59.1 The Application Main Thread....697 59.2 Thread Handlers....697 59.3 A Threading Example....698 59.4 Building the App....698 59.5 Creating a New Thread....700 59.6 Implementing a Thread Handler....702 59.7 Passing a Message to the Handler....704 59.8 Java Executor Concurrency....705 59.9 Working with Runnable Tasks....706 59.10 Shutting down an Executor Service....708 59.11 Working with Callable Tasks and Futures....708 59.12 Handling a Future Result....710 59.13 Scheduling Tasks....712 59.14 Summary....713 60. Making Runtime Permission Requests in Android....714 60.1 Understanding Normal and Dangerous Permissions....714 60.2 Creating the Permissions Example Project....717 60.3 Checking for a Permission....717 60.4 Requesting Permission at Runtime....720 60.5 Providing a Rationale for the Permission Request....722 60.6 Testing the Permissions App....724 60.7 Summary....725 61. An Android Notifications Tutorial....726 61.1 An Overview of Notifications....726 61.2 Creating the NotifyDemo Project....728 61.3 Designing the User Interface....728 61.4 Creating the Second Activity....729 61.5 Creating a Notification Channel....730 61.6 Requesting Notification Permission....732 61.7 Creating and Issuing a Notification....736 61.8 Launching an Activity from a Notification....739 61.9 Adding Actions to a Notification....741 61.10 Bundled Notifications....743 61.11 Summary....745 62. An Android Direct Reply Notification Tutorial....747 62.1 Creating the DirectReply Project....747 62.2 Designing the User Interface....747 62.3 Requesting Notification Permission....748 62.4 Creating the Notification Channel....750 62.5 Building the RemoteInput Object....752 62.6 Creating the PendingIntent....754 62.7 Creating the Reply Action....754 62.8 Receiving Direct Reply Input....758 62.9 Updating the Notification....759 62.10 Summary....761 63. Foldable Devices and Multi-Window Support....762 63.1 Foldables and Multi-Window Support....762 63.2 Using a Foldable Emulator....763 63.3 Entering Multi-Window Mode....764 63.4 Enabling and using Freeform Support....765 63.5 Checking for Freeform Support....766 63.6 Enabling Multi-Window Support in an App....767 63.7 Specifying Multi-Window Attributes....767 63.8 Detecting Multi-Window Mode in an Activity....769 63.9 Receiving Multi-Window Notifications....769 63.10 Launching an Activity in Multi-Window Mode....770 63.11 Configuring Freeform Activity Size and Position....771 63.12 Summary....772 64. An Overview of Android SQLite Databases....774 64.1 Understanding Database Tables....774 64.2 Introducing Database Schema....775 64.3 Columns and Data Types....775 64.4 Database Rows....775 64.5 Introducing Primary Keys....776 64.6 What is SQLite?....776 64.7 Structured Query Language (SQL)....777 64.8 Trying SQLite on an Android Virtual Device (AVD)....778 64.9 The Android Room Persistence Library....781 64.10 Summary....781 65. The Android Room Persistence Library....783 65.1 Revisiting Modern App Architecture....783 65.2 Key Elements of Room Database Persistence....784 65.2.1 Repository....784 65.2.2 Room Database....784 65.2.3 Data Access Object (DAO)....784 65.2.4 Entities....784 65.2.5 SQLite Database....785 65.3 Understanding Entities....786 65.4 Data Access Objects....790 65.5 The Room Database....792 65.6 The Repository....793 65.7 In-Memory Databases....794 65.8 Database Inspector....795 65.9 Summary....796 66. An Android TableLayout and TableRow Tutorial....797 66.1 The TableLayout and TableRow Layout Views....797 66.2 Creating the Room Database Project....799 66.3 Converting to a LinearLayout....799 66.4 Adding the TableLayout to the User Interface....800 66.5 Configuring the TableRows....801 66.6 Adding the Button Bar to the Layout....802 66.7 Adding the RecyclerView....803 66.8 Adjusting the Layout Margins....804 66.9 Summary....805 67. An Android Room Database and Repository Tutorial....806 67.1 About the RoomDemo Project....806 67.2 Modifying the Build Configuration....806 67.3 Building the Entity....807 67.4 Creating the Data Access Object....810 67.5 Adding the Room Database....811 67.6 Adding the Repository....812 67.7 Adding the ViewModel....816 67.8 Creating the Product Item Layout....818 67.9 Adding the RecyclerView Adapter....819 67.10 Preparing the Main Activity....821 67.11 Adding the Button Listeners....822 67.12 Adding LiveData Observers....823 67.13 Initializing the RecyclerView....825 67.14 Testing the RoomDemo App....825 67.15 Using the Database Inspector....826 67.16 Summary....827 68. Accessing Cloud Storage using the Android Storage Access Framework....828 68.1 The Storage Access Framework....828 68.2 Working with the Storage Access Framework....829 68.3 Filtering Picker File Listings....830 68.4 Handling Intent Results....831 68.5 Reading the Content of a File....832 68.6 Writing Content to a File....833 68.7 Deleting a File....834 68.8 Gaining Persistent Access to a File....834 68.9 Summary....835 69. An Android Storage Access Framework Example....837 69.1 About the Storage Access Framework Example....837 69.2 Creating the Storage Access Framework Example....837 69.3 Designing the User Interface....838 69.4 Adding the Activity Launchers....839 69.5 Creating a New Storage File....841 69.6 Saving to a Storage File....842 69.7 Opening and Reading a Storage File....844 69.8 Testing the Storage Access Application....846 69.9 Summary....848 70. Video Playback on Android using the VideoView and MediaController Classes....849 70.1 Introducing the Android VideoView Class....849 70.2 Introducing the Android MediaController Class....850 70.3 Creating the Video Playback Example....851 70.4 Designing the VideoPlayer Layout....852 70.5 Downloading the Video File....852 70.6 Configuring the VideoView....853 70.7 Adding the MediaController to the Video View....855 70.8 Setting up the onPreparedListener....856 70.9 Summary....857 71. Android Picture-in-Picture Mode....858 71.1 Picture-in-Picture Features....858 71.2 Enabling Picture-in-Picture Mode....859 71.3 Configuring Picture-in-Picture Parameters....860 71.4 Entering Picture-in-Picture Mode....861 71.5 Detecting Picture-in-Picture Mode Changes....861 71.6 Adding Picture-in-Picture Actions....862 71.7 Summary....863 72. An Android Picture-in-Picture Tutorial....865 72.1 Adding Picture-in-Picture Support to the Manifest....865 72.2 Adding a Picture-in-Picture Button....865 72.3 Entering Picture-in-Picture Mode....866 72.4 Detecting Picture-in-Picture Mode Changes....867 72.5 Adding a Broadcast Receiver....868 72.6 Adding the PiP Action....870 72.7 Testing the Picture-in-Picture Action....874 72.8 Summary....875 73. Android Audio Recording and Playback using MediaPlayer and MediaRecorder....876 73.1 Playing Audio....876 73.2 Recording Audio and Video using the MediaRecorder Class....877 73.3 About the Example Project....879 73.4 Creating the AudioApp Project....880 73.5 Designing the User Interface....880 73.6 Checking for Microphone Availability....881 73.7 Initializing the Activity....882 73.8 Implementing the recordAudio() Method....884 73.9 Implementing the stopAudio() Method....884 73.10 Implementing the playAudio() method....885 73.11 Configuring and Requesting Permissions....886 73.12 Testing the Application....889 73.13 Summary....889 74. Working with the Google Maps Android API in Android Studio....890 74.1 The Elements of the Google Maps Android API....890 74.2 Creating the Google Maps Project....892 74.3 Creating a Google Cloud Billing Account....892 74.4 Creating a New Google Cloud Project....893 74.5 Enabling the Google Maps SDK....894 74.6 Generating a Google Maps API Key....895 74.7 Adding the API Key to the Android Studio Project....896 74.8 Testing the Application....897 74.9 Understanding Geocoding and Reverse Geocoding....897 74.10 Adding a Map to an Application....900 74.11 Requesting Current Location Permission....900 74.12 Displaying the User’s Current Location....903 74.13 Changing the Map Type....904 74.14 Displaying Map Controls to the User....906 74.15 Handling Map Gesture Interaction....907 74.15.1 Map Zooming Gestures....907 74.15.2 Map Scrolling/Panning Gestures....908 74.15.3 Map Tilt Gestures....908 74.15.4 Map Rotation Gestures....908 74.16 Creating Map Markers....909 74.17 Controlling the Map Camera....910 74.18 Summary....912 75. Printing with the Android Printing Framework....913 75.1 The Android Printing Architecture....913 75.2 The Print Service Plugins....914 75.3 Google Cloud Print....914 75.4 Printing to Google Drive....915 75.5 Save as PDF....915 75.6 Printing from Android Devices....916 75.7 Options for Building Print Support into Android Apps....917 75.7.1 Image Printing....917 75.7.2 Creating and Printing HTML Content....919 75.7.3 Printing a Web Page....921 75.7.4 Printing a Custom Document....922 75.8 Summary....923 76. An Android HTML and Web Content Printing Example....924 76.1 Creating the HTML Printing Example Application....924 76.2 Printing Dynamic HTML Content....924 76.3 Creating the Web Page Printing Example....928 76.4 Removing the Floating Action Button....929 76.5 Removing Navigation Features....929 76.6 Designing the User Interface Layout....931 76.7 Accessing the WebView from the Main Activity....932 76.8 Loading the Web Page into the WebView....933 76.9 Adding the Print Menu Option....934 76.10 Summary....937 77. A Guide to Android Custom Document Printing....939 77.1 An Overview of Android Custom Document Printing....939 77.1.1 Custom Print Adapters....940 77.2 Preparing the Custom Document Printing Project....941 77.3 Creating the Custom Print Adapter....942 77.4 Implementing the onLayout() Callback Method....944 77.5 Implementing the onWrite() Callback Method....948 77.6 Checking a Page is in Range....952 77.7 Drawing the Content on the Page Canvas....953 77.8 Starting the Print Job....956 77.9 Testing the Application....957 77.10 Summary....958 78. An Introduction to Android App Links....959 78.1 An Overview of Android App Links....959 78.2 App Link Intent Filters....960 78.3 Handling App Link Intents....961 78.4 Associating the App with a Website....962 78.5 Summary....962 79. An Android Studio App Links Tutorial....963 79.1 About the Example App....963 79.2 The Database Schema....963 79.3 Loading and Running the Project....964 79.4 Adding the URL Mapping....966 79.5 Adding the Intent Filter....969 79.6 Adding Intent Handling Code....970 79.7 Testing the App....974 79.8 Creating the Digital Asset Links File....974 79.9 Testing the App Link....975 79.10 Summary....976 80. An Android Biometric Authentication Tutorial....977 80.1 An Overview of Biometric Authentication....977 80.2 Creating the Biometric Authentication Project....978 80.3 Configuring Device Fingerprint Authentication....978 80.4 Adding the Biometric Permission to the Manifest File....979 80.5 Designing the User Interface....980 80.6 Adding a Toast Convenience Method....980 80.7 Checking the Security Settings....981 80.8 Configuring the Authentication Callbacks....983 80.9 Adding the CancellationSignal....984 80.10 Starting the Biometric Prompt....985 80.11 Testing the Project....986 80.12 Summary....988 81. Creating, Testing, and Uploading an Android App Bundle....989 81.1 The Release Preparation Process....989 81.2 Android App Bundles....989 81.3 Register for a Google Play Developer Console Account....991 81.4 Configuring the App in the Console....992 81.5 Enabling Google Play App Signing....993 81.6 Creating a Keystore File....994 81.7 Creating the Android App Bundle....996 81.8 Generating Test APK Files....997 81.9 Uploading the App Bundle to the Google Play Developer Console....999 81.10 Exploring the App Bundle....1000 81.11 Managing Testers....1002 81.12 Rolling the App Out for Testing....1002 81.13 Uploading New App Bundle Revisions....1003 81.14 Analyzing the App Bundle File....1004 81.15 Summary....1005 82. An Overview of Android In-App Billing....1006 82.1 Preparing a Project for In-App Purchasing....1006 82.2 Creating In-App Products and Subscriptions....1007 82.3 Billing Client Initialization....1008 82.4 Connecting to the Google Play Billing Library....1009 82.5 Querying Available Products....1010 82.6 Starting the Purchase Process....1011 82.7 Completing the Purchase....1012 82.8 Querying Previous Purchases....1014 82.9 Summary....1015 83. An Android In-App Purchasing Tutorial....1016 83.1 About the In-App Purchasing Example Project....1016 83.2 Creating the InAppPurchase Project....1016 83.3 Adding Libraries to the Project....1017 83.4 Designing the User Interface....1017 83.5 Adding the App to the Google Play Store....1018 83.6 Creating an In-App Product....1019 83.7 Enabling License Testers....1020 83.8 Initializing the Billing Client....1020 83.9 Querying the Product....1023 83.10 Launching the Purchase Flow....1024 83.11 Handling Purchase Updates....1025 83.12 Consuming the Product....1026 83.13 Restoring a Previous Purchase....1027 83.14 Testing the App....1029 83.15 Troubleshooting....1031 83.16 Summary....1032 84. Working with Material Design 3 Theming....1033 84.1 Material Design 2 vs. Material Design 3....1033 84.2 Understanding Material Design Theming....1033 84.3 Material Design 3 Theming....1034 84.4 Building a Custom Theme....1037 84.5 Summary....1038 85. A Material Design 3 Theming and Dynamic Color Tutorial....1039 85.1 Creating the ThemeDemo Project....1039 85.2....1039 85.3 Designing the User Interface....1039 85.4 Building a New Theme....1041 85.5 Adding the Theme to the Project....1042 85.6 Enabling Dynamic Color Support....1044 85.7 Previewing Dynamic Colors....1046 85.8 Summary....1047 86. An Overview of Gradle in Android Studio....1048 86.1 An Overview of Gradle....1048 86.2 Gradle and Android Studio....1049 86.2.1 Sensible Defaults....1049 86.2.2 Dependencies....1049 86.2.3 Build Variants....1050 86.2.4 Manifest Entries....1050 86.2.5 APK Signing....1050 86.2.6 ProGuard Support....1051 86.3 The Property and Settings Gradle Build File....1051 86.4 The Top-level Gradle Build File....1052 86.5 Module Level Gradle Build Files....1053 86.6 Configuring Signing Settings in the Build File....1056 86.7 Running Gradle Tasks from the Command Line....1058 86.8 Summary....1059 Index....1060
Описание
В этом материале разберём тему: android.
Fully updated for Android Studio Giraffe and the new UI, this book aims to teach you how to develop Android-based applications using the Java programming language.
This book begins with the basics and outlines how to set up an Android development and testing environment, followed by an overview of areas such as tool windows, the code editor, and the Layout Editor tool. An introduction to the architecture of Android is followed by an in-depth look at the design of Android applications and user interfaces using the Android Studio environment.
Chapters also cover the Android Architecture Components, including view models, lifecycle management, Room database access, the Database Inspector, app navigation, live data, and data binding.
More advanced topics such as intents are also covered, as are touch screen handling, gesture recognition, and the recording and playback of audio. This book edition also covers printing, transitions, and foldable device support.
The concepts of material design are also covered in detail, including the use of floating action buttons, Snackbars, tabbed interfaces, card views, navigation drawers, and collapsing toolbars.
Other key features of Android Studio and Android are also covered in detail, including the Layout Editor, the ConstraintLayout and ConstraintSet classes, MotionLayout Editor, view binding, constraint chains, barriers, and direct reply notifications.
Chapters also cover advanced features of Android Studio, such as App Links, Gradle build configuration, in-app billing, and submitting apps to the Google Play Developer Console.
Assuming you already have some Java programming experience, are ready to download Android Studio and the Android SDK, have access to a Windows, Mac, or Linux system, and have ideas for some apps to develop, you are ready to get started.
Если материал оказался полезен — сохраните страницу.
Поделиться
Частые вопросы
Можно ли скачать «Android Studio Giraffe Essentials - Java Edition: Developing Android Apps Using Android Studio 2022.3.1 and Java» бесплатно?
Да, «Android Studio Giraffe Essentials - Java Edition: Developing Android Apps Using Android Studio 2022.3.1 and Java» доступна для бесплатного скачивания на нашем сайте в формате PDF. Ссылка на файл находится на этой странице.
В каком формате и какого размера файл?
Книга предоставляется в формате PDF, размер файла 10,3 МБ.
Кто автор и когда вышла книга?
автор — Smyth Neil, издательство Payload Media, Inc., год выпуска 2023, 1097 страниц.
О чём книга «Android Studio Giraffe Essentials - Java Edition: Developing Android Apps Using Android Studio 2022.3.1 and Java»?
Fully updated for Android Studio Giraffe and the new UI, this book aims to teach you how to develop Android-based applications using the Java programming language.This book begins with the basics and outlines how to set up an Android develo