Android Studio 3.3 Development Essentials - Android 9 Edition - eBookFrenzy.com
←
→
Page content transcription
If your browser does not render page correctly, please read the page content below
Android Studio 3.3 Development Essentials – Android 9 Edition © 2019 Neil Smyth / Payload Media, Inc. All Rights Reserved. This book is provided for personal use only. Unauthorized use, reproduction and/or distribution strictly prohibited. All rights reserved. The content of this book is provided for informational purposes only. Neither the publisher nor the author offers any warranties or representation, express or implied, with regard to the accuracy of information contained in this book, nor do they accept any liability for any loss or damage arising from any errors or omissions. This book contains trademarked terms that are used solely for editorial purposes and to the benefit of the respective trademark owner. The terms used within this book are not intended as infringement of any trademarks. Rev: 1.0
Contents Table of Contents 1. Introduction................................................................................................................................................ 1 1.1 Downloading the Code Samples........................................................................................................ 1 1.2 Feedback................................................................................................................................................ 2 1.3 Errata..................................................................................................................................................... 2 2. Setting up an Android Studio Development Environment........................................................................ 3 2.1 System Requirements........................................................................................................................... 3 2.2 Downloading the Android Studio Package...................................................................................... 3 2.3 Installing Android Studio.................................................................................................................... 3 2.3.1 Installation on Windows.............................................................................................................. 4 2.3.2 Installation on macOS.................................................................................................................. 4 2.3.3 Installation on Linux..................................................................................................................... 5 2.4 The Android Studio Setup Wizard..................................................................................................... 5 2.5 Installing Additional Android SDK Packages.................................................................................. 6 2.6 Making the Android SDK Tools Command-line Accessible.......................................................... 8 2.6.1 Windows 7..................................................................................................................................... 8 2.6.2 Windows 8.1.................................................................................................................................. 9 2.6.3 Windows 10................................................................................................................................. 10 2.6.4 Linux............................................................................................................................................. 10 2.6.5 macOS........................................................................................................................................... 10 2.7 Updating Android Studio and the SDK.......................................................................................... 10 2.8 Summary............................................................................................................................................. 10 3. Creating an Example Android App in Android Studio............................................................................ 11 3.1 About the Project............................................................................................................................... 11 3.2 Creating a New Android Project...................................................................................................... 11 3.3 Creating an Activity.......................................................................................................................... 12 3.4 Defining the Project and SDK Settings........................................................................................... 12 3.5 Modifying the Example Application................................................................................................ 13 3.6 Reviewing the Layout and Resource Files....................................................................................... 20 3.7 Adding Interaction............................................................................................................................. 22 3.8 Summary............................................................................................................................................. 24 4. Creating an Android Virtual Device (AVD) in Android Studio.............................................................. 25 4.1 About Android Virtual Devices....................................................................................................... 25 4.2 Creating a New AVD......................................................................................................................... 26 4.3 Starting the Emulator......................................................................................................................... 27 4.4 Running the Application in the AVD.............................................................................................. 27 4.5 Run/Debug Configurations.............................................................................................................. 29 4.6 Stopping a Running Application...................................................................................................... 30 4.7 AVD Command-line Creation......................................................................................................... 30 4.8 Android Virtual Device Configuration Files.................................................................................. 32 4.9 Moving and Renaming an Android Virtual Device...................................................................... 32 4.10 Summary........................................................................................................................................... 32 i
Table of Contents 5. Using and Configuring the Android Studio AVD Emulator ................................................................... 33 5.1 The Emulator Environment.............................................................................................................. 33 5.2 The Emulator Toolbar Options......................................................................................................... 33 5.3 Working in Zoom Mode................................................................................................................... 35 5.4 Resizing the Emulator Window....................................................................................................... 35 5.5 Extended Control Options................................................................................................................ 35 5.5.1 Location........................................................................................................................................ 35 5.5.2 Cellular......................................................................................................................................... 36 5.5.3 Camera.......................................................................................................................................... 36 5.5.4 Battery........................................................................................................................................... 36 5.5.5 Phone............................................................................................................................................ 36 5.5.6 Directional Pad............................................................................................................................ 36 5.5.7 Microphone.................................................................................................................................. 36 5.5.8 Fingerprint................................................................................................................................... 36 5.5.9 Virtual Sensors............................................................................................................................. 36 5.5.10 Snapshots.................................................................................................................................... 36 5.5.11 Screen Record............................................................................................................................ 36 5.5.12 Google Play................................................................................................................................ 37 5.5.13 Settings....................................................................................................................................... 37 5.5.14 Help............................................................................................................................................. 37 5.6 Working with Snapshots.................................................................................................................... 37 5.7 Drag and Drop Support..................................................................................................................... 38 5.8 Configuring Fingerprint Emulation................................................................................................ 39 5.9 Summary............................................................................................................................................. 40 6. A Tour of the Android Studio User Interface........................................................................................... 41 6.1 The Welcome Screen.......................................................................................................................... 41 6.2 The Main Window............................................................................................................................. 42 6.3 The Tool Windows............................................................................................................................. 43 6.4 Android Studio Keyboard Shortcuts............................................................................................... 46 6.5 Switcher and Recent Files Navigation............................................................................................. 46 6.6 Changing the Android Studio Theme............................................................................................. 47 6.7 Summary............................................................................................................................................. 47 7. Testing Android Studio Apps on a Physical Android Device................................................................... 49 7.1 An Overview of the Android Debug Bridge (ADB)...................................................................... 49 7.2 Enabling ADB on Android based Devices..................................................................................... 49 7.2.1 macOS ADB Configuration....................................................................................................... 50 7.2.2 Windows ADB Configuration................................................................................................... 51 7.2.3 Linux adb Configuration............................................................................................................ 52 7.3 Testing the adb Connection.............................................................................................................. 52 7.4 Summary............................................................................................................................................. 53 8. The Basics of the Android Studio Code Editor......................................................................................... 55 8.1 The Android Studio Editor............................................................................................................... 55 8.2 Splitting the Editor Window............................................................................................................. 57 8.3 Code Completion............................................................................................................................... 58 8.4 Statement Completion....................................................................................................................... 59 8.5 Parameter Information...................................................................................................................... 59 8.6 Parameter Name Hints...................................................................................................................... 60 ii
Table of Contents 8.7 Code Generation................................................................................................................................ 60 8.8 Code Folding....................................................................................................................................... 61 8.9 Quick Documentation Lookup........................................................................................................ 62 8.10 Code Reformatting.......................................................................................................................... 63 8.11 Finding Sample Code...................................................................................................................... 63 8.12 Summary........................................................................................................................................... 64 9. An Overview of the Android Architecture............................................................................................... 65 9.1 The Android Software Stack............................................................................................................. 65 9.2 The Linux Kernel................................................................................................................................ 66 9.3 Android Runtime – ART................................................................................................................... 66 9.4 Android Libraries............................................................................................................................... 66 9.4.1 C/C++ Libraries.......................................................................................................................... 67 9.5 Application Framework..................................................................................................................... 67 9.6 Applications........................................................................................................................................ 68 9.7 Summary............................................................................................................................................. 68 10. The Anatomy of an Android Application............................................................................................... 69 10.1 Android Activities............................................................................................................................ 69 10.2 Android Fragments.......................................................................................................................... 69 10.3 Android Intents................................................................................................................................ 70 10.4 Broadcast Intents.............................................................................................................................. 70 10.5 Broadcast Receivers......................................................................................................................... 70 10.6 Android Services.............................................................................................................................. 70 10.7 Content Providers............................................................................................................................ 71 10.8 The Application Manifest................................................................................................................ 71 10.9 Application Resources..................................................................................................................... 71 10.10 Application Context....................................................................................................................... 71 10.11 Summary......................................................................................................................................... 71 11. Understanding Android Application and Activity Lifecycles................................................................ 73 11.1 Android Applications and Resource Management...................................................................... 73 11.2 Android Process States.................................................................................................................... 73 11.2.1 Foreground Process.................................................................................................................. 74 11.2.2 Visible Process........................................................................................................................... 74 11.2.3 Service Process.......................................................................................................................... 74 11.2.4 Background Process.................................................................................................................. 74 11.2.5 Empty Process........................................................................................................................... 75 11.3 Inter-Process Dependencies .......................................................................................................... 75 11.4 The Activity Lifecycle....................................................................................................................... 75 11.5 The Activity Stack............................................................................................................................. 75 11.6 Activity States................................................................................................................................... 76 11.7 Configuration Changes................................................................................................................... 76 11.8 Handling State Change.................................................................................................................... 77 11.9 Summary........................................................................................................................................... 77 12. Handling Android Activity State Changes............................................................................................. 79 12.1 New vs. Old Lifecycle Techniques.................................................................................................. 79 12.2 The Activity and Fragment Classes................................................................................................ 79 12.3 Dynamic State vs. Persistent State.................................................................................................. 82 12.4 The Android Lifecycle Methods..................................................................................................... 82 iii
Table of Contents 12.5 Lifetimes............................................................................................................................................ 84 12.6 Disabling Configuration Change Restarts.................................................................................... 85 12.7 Lifecycle Method Limitations......................................................................................................... 85 12.8 Summary........................................................................................................................................... 85 13. Android Activity State Changes by Example.......................................................................................... 87 13.1 Creating the State Change Example Project................................................................................. 87 13.2 Designing the User Interface.......................................................................................................... 88 13.3 Overriding the Activity Lifecycle Methods.................................................................................. 89 13.4 Filtering the Logcat Panel............................................................................................................... 92 13.5 Running the Application................................................................................................................. 93 13.6 Experimenting with the Activity.................................................................................................... 94 13.7 Summary........................................................................................................................................... 94 14. Saving and Restoring the State of an Android Activity.......................................................................... 95 14.1 Saving Dynamic State...................................................................................................................... 95 14.2 Default Saving of User Interface State........................................................................................... 95 14.3 The Bundle Class.............................................................................................................................. 96 14.4 Saving the State................................................................................................................................. 97 14.5 Restoring the State........................................................................................................................... 98 14.6 Testing the Application.................................................................................................................... 99 14.7 Summary........................................................................................................................................... 99 15. Understanding Android Views, View Groups and Layouts................................................................. 101 15.1 Designing for Different Android Devices................................................................................... 101 15.2 Views and View Groups................................................................................................................ 101 15.3 Android Layout Managers............................................................................................................ 101 15.4 The View Hierarchy....................................................................................................................... 103 15.5 Creating User Interfaces................................................................................................................ 104 15.6 Summary......................................................................................................................................... 104 16. A Guide to the Android Studio Layout Editor Tool............................................................................. 105 16.1 Basic vs. Empty Activity Templates............................................................................................. 105 16.2 The Android Studio Layout Editor.............................................................................................. 107 16.3 Design Mode................................................................................................................................... 107 16.4 The Palette....................................................................................................................................... 108 16.5 Design and Layout Views.............................................................................................................. 109 16.6 Text Mode....................................................................................................................................... 110 16.7 Setting Attributes........................................................................................................................... 111 16.8 Configuring Favorite Attributes................................................................................................... 112 16.9 Converting Views........................................................................................................................... 113 16.10 Displaying Sample Data.............................................................................................................. 114 16.11 Creating a Custom Device Definition...................................................................................... 115 16.12 Changing the Current Device.................................................................................................... 115 16.13 Summary....................................................................................................................................... 116 17. A Guide to the Android ConstraintLayout........................................................................................... 117 17.1 How ConstraintLayout Works...................................................................................................... 117 17.1.1 Constraints............................................................................................................................... 117 17.1.2 Margins..................................................................................................................................... 118 17.1.3 Opposing Constraints............................................................................................................ 118 iv
Table of Contents 17.1.4 Constraint Bias........................................................................................................................ 119 17.1.5 Chains....................................................................................................................................... 120 17.1.6 Chain Styles.............................................................................................................................. 120 17.2 Baseline Alignment........................................................................................................................ 121 17.3 Working with Guidelines.............................................................................................................. 122 17.4 Configuring Widget Dimensions................................................................................................. 122 17.5 Working with Barriers................................................................................................................... 122 17.6 Ratios............................................................................................................................................... 124 17.7 ConstraintLayout Advantages...................................................................................................... 124 17.8 ConstraintLayout Availability....................................................................................................... 124 17.9 Summary......................................................................................................................................... 125 18. A Guide to using ConstraintLayout in Android Studio....................................................................... 127 18.1 Design and Layout Views.............................................................................................................. 127 18.2 Autoconnect Mode........................................................................................................................ 128 18.3 Inference Mode............................................................................................................................... 129 18.4 Manipulating Constraints Manually............................................................................................ 129 18.5 Adding Constraints in the Inspector........................................................................................... 131 18.6 Deleting Constraints...................................................................................................................... 131 18.7 Adjusting Constraint Bias............................................................................................................. 132 18.8 Understanding ConstraintLayout Margins................................................................................. 132 18.9 The Importance of Opposing Constraints and Bias.................................................................. 134 18.10 Configuring Widget Dimensions............................................................................................... 136 18.11 Adding Guidelines....................................................................................................................... 137 18.12 Adding Barriers............................................................................................................................ 139 18.13 Widget Group Alignment and Distribution............................................................................. 140 18.14 Converting other Layouts to ConstraintLayout....................................................................... 142 18.15 Summary ...................................................................................................................................... 142 19. Working with ConstraintLayout Chains and Ratios in Android Studio............................................. 143 19.1 Creating a Chain............................................................................................................................ 143 19.2 Changing the Chain Style............................................................................................................. 145 19.3 Spread Inside Chain Style............................................................................................................. 146 19.4 Packed Chain Style......................................................................................................................... 146 19.5 Packed Chain Style with Bias........................................................................................................ 147 19.6 Weighted Chain.............................................................................................................................. 147 19.7 Working with Ratios...................................................................................................................... 148 19.8 Summary......................................................................................................................................... 150 20. An Android Studio Layout Editor ConstraintLayout Tutorial............................................................ 151 20.1 An Android Studio Layout Editor Tool Example...................................................................... 151 20.2 Creating a New Activity................................................................................................................ 151 20.3 Preparing the Layout Editor Environment................................................................................. 153 20.4 Adding the Widgets to the User Interface.................................................................................. 153 20.5 Adding the Constraints................................................................................................................. 156 20.6 Testing the Layout.......................................................................................................................... 158 20.7 Using the Layout Inspector........................................................................................................... 159 20.8 Summary......................................................................................................................................... 159 21. Manual XML Layout Design in Android Studio.................................................................................. 161 21.1 Manually Creating an XML Layout............................................................................................. 161 v
Table of Contents 21.2 Manual XML vs. Visual Layout Design....................................................................................... 164 21.3 Summary......................................................................................................................................... 164 22. Managing Constraints using Constraint Sets....................................................................................... 165 22.1 Java Code vs. XML Layout Files................................................................................................... 165 22.2 Creating Views................................................................................................................................ 165 22.3 View Attributes............................................................................................................................... 166 22.4 Constraint Sets................................................................................................................................ 166 22.4.1 Establishing Connections...................................................................................................... 166 22.4.2 Applying Constraints to a Layout......................................................................................... 166 22.4.3 Parent Constraint Connections............................................................................................. 166 22.4.4 Sizing Constraints................................................................................................................... 167 22.4.5 Constraint Bias........................................................................................................................ 167 22.4.6 Alignment Constraints........................................................................................................... 167 22.4.7 Copying and Applying Constraint Sets................................................................................ 167 22.4.8 ConstraintLayout Chains....................................................................................................... 167 22.4.9 Guidelines................................................................................................................................ 168 22.4.10 Removing Constraints.......................................................................................................... 168 22.4.11 Scaling.................................................................................................................................... 168 22.4.12 Rotation.................................................................................................................................. 169 22.5 Summary......................................................................................................................................... 169 23. An Android ConstraintSet Tutorial...................................................................................................... 171 23.1 Creating the Example Project in Android Studio...................................................................... 171 23.2 Adding Views to an Activity......................................................................................................... 171 23.3 Setting View Attributes.................................................................................................................. 172 23.4 Creating View IDs.......................................................................................................................... 173 23.5 Configuring the Constraint Set.................................................................................................... 174 23.6 Adding the EditText View............................................................................................................. 175 23.7 Converting Density Independent Pixels (dp) to Pixels (px)..................................................... 176 23.8 Summary......................................................................................................................................... 177 24. A Guide to using Instant Run in Android Studio................................................................................. 179 24.1 Introducing Instant Run................................................................................................................ 179 24.2 Understanding Instant Run Swapping Levels............................................................................. 179 24.3 Enabling and Disabling Instant Run............................................................................................ 180 24.4 Using Instant Run.......................................................................................................................... 180 24.5 An Instant Run Tutorial................................................................................................................ 181 24.6 Triggering an Instant Run Hot Swap........................................................................................... 181 24.7 Triggering an Instant Run Warm Swap....................................................................................... 181 24.8 Triggering an Instant Run Cold Swap......................................................................................... 182 24.9 The Run Button.............................................................................................................................. 182 24.10 Summary....................................................................................................................................... 182 25. An Overview and Example of Android Event Handling...................................................................... 183 25.1 Understanding Android Events................................................................................................... 183 25.2 Using the android:onClick Resource........................................................................................... 183 25.3 Event Listeners and Callback Methods....................................................................................... 184 25.4 An Event Handling Example........................................................................................................ 184 25.5 Designing the User Interface........................................................................................................ 185 25.6 The Event Listener and Callback Method................................................................................... 186 vi
Table of Contents 25.7 Consuming Events......................................................................................................................... 187 25.8 Summary......................................................................................................................................... 189 26. Android Touch and Multi-touch Event Handling................................................................................ 191 26.1 Intercepting Touch Events............................................................................................................ 191 26.2 The MotionEvent Object............................................................................................................... 191 26.3 Understanding Touch Actions...................................................................................................... 192 26.4 Handling Multiple Touches.......................................................................................................... 192 26.5 An Example Multi-Touch Application........................................................................................ 192 26.6 Designing the Activity User Interface......................................................................................... 193 26.7 Implementing the Touch Event Listener..................................................................................... 193 26.8 Running the Example Application.............................................................................................. 197 26.9 Summary......................................................................................................................................... 197 27. Detecting Common Gestures using the Android Gesture Detector Class........................................... 199 27.1 Implementing Common Gesture Detection............................................................................... 199 27.2 Creating an Example Gesture Detection Project....................................................................... 200 27.3 Implementing the Listener Class.................................................................................................. 200 27.4 Creating the GestureDetectorCompat Instance......................................................................... 203 27.5 Implementing the onTouchEvent() Method............................................................................... 203 27.6 Testing the Application.................................................................................................................. 204 27.7 Summary......................................................................................................................................... 204 28. Implementing Custom Gesture and Pinch Recognition on Android.................................................. 205 28.1 The Android Gesture Builder Application.................................................................................. 205 28.2 The GestureOverlayView Class.................................................................................................... 205 28.3 Detecting Gestures......................................................................................................................... 205 28.4 Identifying Specific Gestures........................................................................................................ 205 28.5 Building and Running the Gesture Builder Application........................................................... 206 28.6 Creating a Gestures File................................................................................................................ 206 28.7 Creating the Example Project....................................................................................................... 206 28.8 Extracting the Gestures File from the SD Card......................................................................... 207 28.9 Adding the Gestures File to the Project...................................................................................... 207 28.10 Designing the User Interface...................................................................................................... 207 28.11 Loading the Gestures File........................................................................................................... 208 28.12 Registering the Event Listener.................................................................................................... 209 28.13 Implementing the onGesturePerformed Method.................................................................... 209 28.14 Testing the Application............................................................................................................... 210 28.15 Configuring the GestureOverlayView....................................................................................... 211 28.16 Intercepting Gestures.................................................................................................................. 211 28.17 Detecting Pinch Gestures............................................................................................................ 211 28.18 A Pinch Gesture Example Project.............................................................................................. 212 28.19 Summary....................................................................................................................................... 214 29. An Introduction to Android Fragments............................................................................................... 215 29.1 What is a Fragment?...................................................................................................................... 215 29.2 Creating a Fragment...................................................................................................................... 215 29.3 Adding a Fragment to an Activity using the Layout XML File................................................ 216 29.4 Adding and Managing Fragments in Code................................................................................ 218 29.5 Handling Fragment Events........................................................................................................... 219 29.6 Implementing Fragment Communication................................................................................. 219 vii
Table of Contents 29.7 Summary ........................................................................................................................................ 221 30. Using Fragments in Android Studio - An Example.............................................................................. 223 30.1 About the Example Fragment Application................................................................................. 223 30.2 Creating the Example Project....................................................................................................... 223 30.3 Creating the First Fragment Layout............................................................................................. 223 30.4 Creating the First Fragment Class............................................................................................... 225 30.5 Creating the Second Fragment Layout........................................................................................ 226 30.6 Adding the Fragments to the Activity......................................................................................... 228 30.7 Making the Toolbar Fragment Talk to the Activity................................................................... 229 30.8 Making the Activity Talk to the Text Fragment......................................................................... 233 30.9 Testing the Application.................................................................................................................. 234 30.10 Summary....................................................................................................................................... 234 31. Modern Android App Architecture with Jetpack................................................................................. 235 31.1 What is Android Jetpack?............................................................................................................. 235 31.2 The “Old” Architecture.................................................................................................................. 235 31.3 Modern Android Architecture..................................................................................................... 235 31.4 The ViewModel Component........................................................................................................ 236 31.5 The LiveData Component............................................................................................................. 236 31.6 LiveData and Data Binding........................................................................................................... 237 31.7 Android Lifecycles......................................................................................................................... 238 31.8 Repository Modules....................................................................................................................... 238 31.9 Summary......................................................................................................................................... 239 32. An Android Jetpack ViewModel Tutorial............................................................................................. 241 32.1 About the Project........................................................................................................................... 241 32.2 Creating the ViewModel Example Project.................................................................................. 241 32.3 Reviewing the Project.................................................................................................................... 242 32.3.1 The Main Activity.................................................................................................................... 242 32.3.2 The Content Fragment........................................................................................................... 242 32.3.3 The ViewModel....................................................................................................................... 244 32.4 Designing the Fragment Layout................................................................................................... 244 32.5 Implementing the View Model..................................................................................................... 245 32.6 Associating the Fragment with the View Model........................................................................ 245 32.7 Modifying the Fragment............................................................................................................... 246 32.8 Accessing the ViewModel Data.................................................................................................... 247 32.9 Testing the Project.......................................................................................................................... 248 32.10 Summary....................................................................................................................................... 248 33. An Android Jetpack LiveData Tutorial................................................................................................. 249 33.1 LiveData - A Recap........................................................................................................................ 249 33.2 Adding LiveData to the ViewModel............................................................................................ 249 33.3 Implementing the Observer.......................................................................................................... 251 33.4 Summary......................................................................................................................................... 253 34. An Overview of Android Jetpack Data Binding................................................................................... 255 34.1 An Overview of Data Binding...................................................................................................... 255 34.2 The Key Components of Data Binding....................................................................................... 255 34.2.1 The Project Build Configuration........................................................................................... 255 34.2.2 The Data Binding Layout File................................................................................................ 256 viii
You can also read