Video description
Overview
This Learning Path includes Java Fundamentals LiveLessons, Part 1, and Android 6 App Development LiveLessons, Part 1 and 2.
Download the lesson files at http://www.deitel.com/bookresources/androidfp3/androidfp3_examples.zip
Prerequisites
- Familiarity with the basics of software development projects.
Description
This online course is the professional programmer’s guide to Java SE 7 and SE 8 development. With 8+ hours of instruction, Java Fundamentals Part I applies the Deitel signature live-code approach to teaching and explores the language and APIs in depth. Concepts are presented in the context of fully tested programs. The course features hundreds of complete programs with thousands of lines of proven Java™ code along with hundreds of tips that will help you build robust applications.
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 lean 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.
Table of Contents
Part I
Android 6 App Development Fundamentals Part I: Introduction
00:12:00
BeforeYouBegin: Setting Up Your Development Environment
Intro
00:02:44
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
Part I
Java Fundamentals I, II, and III LiveLessons: Introduction to Part I
00:11:05
Before You Begin: Setting Up Your Development Environment
Overview
00:01:15
Software Used
00:01:40
Installing the JDK (Required)
00:05:26
Installing Eclipse (Optional)
00:02:27
Installing IntelliJ IDEA
00:00:58
Downloading the Code Examples and Contacting Me for Help
00:02:20
Dive Into NetBeans: Using NetBeans to Compile Exiting Programs and Create New Ones (Optional)
Overview
00:01:01
Getting NetBeans, opening the IDE and configuring tabs and line numbers
00:06:00
Creating a project and adding existing code to the project
00:07:22
Creating a new program
00:04:01
Dive Into Eclipse: Using Eclipse to Compile Exiting Programs and Create New Ones (Optional)
Overview
00:01:01
Getting Eclipse, opening the IDE and configuring tabs and line numbers
00:06:26
Creating a project and adding existing code to the project
00:06:44
Creating a new program
00:05:46
Dive Into IntelliJ IDEA: Using NetBeans to Compile Exiting Programs and Create New Ones (Optional)
Overview
00:01:08
Getting IntelliJ, opening the IDE and configuring tabs and line numbers
00:05:00
Creating a project and adding existing code to the project
00:05:48
Creating a new program
00:05:30
Lesson 1: Test Driving a Java Program at the Command Line
Introduction
00:00:53
Test-Driving the command line
00:10:23
Lesson 2: Introduction to Java Applications
Introduction
00:01:49
Text-printing program
00:20:59
Printing a line of text with multiple statements
00:01:59
Printing multiple lines of text with a single statement
00:02:32
Displaying multiple lines with method System.out.printf
00:04:03
Addition program and an Introduction to using the online Java documentation
00:25:06
Compare integers using if statements, relational operators and equality operators
00:09:17
Lesson 3: Introduction to Classes, Objects, Methods and Strings
Introduction
00:02:59
Account class that contains a name instance variable and methods to set and get its value
00:16:25
Creating and manipulating an Account object
00:16:03
Conceptual view of an Account object
00:03:36
Account class with a constructor that initializes the name instance variable
00:04:53
Using the Account constructor to initialize the name instance variable when each Account object is created
00:03:30
Using the Account constructor to initialize the name instance variable when each Account object is created
00:07:16
Account class with a double instance variable balance and a constructor and deposit method that perform validation
00:05:55
Inputting and outputting floating-point numbers with Account objects
00:10:39
Lesson 4: Control Statements, Part 1
Introduction
00:00:48
Student Class: Nested if…else Statements
00:15:39
Calculating a class average using the while statement and counter-controller repetition
00:06:23
Calculating a class average using the while statement and sentinel-controller repetition
00:06:35
Arithmetic assignment operators
00:01:36
Prefix increment and postfix increment operators
00:03:30
Lesson 5: Control Statements, Part 2
Introduction
00:01:31
Compound-interest calculations with for
00:05:04
do…while repetition statement
00:02:29
LetterGrades class that uses the switch statement to count letter grades
00:09:49
Demonstrating Strings in switch–Class that represents an auto insurance policy
00:10:49
break statement exiting a for statement
00:03:41
continue statement terminating an iteration of a for statement
00:02:36
Logical operators
00:09:33
Lesson 6: Methods–A Deeper Look
Introduction
00:03:38
static Methods, static Fields and Class Math
00:09:23
Programmer-declared method maximum with three double parameters
00:09:52
Argument Promotion and Casting
00:06:06
Java API Packages
00:08:29
Shifted and scaled random integers
00:10:51
Roll a six-sided die 6,000,000 times
00:02:08
Craps class simulates the dice game craps
00:11:54
Scope class demonstrates field and local-variable scopes
00:11:25
Overloaded method declarations
00:10:34
Lesson 7:Arrays
Introduction
00:04:16
Initializing the elements of an array to default values of zero
00:05:13
Initializing the elements of an array with an array initializer
00:02:20
Calculating the values to be placed into the elements of an array
00:02:34
Computing the sum of the elements of an array
00:03:19
Bar chart printing program
00:02:40
Die-rolling program using arrays instead of switch
00:03:59
Poll analysis program
00:09:42
Card shuffling and dealing
00:18:30
Using the enhanced for statement to total integers in an array
00:03:35
Passing arrays and individual array elements to methods
00:07:43
GradeBook class using an array to store test grades
00:08:43
Initializing two-dimensional arrays
00:08:08
GradeBook class using a two-dimensional array to store grades
00:11:18
Using variable-length argument lists
00:05:07
Initializing an array using command-line arguments
00:09:04
Arrays class methods and System.arraycopy
00:07:53
Generic ArrayList<T> collection demonstration
00:12:51
Part II
Java Fundamentals I, II, III, and IV LiveLessons: Introduction to Part II
00:16:26
Lesson 8: Classes and Objects–A Deeper Look
Introduction
00:02:57
Time1 class declaration maintains the time in 24-hour format
00:23:03
Private members of class Time1 are not accessible
00:02:01
“this” used implicitly and explicitly to refer to members of an object
00:05:54
Time2 class with overloaded constructors
00:19:34
Composition demonstration with classes Date and Employee
00:12:12
Declaring an enum type with a constructor and explicit instance fields and accessors for these fields
00:10:22
Garbage Collection
00:04:18
Declaring and using static variables and methods to maintain a count of the number of Employee objects in memory
00:07:38
static import of Math class methods
00:02:20
Package access members of a class are accessible by other classes in the same package
00:05:27
Compound-interest calculations with BigDecimal
00:13:32
Lesson 9: Object-Oriented Programming–Inheritance
Introduction
00:03:12
Inheritance hierarchy UML class diagrams
00:06:40
Creating and using a CommissionEmployee class
00:13:12
Creating and Using a BasePlusCommissionEmployee Class
00:05:29
Creating a CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy
00:08:52
CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using protected Instance Variables
00:04:50
CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using private Instance Variables
00:12:31
Class Object
00:08:56
Lesson 10: Object-Oriented Programming–Polymorphism
Introduction
00:06:21
Demonstrating Polymorphic Behavior–Assigning superclass and subclass references to superclass and subclass variables
00:10:57
Abstract Classes and Methods
00:05:30
Case Study: Payroll System Using Polymorphism
00:09:00
Abstract Superclass Employee
00:08:31
Concrete Subclass SalariedEmployee
00:07:54
Concrete Subclass HourlyEmployee
00:05:37
Concrete Subclass CommissionEmployee
00:02:25
Indirect Concrete Subclass BasePlusCommissionEmployee
00:05:15
Polymorphic Processing, Operator instanceof and Downcasting
00:22:03
final Methods and Classes
00:06:34
Creating and Using Interfaces (Java SE 7 and earlier)
00:06:32
Developing a Payable Hierarchy
00:05:02
Class Invoice
00:04:36
Modifying Class Employee to Implement Interface Payable
00:03:30
Modifying Class SalariedEmployee for Use in the Payable Hierarchy
00:02:14
Using Interface Payable to Process Invoices and Employees Polymorphically
00:12:27
Java SE 8 Interface Enhancements overview
00:08:15
Lesson 11: Exception Handling–A Deeper Look
Introduction
00:03:57
Integer division without exception handling
00:09:34
Handling ArithmeticExceptions and InputMismatchExceptions
00:15:27
Throwable hierarchy; Introduction to checked and unchecked exceptions
00:06:35
try…catch…finally exception-handling mechanism
00:10:06
Stack unwinding and obtaining data from an exception object
00:08:28
Chained exceptions
00:06:01
Declaring new exception types
00:04:42
Checking with assert that a value is within range
00:05:25
try-with-Resources: Automatic Resource Deallocation
00:03:44
Lesson 12: GUI Components: Part 1
Introduction
00:03:01
Using Java’s Nimbus Look-and-Feel
00:03:44
Simple GUI-Based Input/Output with JOptionPane
00:10:25
Common superclasses of the lightweight Swing components
00:04:39
Displaying Text and Images in a Window
00:25:25
Text Fields and an Introduction to Event Handling with the ActionListener interface Nested Classes
00:27:58
Common GUI Event Types and Listener Interfaces
00:11:17
How Event Handling Works
00:04:50
JButton
00:16:53
Buttons That Maintain State: JCheckBox and the ItemListener interface
00:06:53
Buttons That Maintain State: JRadioButton and the ItemListener interface
00:09:08
JComboBox and the ItemListener interface; Using an Anonymous Inner Class for Event Handling
00:14:20
JList and the ListSelectionListener interface
00:12:40
Multiple-Selection Lists
00:06:58
Mouse Event Handling with the MousListener and MouseMotionListener interfaces
00:20:56
Adapter Classes in Event Handling: Mouse Event Handling with the MouseAdapter class
00:09:36
Custom JPanels
00:10:27
Key Event Handling
00:09:39
FlowLayout
00:03:45
BorderLayout
00:05:57
GridLayout
00:04:52
Using Panels to Manage More Complex Layouts
00:03:09
JTextArea and JScrollPane
00:06:37
Lesson 13: Graphics and Java 2D
Introduction
00:01:50
Color control: Drawing rectangles and strings in various colors
00:14:21
Choosing colors with JColorChooser
00:06:45
Displaying strings in different fonts and colors
00:04:50
FontMetrics and Graphics methods useful for obtaining font metrics
00:03:50
Drawing lines, rectangles and ovals
00:07:19
Drawing arcs with Graphics methods drawArc and fillArc
00:04:54
Drawing polygons with Graphics methods drawPolygon and fillPolygon
00:03:20
Demonstrating Java 2D shapes
00:21:24
Java 2D general paths and rotating/translating Java 2D shapes
00:06:41
Lesson 14: Strings, Characters and Regular Expressions
Introduction
00:01:27
String class constructors
00:03:08
String methods length, charAt and getChars
00:03:55
Comparing Strings: String methods equals, equalsIgnoreCase, compareTo and regionMatches
00:08:53
Comparing Strings: String methods startsWith and endsWith
00:02:12
String-searching methods indexOf and lastIndexOf
00:03:50
Extracting substrings from Strings: String class substring methods
00:01:40
String method concat
00:01:48
String methods replace, toLowerCase, toUpperCase, trim and toCharArray
00:03:40
String valueOf methods
00:02:20
StringBuilder constructors
00:02:37
StringBuilder length, setLength, capacity and ensureCapacity methods
00:03:06
StringBuilder methods charAt, setCharAt, getChars and reverse
00:02:50
StringBuilder append methods
00:03:21
StringBuilder methods insert, delete and deleteCharAt
00:02:18
Character static methods for testing characters and converting case
00:04:04
Character class static conversion methods
00:02:09
Character class instance methods
00:02:44
StringTokenizer object used to tokenize strings
00:01:39
Validating user input with regular expressions
00:10:46
String methods replaceFirst, replaceAll and split
00:06:12
Classes Pattern and Matcher
00:03:42
Lesson 15: Files, Streams and Object Serialization
Introduction
00:02:07
Obtaining file and directory information
00:11:53
Writing data to a sequential text file with class Formatter
00:12:55
Reading from a sequential text file using a Scanner
00:05:50
Credit-inquiry program
00:07:07
Creating a Sequential-Access File Using Object Serialization
00:15:04
Reading and Deserializing Data from a Sequential-Access File
00:05:34
Opening Files with JFileChooser
00:06:49
Part III
Java Fundamentals I, II, III, and IV LiveLessons: Introduction to Part III
00:13:28
Lesson 16: Generic Collections
Introduction
00:01:29
Manipulating lists with List, ArrayList, Collection and Iterator
00:17:32
Manipulating lists with List, LinkedList and ListIterator
00:12:58
Viewing arrays as Lists and converting Lists to arrays
00:05:31
Collections method sort
00:06:54
Collections method sort with a Comparator object
00:02:37
Collections method sort with a custom Comparator object
00:08:08
Card shuffling and dealing with Collections method shuffle
00:05:35
Collections methods reverse, fill, copy, max and min
00:05:32
Collections method binarySearch
00:04:15
Collections methods addAll, frequency and disjoint
00:04:04
HashSet used to remove duplicate values from an array of strings
00:04:35
Using SortedSets and TreeSets
00:04:34
Using a Map to count the number of occurrences of each word in a String
00:09:00
Lesson 17: Java SE 8 Lambdas and Streams
Introduction
00:05:41
Functional Programming
00:05:51
Functional Interfaces
00:02:47
Lambda Expressions
00:04:16
Streams
00:03:20
IntStream Operations: Creating an IntStream and Displaying Its Values with the forEach Terminal Operation
00:13:02
IntStream Operations: Terminal Operations count, min, max, sum and average
00:09:42
IntStream Operations: Terminal Operation reduce
00:06:49
IntStream Intermediate Operations: Filtering and Sorting IntStream Values
00:09:41
IntStream Intermediate Operation: Mapping
00:02:53
IntStream Operations: Creating Streams of ints with IntStream Methods range and rangeClosed
00:01:34
Stream<Integer> Manipulations
00:11:30
Stream<String> Manipulations
00:10:38
Stream<Employee> Manipulations: Creating and Displaying a List<Employee>
00:04:12
Stream<Employee> Manipulations: Filtering Employees with Salaries in a Specified Range
00:09:15
Stream<Employee> Manipulations: Sorting Employees By Multiple Fields
00:06:09
Stream<Employee> Manipulations: Mapping Employees to Unique Last Name Strings
00:04:38
Stream<Employee> Manipulations: Grouping Employees By Department
00:08:35
Stream<Employee> Manipulations: Counting the Number of Employees in Each Department
00:05:08
Stream<Employee> Manipulations: Summing and Averaging Employee Salaries
00:05:24
Creating a Stream<String> from a File
00:13:12
Generating Streams of Random Values: Rolling a die 6,000,000 times
00:09:25
Lambda Event Handlers
00:05:25
Additional Notes on Java SE 8 Interfaces
00:04:02
Lesson 18: Generic Classes and Methods
Introduction
00:02:46
Overloaded method that perform the exact same task for different types
00:04:43
Generic Methods: Implementation and Compile-Time Translation
00:06:13
Additional Compile-Time Translation Issues: Methods That Use a Type Parameter as the Return Type
00:17:13
Generic Classes: Implementing a Generic Stack Class
00:14:53
Creating Generic Methods to Test Class Stack<T>
00:06:41
Wildcards in Methods That Accept Type Parameters: Totaling the the numbers in an ArrayList<Number>
00:05:37
Wildcards in Methods That Accept Type Parameters: Implementing Method sum with a Wildcard Type Argument in Its Parameter
00:04:24
Lesson 19: GUI Components, Part 2
Introduction
00:01:23
JSlider
00:07:51
Using menus with JFrames
00:18:08
JPopupMenu
00:06:10
Pluggable look-and-feel
00:08:29
Multiple-document interfaces with JDesktopPane and JinternalFrame
00:09:37
JTabbedPane
00:04:41
BoxLayout layout manager
00:08:31
GridBagLayout Layout Manager
00:13:11
GridBagLayout Layout Manager: Using GridBagConstraints RELATIVE and REMAINDER
00:05:46
Lesson 20: Concurrency and Multi-core Progamming
Introduction
00:04:12
Concurrent programming overview
00:12:22
Thread States and Life Cycle
00:07:40
Creating and Executing Threads with the Executor Framework
00:18:09
Thread Synchronization Overview
00:07:16
Unsynchronized Mutable Data Sharing (Not thread safe)
00:14:32
Synchronized Mutable Data Sharing–Making Operations Atomic
00:06:11
Producer/Consumer Relationship without Synchronization (Not thread safe)
00:15:41
Producer/Consumer Relationship: ArrayBlockingQueue
00:12:53
(Advanced) Producer/Consumer Relationship with synchronized, wait, notify and notifyAll
00:21:54
(Advanced) Producer/Consumer Relationship: Bounded Buffers
00:13:38
(Advanced) Producer/Consumer Relationship: The Lock and Condition Interfaces
00:15:26
Performing Computations in a Worker Thread: Fibonacci Numbers
00:19:52
Processing Intermediate Results: Sieve of Eratosthenes
00:16:35
sort/parallelSort Timings with the Java SE 8 Date/Time API
00:08:37
Java SE 8: Sequential vs. Parallel Streams
00:08:13
Executing Aysnchronous Tasks with CompletableFuture–Fibonacci calculations performed synchronously and asynchronously
00:11:30
Lesson 21: Accessing Databases with JDBC
Introduction
00:01:20
Overview of relational database concepts
00:01:06
Overview of the books database
00:07:39
Basic SELECT Query
00:01:24
WHERE Clause
00:03:51
ORDER BY Clause
00:04:09
Merging Data from Multiple Tables: INNER JOIN
00:03:34
INSERT Statement
00:01:29
UPDATE Statement
00:02:09
DELETE Statement
00:02:16
Java DB Overview
00:05:03
Connecting to and Querying a Database
00:15:14
Querying the books Database: Test-Driving the Example
00:04:32
Querying the books Database: Implementing the TableModel interface to populate a JTable from a ResultSet
00:12:28
Querying the books Database: DisplayQueryResults class
00:08:24
RowSet Interface and JdbcRowSet class
00:05:50
PreparedStatements: Address book example
00:17:37
Lesson 22: Java FX, Part 1
Introduction
00:03:52
Tools Used in This Lesson: FXML, JavaFX Scene Builder and the NetBeans IDE
00:06:00
JavaFX App Window Structure
00:03:37
Welcome App–Displaying Text and an Image
00:03:46
Creating the App’s Project
00:04:21
NetBeans Projects Window–Viewing the Project Contents and Adding an Image to the Project
00:02:11
Opening JavaFX Scene Builder from NetBeans and Preparing to Build the Welcome App
00:05:24
Changing to a VBox Layout Container and Configuring the Layout
00:03:04
Adding and Configuring a Label
00:02:28
Adding and Configuring an ImageView and Running the App
00:05:07
Welcome.java–Creating the GUI from the FXML file
00:03:41
Tip Calculator App Test Drive–Introduction to Event Handling
00:01:55
Tip Calculator Technologies Overview
00:06:01
Building the Tip Calculator App’s GUI: fx:id values for the app’s controls
00:03:28
Building the Tip Calculator App’s GUI: Creating the project
00:01:31
Building the Tip Calculator App’s GUI, Step 1: Changing the Root Layout from an AnchorPane to a GridPane
00:02:21
Building the Tip Calculator App’s GUI, Step 3: Adding the Controls to the GridPane
00:05:02
Building the Tip Calculator App’s GUI, Step 4: Right-Aligning GridPane Column 0‚Äôs Contents
00:00:49
Building the Tip Calculator App’s GUI, Step 5: Sizing the GridPane Columns to Fit Their Contents
00:00:57
Building the Tip Calculator App’s GUI, Step 7: Sizing the Button and Previewing the GUI
00:01:48
Building the Tip Calculator App’s GUI, Step 8: Configuring the GridPane‚Äôs Padding and Horizontal Gap Between Its Columns
00:03:15
Building the Tip Calculator App’s GUI, Step 9: Making the tipTextField and totalTextField Uneditable and Not Focusable
00:02:14
Building the Tip Calculator App’s GUI, Step 10: Setting the Slider‚Äôs Properties and Previewing the Final Layout
00:01:58
TipCalculator Subclass of Application
00:07:31
TipCalculatorController Class: import Statements
00:02:58
TipCalculatorController Class: static Variables and Instance Variables
00:04:27
TipCalculatorController Class: calculateButtonPressed Event Handler
00:04:02
TipCalculatorController Class: initalize Method
00:08:01
Lesson 23: Java FX GUI: Part 2
Lesson Introduction
00:03:19
NetBeans and JavaFX Scene Builder Downloads
00:00:49
Laying Out Nodes in a Scene Graph
00:05:09
Painter App: Technologies Overview
00:05:03
Painter App: Creating the Project and Building the GUI
00:17:21
Painter App: Painter Subclass of Application
00:01:45
Painter App: PainterController Class
00:11:37
Color Chooser App: Technologies Overview
00:05:02
Color Chooser App: GUI Overview
00:04:12
Color Chooser App: ColorChooser and ColorChooserController classes
00:07:46
Cover Viewer App: Technologies Overview
00:03:13
Cover Viewer App: Adding the Images and the Book class; GUI Overview
00:04:16
Cover Viewer App: CoverViewer and CoverViewerController classes
00:06:06
Cover Viewer App: Customizing ListView Cells Technologies Overview
00:02:38
Cover Viewer App: Copying the Project
00:01:40
Cover Viewer App: ImageTextCell Custom Cell Factory Class
00:08:22
Cover Viewer App: CoverViewerController Class
00:02:21