Android Studio 3.3 Development Essentials - Android 9 Edition - eBookFrenzy.com

Page created by Eddie Sims
 
CONTINUE READING
Android Studio 3.3 Development Essentials - Android 9 Edition - eBookFrenzy.com
Android Studio 3.3
Development Essentials
Android 9 Edition
Android Studio 3.3 Development Essentials - Android 9 Edition - eBookFrenzy.com
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
Android Studio 3.3 Development Essentials - Android 9 Edition - eBookFrenzy.com
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
Android Studio 3.3 Development Essentials - Android 9 Edition - eBookFrenzy.com
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
Android Studio 3.3 Development Essentials - Android 9 Edition - eBookFrenzy.com
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
Android Studio 3.3 Development Essentials - Android 9 Edition - eBookFrenzy.com
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
Android Studio 3.3 Development Essentials - Android 9 Edition - eBookFrenzy.com
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
Android Studio 3.3 Development Essentials - Android 9 Edition - eBookFrenzy.com
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
Android Studio 3.3 Development Essentials - Android 9 Edition - eBookFrenzy.com
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
Android Studio 3.3 Development Essentials - Android 9 Edition - eBookFrenzy.com
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