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

Android Studio Giraffe Essentials - Java Edition: Developing Android Apps Using Android Studio 2022.3.1 and Java
Автор: Smyth Neil
Дата выхода: 2023
Издательство: Payload Media, Inc.
Количество страниц: 1097
Размер файла: 10.3 MB
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

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

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.


Похожее:

Список отзывов:

Нет отзывов к книге.