Oreilly - Android 6 App Development Fundamentals I and II
by Paul Deitel | Publisher: Prentice Hall | Release Date: August 2016 | ISBN: 9780134402017
Overview Android App Development Fundamentals 3/e uses Paul Deitel's unique "app-driven" approach to get you up and running quickly with Google's popular Android 6.0 SDK (Marshmellow).Description Paul Deitel—best-selling author and Oracle® Java™ Champion—carefully introduces you to Android app development with key Android 6.0 features and APIs. You'll first learn how to install and configure Google's Android Studio IDE. Using the Deitel's signature App-Driven Approach in which all concepts are presented in the context of complete working apps, you'll then build seven Android apps that introduce everything you need to start creating your own—Welcome app, Tip Calculator app, Flag Quiz app, Doodlz drawing app, Cannon Game app, WeatherViewer app, Twitter Searches app, and Address Book app. Along the way, you'll learn to master the Android APIs and FrameWorks needed to become a successful Android app developer.About the Instructor Paul Deitel is the co-founder of Deitel & Associates, Inc., the internationally recognized programming languages authoring, corporate-training and Internet business development organization. Paul and his father—Harvey Deitel—have written many international best-selling programming-language professional books and textbooks that millions of people worldwide have used to master C++, C, Java™, C#, Visual Basic®, Visual C++®, XML, Perl, Python, and Internet and web programming.Skill Level BeginnerWhat you Will Learn Android 6.0 (Marshmellow)Android StudioSupporting Various Screen Sizes/ResolutionsAccessibility, Internationalization, GraphicsActivities, Fragments, Intents, PreferencesGUIs, Layouts, Menus, Resource Files, Lists, Adapters, Events, Touch/Gesture ProcessingImmersive Mode, Printing Framework, PrintHelperWeb services, JSONAssets (Images, Audio), View AnimationThreading, Collections, SQLite DatabaseSocial sharing via implicit intentsand much, much moreWho Should Take this Course Java Developers looking to learn Android Development skillsCourse Requirements A basic understanding of Java programmingTable of Contents Before You Begin This lesson shows you how to install and configure Android Studio, Google's Android Integrated Development Environments (IDE).Lesson 1: Test-Driving the Tip Calculator App In this lesson you'll run and interact with your first Android app using an Android Virtual Device and, if you have one, an actual device.Lesson 2: Welcome App This lesson shows you how to use Android Studio to create a graphical user interface (GUI). You also learn about accessibility and internationalization.Lesson 3: Tip Calculator App In this lesson you learn to use various Android classes to create objects, call methods on those objects, define and call your own methods, and explore both inheritance and exception handling in Android.Lesson 4: Flag Quiz App Among the key skills you'll acquire in this lesson are how to use Fragments to make better use of available screen real estate, display an options menu, manage user preferences, organize an app's assets, support multiple device orientations and use Android's logging mechanism to log error messages.Lesson 5: Doodlz App This lesson shows you how to create a drawing app. You learn to detect when the user touches the screen, process multiple touches, use the accelerometer to detect motion events, draw lines, create and display menu items on the app bar, and use Android 6.0's new permissions model.Lesson 6: Cannon Game App This lesson shows you how to create a simple game app that's easy to code and fun to play. In it you learn how to display the game's graphics, draw on screen, fire a cannonball, perform collision detection, and add sound to your game.Lesson 7: WeatherViewer App This lesson shows you how to use web services in your apps. The app- uses the free OpenWeatherMap.org REST web services to obtain a specified city's 16-day weather forecast. The app receives the weather data in JSON format. It uses a ListView to display the data in a scrollable list of items.Lesson 8: Twitter® Searches App This app allows you to save your favorite Twitter search queries with easy-to-remember short tag names. The app allows you to share, edit anddelete saved searches. You learn to support both portrait and landscape orientations by designing a GUI that dynamically adjusts, based on the current orientation.Lesson 9: Address Book App The Address Bookapp provides convenient access to contact information that's stored in a SQLite database on the device. You can scroll through a contact list, view details, and add, edit, or delete contacts. The app provides a separate tablet layout that always displays the contact list in one third of the screen and uses the screen's remaining two thirds to display either the selected contact's data or the screen for adding and editing a contact.About LiveLessons Video TrainingLiveLessons Video Training series publishes hundreds of hands-on, expert-led video tutorials covering a wide selection of technology topics designed to teach you the skills you need to succeed. This professional and personal technology video series features world-leading author instructors published by your trusted technology brands: Addison-Wesley, Cisco Press, IBM Press, Pearson IT Certification, Prentice Hall, Sams, and Que. Topics include: IT Certification, Programming, Web Development, Mobile Development, Home & Office Technologies, Business & Management, and more. View All LiveLessons http://www.informit.com/imprint/series_detail.aspx?ser=2185116.
- Part I
- Android 6 App Development Fundamentals Part I: Introduction 00:12:00
- BeforeYouBegin: Setting Up Your Development Environment
- Lesson 1:Test-Driving the Doodlz App
- Overview of Lesson 1 00:02:44
- Ensuring that the correct Android platform is installed 00:03:48
- Opening the Tip Calculator App’s Project in Android Studio 00:04:12
- Creating Android Virtual Devices (AVDs) for testing Android apps 00:09:12
- Test-Driving the Doodlz App on an AVD 00:08:14
- Test-Driving the Doodlz App on a device 00:08:25
- Lesson 2: Welcome App
- Overview of Lesson 2 00:03:44
- Test-driving the Welcome app 00:07:08
- Technologies Overview 00:07:49
- Creating a new Android project 00:09:45
- Andoid Studio Window 00:07:19
- Adding an image to the Project 00:07:08
- Adding an App Icon 00:05:36
- Changing the RelativeLayout to a LinearLayout 00:03:38
- Configuring the LinearLayout’s id and orientation Properties 00:03:03
- Configuring the TextView’s id and text Properties 00:06:56
- Configuring the TextView’s textSize Property 00:11:31
- Configuring the TextView’s textColor Property 00:03:52
- Configuring the TextView’s gravity Property 00:01:12
- Configuring the TextView’s layout:gravity Property 00:01:10
- Configuring the TextView’s layout:weight Property 00:02:29
- Adding an ImageView to Display the Image 00:09:53
- Testing the Completed Design on a Phone and a Tablet 00:03:41
- Making Your App Accessible 00:08:59
- Localizing the Welcome App for Spanish 00:15:56
- Executing the Localized App on an AVD and on a Device 00:08:05
- Lesson 3: Tip Calculator App
- Overview of Lesson 3 00:03:43
- Test-Driving the Tip Calculator App 00:03:37
- Technologies Overview: Class Activity 00:02:36
- Technologies Overview: Activity Lifecycle Methods 00:03:28
- Technologies Overview: AppCompat Library and class AppCompatActivity 00:04:08
- Technologies Overview: Arranging Views in a GridLayout; Creating and Customizing the GUI with the Layout Editor, the Component Tree and the Properties Window 00:01:58
- Technologies Overview: Formatting Numbers as Locale-Specific Currency and Percentage Strings 00:01:22
- Technologies Overview: Implementing Interface TextWatcher for Handling EditText Text Changes and Implementing Interface SeekBar.OnSeekBarChangeListener for Handling SeekBar Thumb Position Changes 00:00:58
- Technologies Overview: Material Themes 00:02:41
- Technologies Overview: Material Design—Elevation and Shadows 00:01:35
- Technologies Overview: Material Design—Colors 00:04:47
- Technologies Overview: AndroidManifest.xml 00:00:51
- GridLayout introduction 00:04:18
- Creating the TipCalculator Project 00:02:20
- Changing to a GridLayout 00:03:52
- Adding the TextViews, EditText and SeekBar: Adding Views to the First Row 00:09:23
- Adding the TextViews, EditText and SeekBar: Adding Views to the Second Row 00:02:41
- Adding the TextViews, EditText and SeekBar: Adding Views to the Third Row 00:02:53
- Adding the TextViews, EditText and SeekBar: Adding Views to the Fourth Row 00:02:49
- Customizing the Views: Specifying Literal Text 00:05:48
- Customizing the Views: Right Aligning TextViews in the Left Column 00:02:27
- Customizing the Views: Configuring the amountEditText 00:02:58
- Customizing the Views: Configuring the amountTextView 00:05:14
- Customizing the Views: Configuring the percentTextView 00:02:06
- Customizing the Views: Configuring the percentSeekBar 00:04:08
- Customizing the Views: Configuring the tipTextView and totalTextView 00:04:26
- Customizing the Theme’s Primary, Primary Dark and Accent Colors 00:06:24
- Adding the App’s Logic: package and import Statements 00:05:30
- Adding the App’s Logic: MainActivity Subclass of AppCompatActivity 00:03:03
- Adding the App’s Logic: Class Variables and Instance Variables 00:03:13
- Adding the App’s Logic: Overridding Activity Method onCreate 00:09:31
- Adding the App’s Logic: MainActivity Method calculate 00:01:50
- Adding the App’s Logic: Anonymous Inner Class That Implements Interface OnSeekBarChangeListener 00:03:51
- Adding the App’s Logic: Anonymous Inner Class That Implements Interface TextWatcher 00:02:54
- AndroidManifest.xml: Setting Portrait Mode and Forcing the Keypad to Display 00:09:03
- Lesson 4: Flag Quiz Game App
- Overview of Lesson 4 00:06:03
- Test-Driving the Flag Quiz App 00:07:20
- Technologies Overview: Menus 00:03:19
- Technologies Overview: Fragments 00:04:09
- Technologies Overview: Fragment Lifecycle 00:03:08
- Technologies Overview: Managing Fragments 00:01:46
- Technologies Overview: Preferences 00:03:31
- Technologies Overview: assets Folder 00:02:48
- Technologies Overview: Resource Folders 00:02:39
- Technologies Overview: Supporting Different Screen Sizes and Resolutions 00:02:03
- Technologies Overview: Programmatically Determining Device Orientation 00:01:38
- Technologies Overview: Toasts for Displaying Messages 00:01:15
- Technologies Overview: Using a Handler to Execute a Runnable in the Future 00:01:37
- Technologies Overview: Applying an Animation to a View 00:01:06
- Technologies Overview: Using ViewAnimationUtils to Create a Circular Reveal Animator 00:02:04
- Technologies Overview: Specifying Colors Based on a View’s State Via a Color State List 00:02:29
- Technologies Overview: AlertDialog 00:03:22
- Technologies Overview: Logging Exception Messages 00:02:15
- Technologies Overview: Launching Another Activity Via an Explicit Intent 00:07:44
- Technologies Overview: Java Data Structures 00:00:33
- Technologies Overview: Java SE 7 Features 00:01:10
- Technologies Overview: AndroidManifest.xml—Declaring New Activities and Specifying the Launch Mode of an Activity 00:00:51
- Creating the Flag Quiz Project 00:06:41
- Blank Activity Template Layouts 00:07:33
- Configuring Java SE 7 Support 00:01:03
- Adding the Flag Images to the Project 00:05:03
- strings.xml and Formatted String Resources 00:06:52
- arrays.xml 00:07:57
- colors.xml 00:04:46
- button_text_color.xml: Defining a Color State List 00:05:33
- Editing menu_main.xml 00:09:50
- Creating a Flag Shake Animation 00:05:12
- preferences.xml for Specifying the App’s Default Settings 00:08:10
- Adding Classes SettingsActivity and SettingsActivityFragment 00:05:07
- activity_main.xml Layout for Devices in Portrait Orientation 00:01:24
- Designing fragment_main.xml 00:01:34
- Designing fragment_main.xml: Step 1, Changing from a RelativeLayout to a LinearLayout 00:02:10
- Designing fragment_main.xml: Step 2, Adding the questionNumberTextView to the LinearLayout 00:03:06
- Designing fragment_main.xml: Step 3, Adding the flagImageView to the LinearLayout 00:05:10
- Designing fragment_main.xml: Step 4, Adding the guessCountryTextView to the LinearLayout 00:02:02
- Designing fragment_main.xml: Step 5, Adding the Buttons to the LinearLayout 00:04:37
- Designing fragment_main.xml: Step 6, Adding the answerTextView to the LinearLayout 00:04:25
- Designing fragment_main.xml: Step 7, Setting the Properties of the Buttons 00:06:14
- content_main.xml Layout for Tablet Landscape Orientation: Creating the Tablet Layout 00:05:05
- content_main.xml Layout for Tablet Landscape Orientation: Creating the Tablet Layout’s GUI 00:05:40
- content_main.xml Layout for Tablet Landscape Orientation: Selecting a Fragment to Preview in the Layout Editor’s Design View 00:02:14
- MainActivity Class: package Statement and Import Statements 00:04:52
- MainActivity Class: Fields 00:01:41
- MainActivity Class: Overridden Activity Method onCreate 00:07:09
- MainActivity Class: Overridden Activity Method onStart 00:06:15
- MainActivity Class: Overridden Activity Method onCreateOptionsMenu 00:03:34
- MainActivity Class: Overridden Activity Method onOptionsItemSelected 00:04:11
- MainActivity Class: Anonymous Inner Class That Implements OnSharedPreferencesChangeListener 00:07:25
- MainActivityFragment Class: package Statement and import Statements 00:04:44
- MainActivityFragment Class: Fields 00:05:48
- MainActivityFragment Class: Overridden Fragment Method onCreateView 00:15:20
- MainActivityFragment Class: Methods updateGuessRows 00:03:56
- MainActivityFragment Class: Method updateRegions 00:01:01
- MainActivityFragment Class: Method resetQuiz 00:05:29
- MainActivityFragment Class: Method loadNextFlag 00:08:04
- MainActivityFragment Class: Method getCountryName 00:01:08
- MainActivityFragment Class: Method animate 00:03:54
- MainActivityFragment Class: Anonymous Inner Class That Implements OnClickListener 00:09:15
- MainActivityFragment Class: Method disableButtons 00:00:51
- SettingsActivity Class 00:03:33
- SettingsActivityFragment Class 00:02:17
- AndroidManifest.xml: Declaring Other Activities and Configuring the Launch Mode 00:04:57
- Part II
- Android 6 App Development Fundamentals Part II: Introduction 00:17:45
- Lesson 5: Doodlz App
- Overview of Lesson 5 00:04:35
- Test-Driving the Doodlz App 00:06:13
- Technologies Overview: Activity and Fragment Lifecycle Methods 00:02:17
- Technologies Overview: Custom Views 00:01:25
- Technologies Overview: Using SensorManager to Listen for Accelerometer Events 00:01:26
- Technologies Overview: Custom DialogFragments 00:02:10
- Technologies Overview: Drawing with Canvas, Paint and Bitmap 00:00:52
- Technologies Overview: Processing Multiple Touch Events and Storing Lines in Paths 00:03:26
- Technologies Overview: Saving to the Device 00:01:09
- Technologies Overview: Printing and the Android Support Library’s PrintHelper Class 00:00:58
- Technologies Overview: Android 6.0 (Marshmallow) Permissions Model 00:01:47
- Technologies Overview: Adding Dependences to a Project Using Gradle 00:01:01
- Creating the Doodlz Project and Adding the App Icon 00:02:26
- Removing unused GUI Components and Code, and Changing the Theme Colors 00:03:25
- Gradle: Adding a Support Library to the Project 00:04:25
- strings.xml 00:03:30
- Importing the Material Design Icons for the App’s Menu Items 00:01:59
- MainActivityFragment Menu 00:09:54
- Adding a Permission to AndroidManifest.xml 00:02:21
- content_main.xml Layout for MainActivity 00:01:02
- fragment_main.xml Layout for MainActivityFragment 00:06:40
- fragment_color.xml Layout for ColorDialogFragment 00:11:35
- fragment_line_width.xml Layout for LineWidthDialogFragment 00:03:55
- Adding Class EraseImageDialogFragment 00:01:09
- MainActivity Class 00:02:51
- MainActivityFragmentclass: package Statement, import Statements and Fields 00:03:52
- MainActivityFragmentclass: Overridden Fragment Method onCreateView 00:03:36
- MainActivityFragmentclass: Overridden Fragment Method onResume and Method enableAccelerometerListening 00:06:44
- MainActivityFragmentclass: Overridden Fragment Method onPause and Method disableAccelerometerListening 00:01:22
- MainActivityFragmentclass: Anonymous Inner Class for Processing Accelerometer Events 00:03:57
- MainActivityFragmentclass: Method confirmErase 00:01:18
- MainActivityFragmentclass: Overridden Fragment Methods onCreateOptionsMenu and onOptionsItemSelected 00:03:05
- MainActivityFragmentclass: Method saveImage 00:05:29
- MainActivityFragmentclass: Overridden Method onRequestPermissionResult 00:03:32
- MainActivityFragmentclass: Methods getDoodleView and setDialogOnScreen 00:01:42
- DoodleView.java—package Statement and import Statements 00:02:40
- DoodleView.java—DoodleView static and Instance Variables 00:03:21
- DoodleView.java—DoodleView Constructor 00:02:43
- DoodleView.java—Overridden View Method onSizeChanged 00:03:09
- DoodleView.java—DoodleView Methods clear, setDrawingColor, getDrawingColor, setLineWidth and getLineWidth 00:02:30
- DoodleView.java—Overridden View Method onDraw 00:02:35
- DoodleView.java—Overridden View Method onTouchEvent 00:05:26
- DoodleView.java—touchStarted Method of Class DoodleView 00:02:35
- DoodleView.java—touchMoved Method of Class DoodleView 00:03:45
- DoodleView.java—touchEnded Method of Class DoodleView 00:00:56
- DoodleView.java—DoodleView Method saveImage 00:03:39
- DoodleView.java—DoodleView Method printImage 00:01:44
- ColorDialogFragment.java—package Statement, import Statements and Fields 00:01:37
- ColorDialogFragment.java—Overridden DialogFragment Method onCreateDialog 00:04:52
- ColorDialogFragment.java—Method getDoodleFragment 00:01:19
- ColorDialogFragment.java—Fragment Lifecycle Methods onAttach and onDetach 00:02:08
- ColorDialogFragment.java—Anonymous Inner Class That Responds to the Events of the Alpha, Red, Green and Blue SeekBars 00:02:08
- LineWidthDialogFragment Class 00:04:41
- EraseImageDialogFragment Class 00:02:47
- Lesson 6: Cannon Game App
- Overview of Lesson 6 00:04:11
- Test-Driving the Cannon Game App 00:02:38
- Technologies Overview—Using the res/raw folder 00:00:49
- Technologies Overview—Activity/Fragment onDestroy Method 00:01:11
- Technologies Overview—Touch event handling 00:00:28
- Technologies Overview—SoundPool and AudioManager 00:01:43
- Technologies Overview—Frame-by-Frame Animation with Threads, SurfaceView and SurfaceHolder 00:04:05
- Technologies Overview—Simple Collision Detection 00:01:22
- Technologies Overview—Immersive Mode 00:01:14
- Creating the Project and Setting the App for Landscape Orientation 00:03:15
- Adjusting the Theme to Remove the App Title and App Bar 00:02:15
- strings.xml 00:01:52
- Colors 00:01:13
- Adding Sounds to the App 00:01:37
- Adding Class MainActivityFragment 00:02:47
- Editing activity_main.xml 00:02:43
- Adding the CannonView to fragment_main.xml 00:06:38
- Overview of This App’s Classes 00:02:27
- MainActivity Subclass of AppCompatActivity 00:00:47
- MainActivityFragment Subclass of Fragment 00:04:33
- Class GameElement—Instance Variables and Constructor 00:03:46
- Class GameElement—Methods update, draw and playSound 00:03:21
- Blocker Subclass of GameElement 00:01:49
- Target Subclass of GameElement 00:01:19
- Cannon Class—Instance Variables and Constructor 00:03:20
- Cannon Class—Method align 00:01:53
- Cannon Class—Method fireCannonball 00:04:13
- Cannon Class—Method draw 00:01:53
- Cannon Class—Methods getCannonball and removeCannonball 00:00:37
- Cannonball Subclass of GameElement—Instance Variables and Constructor 00:02:02
- Cannonball Subclass of GameElement—Methods getRadius, collidesWith, isOnScreen and reverseVelocityX 00:02:49
- Cannonball Subclass of GameElement—Method update 00:02:27
- Cannonball Subclass of GameElement—Method draw 00:01:25
- CannonView Subclass of SurfaceView—package and import Statements 00:00:43
- CannonView Subclass of SurfaceView—Instance Variables and Constants 00:05:43
- CannonView Subclass of SurfaceView—Constructor 00:07:00
- CannonView Subclass of SurfaceView—Overriding View Method onSizeChanged 00:01:29
- CannonView Subclass of SurfaceView—Methods getScreenWidth, getScreenHeight and playSound 00:03:32
- CannonView Subclass of SurfaceView—Method newGame 00:06:51
- CannonView Subclass of SurfaceView—Method updatePositions 00:02:15
- CannonView Subclass of SurfaceView—Method alignAndFireCannonball 00:02:32
- CannonView Subclass of SurfaceView—Method showGameOverDialog 00:05:36
- CannonView Subclass of SurfaceView—Method drawGameElements 00:01:56
- CannonView Subclass of SurfaceView—Method testForCollisions 00:03:09
- CannonView Subclass of SurfaceView—Methods stopGame and releaseResources 00:01:02
- CannonView Subclass of SurfaceView—Implementing the SurfaceHolder.Callback Methods 00:03:23
- CannonView Subclass of SurfaceView—Overriding View Method onTouchEvent 00:01:27
- CannonView Subclass of SurfaceView—CannonThread: Using a Thread to Create a Game Loop 00:06:23
- CannonView Subclass of SurfaceView—Methods hideSystemBars and showSystemBars 00:02:47
- Lesson 7: WeatherViewer App
- Overview of Lesson 7 00:07:42
- Test-Driving the WeatherViewer App 00:08:07
- Technologies Overview—Web Services 00:07:08
- Technologies Overview—JavaScript Object Notation (JSON) and the org.json Package 00:07:38
- Technologies Overview—HttpUrlConnection Invoking a REST Web Service 00:01:13
- Technologies Overview—Using AsyncTask to Perform Network Requests Outside the GUI Thread 00:02:04
- Technologies Overview—ListView, ArrayAdapter and the View-Holder pattern 00:05:29
- Technologies Overview—FloatingActionButton 00:02:08
- Technologies Overview—TextInputLayout 00:01:20
- Technologies Overview—Snackbar 00:01:35
- Creating the Project 00:03:20
- AndroidManifest.xml—Setting the Orientation and Permissions 00:03:30
- strings.xml 00:04:10
- colors.xml 00:00:53
- Editing activity_main.xml 00:07:03
- Editing content_main.xml 00:06:01
- Creating list_item.xml 00:09:09
- Weather Class: package Statement, import Statements and Instance Variables 00:01:57
- Weather Class: Constructor 00:02:54
- Weather Class: Method convertTimeStampToDay 00:02:35
- WeatherArrayAdapter Class: package and import Statements 00:03:33
- WeatherArrayAdapter Class: Nested Class ViewHolder 00:02:19
- WeatherArrayAdapter Class: Instance Variable and Constructor 00:02:40
- WeatherArrayAdapter Class: Overridden ArrayAdapter Method getView 00:09:58
- WeatherArrayAdapter Class: Nested AsyncTask Subclass for Downloading Images in a Separate Thread 00:07:50
- MainActivity Class: package and import Statements 00:02:29
- MainActivity Class: Instance Variables 00:00:47
- MainActivity Class: Overridden Activity Method onCreate 00:04:28
- MainActivity Class: Methods dismissKeyboard and createUrl 00:04:32
- MainActivity Class: Nested AsyncTask Subclass for Invoking a Web Service 00:05:52
- MainActivity Class: Method convertJSONtoArrayList 00:04:34
- Lesson 8: Twitter Searches App
- Overview of Lesson 8 00:05:25
- Test-Driving the Twitter Searches App 00:10:56
- Technologies Overview—Storing Key-Value Data in a SharedPreferences File 00:01:09
- Technologies Overview—Implicit Intents and Intent Choosers 00:01:57
- Technologies Overview—RecyclerView 00:01:41
- Technologies Overview—RecyclerView.Adapter and RecyclerView.ViewHolder 00:01:27
- Technologies Overview—RecyclerView.ItemDecoration 00:00:37
- Technologies Overview—Displaying a List of Options in an AlertDialog 00:00:59
- Creating the Twitter Searches Project 00:02:40
- AndroidManifest.xml—Prevent Keyboard from Displaying Initially 00:02:31
- Adding the RecyclerView Library to the Project. 00:01:59
- colors.xml 00:01:39
- strings.xml 00:02:43
- arrays.xml 00:01:36
- dimens.xml 00:02:24
- Adding the Save Button Icon 00:03:00
- activity_main.xml—Customizing the FloatingActionButton 00:04:39
- content_main.xml Step 1—Adding the queryTextInputLayout and Its Nested EditText 00:06:39
- content_main.xml Step 2—Adding the tagTextInputLayout and Its Nested EditText 00:03:47
- content_main.xml Step 3—Adding the LinearLayout 00:02:21
- content_main.xml Step 4—Adding the LinearLayout’s Nested TextView and RecyclerView 00:06:31
- RecyclerView Item’s Layout—list_item.xml 00:05:21
- MainActivity.java—package and import statements 00:02:24
- MainActivity.java—Fields 00:03:15
- MainActivity.java—Overriding Activity Method onCreate 00:10:20
- MainActivity.java—TextWatcher Event Handler and Method updateSaveFAB 00:02:23
- MainActivity.java—saveButton’s OnClickListener 00:02:37
- MainActivity.java—addTaggedSearch Method 00:02:22
- MainActivity.java—Anonymous Inner Class that Implements the ListView’s OnItemClickListener to Display Search Results 00:06:24
- MainActivity.java—Anonymous Inner Class that Implements the View.OnItemLongClickListener to Share, Edit or Delete a Search 00:05:43
- MainActivity.java—shareSearch Method 00:04:06
- MainActivity.java—deleteSearch Method 00:02:46
- SearchesAdapter.java—package Statement, import Statements, Instance Variables and Constructor 00:03:44
- SearchesAdapter.java—Nested ViewHolder Subclass of RecyclerView.ViewHolder 00:02:23
- SearchesAdapter.java—Overridden RecyclerView.Adapter Methods 00:03:19
- ItemDivider.java—ItemDivider Subclass of RecyclerView.ItemDecoration 00:08:41
- Lesson 9: AddressBook App
- Overview of Lesson 9 00:07:53
- Test-Driving the Address Book App 00:05:22
- Technologies Overview—Displaying Fragments with FragmentTransactions 00:02:23
- Technologies Overview—Communicating Data Between a Fragment and a Host Activity 00:02:48
- Technologies Overview—Manipulating a SQLite Database 00:01:12
- Technologies Overview—ContentProviders and ContentResolvers 00:05:04
- Technologies Overview—Loader and LoaderManager: Asynchronous Database Access 00:02:52
- Technologies Overview—Defining Styles and Applying Them to GUI Components 00:01:36
- Technologies Overview—Specifying a TextView’s Background 00:01:28
- Creating the Project 00:03:10
- Creating the App’s Classes 00:09:02
- Adding the App’s Icons 00:02:47
- strings.xml 00:03:57
- Defining common look-and-feel: styles.xml 00:07:46
- Defining a TextView Border: textview_border.xml 00:06:24
- MainActivity’s content_main.xml for Phones and Tablets 00:16:46
- ContactsFragment’s Layout: fragment_Contacts.xml 00:04:50
- DetailFragment’s Layout: fragment_details.xml 00:07:30
- AddEditFragment’s Layout: fragment_add_edit.xml 00:12:05
- Defining DetailFragment Menu 00:05:10
- Overview of This App’s Classes 00:08:50
- DatabaseDescription Class 00:07:14
- AddressBookDatabaseHelper Class 00:07:27
- AddressBookContentProvider Class—Fields 00:07:15
- AddressBookContentProvider Class—Overridden Methods onCreate and getType 00:02:21
- AddressBookContentProvider Class—Overridden Method query 00:09:46
- AddressBookContentProvider Class—Overridden Method insert 00:05:28
- AddressBookContentProvider Class—Overridden Method update 00:04:11
- AddressBookContentProvider Class—Overridden Method delete 00:02:57
- MainActivity.java—Superclass, Implemented Interfaces and Fields 00:03:53
- MainActivity.java—Overridden Activity Method onCreate 00:06:51
- MainActivity.java—ContactsFragment.ContactsFragmentListener Methods 00:04:34
- MainActivity.java—Method displayContact 00:04:57
- MainActivity.java—Method displayAddEditFragment 00:02:39
- MainActivity.java—DetailFragment.DetailFragmentListener Methods 00:01:59
- MainActivity.java—AddEditFragment.AddEditFragmentListener Methods 00:01:38
- ContactsFragment.java—Superclass and Implemented Interface 00:01:30
- ContactsFragment.java—ContactsFragmentListener Nested Interface 00:01:22
- ContactsFragment.java—Fields 00:01:27
- ContactsFragment.java—Overridden Fragment Method onCreateView 00:03:04
- ContactsFragment.java—Overridden Fragment Methods onAttach and onDetach 00:01:32
- ContactsFragment.java—Overridden Fragment Method onActivityCreated 00:02:58
- ContactsFragment.java—Method updateContactList 00:02:58
- ContactsFragment.java—LoaderManager.LoaderCallbacks<Cursor> Methods 00:06:41
- ContactAdatper Class 00:10:51
- AddEditFragment.java—Superclass and Implemented Interface 00:00:55
- AddEditFragment.java—AddEditFragmentListener Nested Interface 00:00:33
- AddEditFragment.java—Fields 00:01:59
- AddEditFragment.java—Overridden Methods onAttach, onDetach and onCreateView 00:04:59
- AddEditFragment.java—TextWatcher nameChangedListener and Method updateSaveButtonFAB 00:02:02
- AddEditFragment.java—View.OnClickListener saveContactButtonClicked and Method saveContact 00:06:44
- AddEditFragment.java—LoaderManager.LoaderCallbacks<Cursor> Methods 00:02:51
- DetailFragment.java—Superclass and Implemented Interface 00:00:46
- DetailFragment.java—DetailFragmentListener Nested Interface 00:00:41
- DetailFragment.java—Fields 00:00:47
- DetailFragment.java—Overridden Methods onAttach, onDetach and onCreateView 00:01:50
- DetailFragment.java—Overridden Methods onCreateOptionsMenu and onOptionsItemSelected 00:01:31
- DetailFragment.java—Method deleteContact and DialogFragment confirmDelete 00:02:18
- DetailFragment.java—LoaderManager.LoaderCallbacks<Cursor> Methods 00:02:18
9780134402017.Android.6.App.Development.Fundamentals.I.and.II.part01.OR.rar
9780134402017.Android.6.App.Development.Fundamentals.I.and.II.part02.OR.rar
9780134402017.Android.6.App.Development.Fundamentals.I.and.II.part03.OR.rar
9780134402017.Android.6.App.Development.Fundamentals.I.and.II.part04.OR.rar
9780134402017.Android.6.App.Development.Fundamentals.I.and.II.part05.OR.rar
9780134402017.Android.6.App.Development.Fundamentals.I.and.II.part06.OR.rar
9780134402017.Android.6.App.Development.Fundamentals.I.and.II.part07.OR.rar
9780134402017.Android.6.App.Development.Fundamentals.I.and.II.part08.OR.rar
9780134402017.Android.6.App.Development.Fundamentals.I.and.II.part09.OR.rar
9780134402017.Android.6.App.Development.Fundamentals.I.and.II.part10.OR.rar