Contents

Preface

Before You Begin

1 Introduction to Android

1.1 Introduction

1.2 Android—The World’s Leading Mobile Operating System

1.3 Android Features

1.4 Android Operating System

1.4.1 Android 2.2 (Froyo)

1.4.2 Android 2.3 (Gingerbread)

1.4.3 Android 3.0 through 3.2 (Honeycomb)

1.4.4 Android 4.0 through 4.0.4 (Ice Cream Sandwich)

1.4.5 Android 4.1–4.3 (Jelly Bean)

1.4.6 Android 4.4 (KitKat)

1.5 Downloading Apps from Google Play

1.6 Packages

1.7 Android Software Development Kit (SDK)

1.8 Object-Oriented Programming: A Quick Refresher

1.8.1 The Automobile as an Object

1.8.2 Methods and Classes

1.8.3 Instantiation

1.8.4 Reuse

1.8.5 Messages and Method Calls

1.8.6 Attributes and Instance Variables

1.8.7 Encapsulation

1.8.8 Inheritance

1.8.9 Object-Oriented Analysis and Design (OOAD)

1.9 Test-Driving the Doodlz App in an Android Virtual Device (AVD)

1.9.1 Running the Doodlz App in the Nexus 4 Smartphone AVD

1.9.2 Running the Doodlz App in a Tablet AVD

1.9.3 Running the Doodlz App on an Android Device

1.10 Building Great Android Apps

1.11 Android Development Resources

1.12 Wrap-Up

2 Welcome App

Dive-Into® the Android Developer Tools: Introducing Visual GUI Design, Layouts, Accessibility and Internationalization

2.1 Introduction

2.2 Technologies Overview

2.2.1 Android Developer Tools IDE

2.2.2 TextViews and ImageViews

2.2.3 App Resources

2.2.4 Accessibility

2.2.5 Internationalization

2.3 Creating an App

2.3.1 Launching the Android Developer Tools IDE

2.3.2 Creating a New Project

2.3.3 New Android Application Dialog

2.3.4 Configure Project Step

2.3.5 Configure Launcher Icon Step

2.3.6 Create Activity Step

2.3.7 Blank Activity Step

2.4 Android Developer Tools Window

2.4.1 Package Explorer Window

2.4.2 Editor Windows

2.4.3 Outline Window

2.4.4 App Resource Files

2.4.5 Graphical Layout Editor

2.4.6 The Default GUI

2.5 Building the App’s GUI with the Graphical Layout Editor

2.5.1 Adding Images to the Project

2.5.2 Changing the Id Property of the RelativeLayout and the TextView

2.5.3 Configuring the TextView

2.5.4 Adding ImageViews to Display the Images

2.6 Running the Welcome App

2.7 Making Your App Accessible

2.8 Internationalizing Your App

2.9 Wrap-Up

3 Tip Calculator App

Introducing GridLayout, LinearLayout, EditText, SeekBar, Event Handling, NumberFormat and Defining App Functionality with Java

3.1 Introduction

3.2 Test-Driving the Tip Calculator App

3.3 Technologies Overview

3.3.1 Class Activity

3.3.2 Activity Lifecycle Methods

3.3.3 Arranging Views with LinearLayout and GridLayout

3.3.4 Creating and Customizing the GUI with the Graphical Layout Editor and the Outline and Properties Windows

3.3.5 Formatting Numbers as Locale-Specific Currency and Percentage Strings

3.3.6 Implementing Interface TextWatcher for Handling EditText Text Changes

3.3.7 Implementing Interface OnSeekBarChangeListener for Handling SeekBar Thumb Position Changes

3.3.8 AndroidManifest.xml

3.4 Building the App’s GUI

3.4.1 GridLayout Introduction

3.4.2 Creating the TipCalculator Project

3.4.3 Changing to a GridLayout

3.4.4 Adding the TextViews, EditText, SeekBar and LinearLayouts

3.4.5 Customizing the Views to Complete the Design

3.5 Adding Functionality to the App

3.6 AndroidManifest.xml

3.7 Wrap-Up

4 Twitter® Searches App

SharedPreferences, Collections, ImageButton, ListView, ListActivity, ArrayAdapter, Implicit Intents and AlertDialogs

4.1 Introduction

4.2 Test-Driving the App

4.2.1 Importing the App and Running It

4.2.2 Adding a Favorite Search

4.2.3 Viewing Twitter Search Results

4.2.4 Editing a Search

4.2.5 Sharing a Search

4.2.6 Deleting a Search

4.2.7 Scrolling Through Saved Searches

4.3 Technologies Overview

4.3.1 ListView

4.3.2 ListActivity

4.3.3 Customizing a ListActivity’s Layout

4.3.4 ImageButton

4.3.5 SharedPreferences

4.3.6 Intents for Launching Other Activities

4.3.7 AlertDialog

4.3.8 AndroidManifest.xml

4.4 Building the App’s GUI

4.4.1 Creating the Project

4.4.2 activity_main.xml Overview

4.4.3 Adding the GridLayout and Components

4.4.4 Graphical Layout Editor Toolbar

4.4.5 ListView Item’s Layout: list_item.xml

4.5 Building the MainActivity Class

4.5.1 package and import Statements

4.5.2 Extending ListActivity

4.5.3 Fields of Class MainActivity

4.5.4 Overriding Activity Method onCreate

4.5.5 Anonymous Inner Class That Implements the saveButton’s OnClickListener to Save a New or Updated Search

4.5.6 addTaggedSearch Method

4.5.7 Anonymous Inner Class That Implements the ListView’s OnItemClickListener to Display Search Results

4.5.8 Anonymous Inner Class That Implements the ListView’s OnItemLongClickListener to Share, Edit or Delete a Search

4.5.9 shareSearch Method

4.5.10 deleteSearch Method

4.6 AndroidManifest.xml

4.7 Wrap-Up

5 Flag Quiz App

Fragments, Menus, Preferences, AssetManager, Tweened Animations, Handler, Toasts, Explicit Intents, Layouts for Multiple Device Orientations

5.1 Introduction

5.2 Test-Driving the Flag Quiz App

5.2.1 Importing the App and Running It

5.2.2 Configuring the Quiz

5.2.3 Taking the Quiz

5.3 Technologies Overview

5.3.1 Menus

5.3.2 Fragments

5.3.3 Fragment Lifecycle Methods

5.3.4 Managing Fragments

5.3.5 Preferences

5.3.6 assets Folder

5.3.7 Resource Folders

5.3.8 Supporting Different Screen Sizes and Resolutions

5.3.9 Determining the Screen Size

5.3.10 Toasts for Displaying Messages

5.3.11 Using a Handler to Execute a Runnable in the Future

5.3.12 Applying an Animation to a View

5.3.13 Logging Exception Messages

5.3.14 Using an Explicit Intent to Launch Another Activity in the Same App

5.3.15 Java Data Structures

5.4 Building the GUI and Resource Files

5.4.1 Creating the Project

5.4.2 strings.xml and Formatted String Resources

5.4.3 arrays.xml

5.4.4 colors.xml

5.4.5 dimens.xml

5.4.6 activity_settings.xml Layout

5.4.7 activity_main.xml Layout for Phone and Tablet Portrait Orientation

5.4.8 fragment_quiz.xml Layout

5.4.9 activity_main.xml Layout for Tablet Landscape Orientation

5.4.10 preferences.xml for Specifying the App’s Settings

5.4.11 Creating the Flag Shake Animation

5.5 MainActivity Class

5.5.1 package Statement, import Statements and Fields

5.5.2 Overridden Activity Method onCreate

5.5.3 Overridden Activity Method onStart

5.5.4 Overridden Activity Method onCreateOptionsMenu

5.5.5 Overridden Activity Method onOptionsItemSelected

5.5.6 Anonymous Inner Class That Implements OnSharedPreferenceChangeListener

5.6 QuizFragment Class

5.6.1 package Statement and import Statements

5.6.2 Fields

5.6.3 Overridden Fragment Method onCreateView

5.6.4 Method updateGuessRows

5.6.5 Method updateRegions

5.6.6 Method resetQuiz

5.6.7 Method loadNextFlag

5.6.8 Method getCountryName

5.6.9 Anonymous Inner Class That Implements OnClickListener

5.6.10 Method disableButtons

5.7 SettingsFragment Class

5.8 SettingsActivity Class

5.9 AndroidManifest.xml

5.10 Wrap-Up

6 Cannon Game App

Listening for Touches, Manual Frame-By-Frame Animation, Graphics, Sound, Threading, SurfaceView and SurfaceHolder

6.1 Introduction

6.2 Test-Driving the Cannon Game App

6.3 Technologies Overview

6.3.1 Attaching a Custom View to a Layout

6.3.2 Using the Resource Folder raw

6.3.3 Activity and Fragment Lifecycle Methods

6.3.4 Overriding View Method onTouchEvent

6.3.5 Adding Sound with SoundPool and AudioManager

6.3.6 Frame-by-Frame Animation with Threads, SurfaceView and SurfaceHolder

6.3.7 Simple Collision Detection

6.3.8 Drawing Graphics Using Paint and Canvas

6.4 Building the App’s GUI and Resource Files

6.4.1 Creating the Project

6.4.2 strings.xml

6.4.3 fragment_game.xml

6.4.4 activity_main.xml

6.4.5 Adding the Sounds to the App

6.5 Class Line Maintains a Line’s Endpoints

6.6 MainActivity Subclass of Activity

6.7 CannonGameFragment Subclass of Fragment

6.8 CannonView Subclass of View

6.8.1 package and import Statements

6.8.2 Instance Variables and Constants

6.8.3 Constructor

6.8.4 Overriding View Method onSizeChanged

6.8.5 Method newGame

6.8.6 Method updatePositions

6.8.7 Method fireCannonball

6.8.8 Method alignCannon

6.8.9 Method drawGameElements

6.8.10 Method showGameOverDialog

6.8.11 Methods stopGame and releaseResources

6.8.12 Implementing the SurfaceHolder.Callback Methods

6.8.13 Overriding View Method onTouchEvent

6.8.14 CannonThread: Using a Thread to Create a Game Loop

6.9 Wrap-Up

7 Doodlz App

Two-Dimensional Graphics, Canvas, Bitmap, Accelerometer, SensorManager, Multitouch Events, MediaStore, Printing, Immersive Mode

7.1 Introduction

7.2 Technologies Overview

7.2.1 Using SensorManager to Listen for Accelerometer Events

7.2.2 Custom DialogFragments

7.2.3 Drawing with Canvas and Bitmap

7.2.4 Processing Multiple Touch Events and Storing Lines in Paths

7.2.5 Android 4.4 Immersive Mode

7.2.6 GestureDetector and SimpleOnGestureListener

7.2.7 Saving the Drawing to the Device’s Gallery

7.2.8 Android 4.4 Printing and the Android Support Library’s PrintHelper Class

7.3 Building the App’s GUI and Resource Files

7.3.1 Creating the Project

7.3.2 strings.xml

7.3.3 dimens.xml

7.3.4 Menu for the DoodleFragment

7.3.5 activity_main.xml Layout for MainActivity

7.3.6 fragment_doodle.xml Layout for DoodleFragment

7.3.7 fragment_color.xml Layout for ColorDialogFragment

7.3.8 fragment_line_width.xml Layout for LineWidthDialogFragment

7.3.9 Adding Class EraseImageDialogFragment

7.4 MainActivity Class

7.5 DoodleFragment Class

7.6 DoodleView Class

7.7 ColorDialogFragment Class

7.8 LineWidthDialogFragment Class

7.9 EraseImageDialogFragment Class

7.10 Wrap-Up

8 Address Book App

ListFragment, FragmentTransactions and the Fragment Back Stack, Threading and AsyncTasks, CursorAdapter, SQLite and GUI Styles

8.1 Introduction

8.2 Test-Driving the Address Book App

8.3 Technologies Overview

8.3.1 Displaying Fragments with FragmentTransactions

8.3.2 Communicating Data Between a Fragment and a Host Activity

8.3.3 Method onSaveInstanceState

8.3.4 Defining Styles and Applying Them to GUI Components

8.3.5 Specifying a Background for a TextView

8.3.6 Extending Class ListFragment to Create a Fragment That Contains a ListView

8.3.7 Manipulating a SQLite Database

8.3.8 Performing Database Operations Outside the GUI Thread with AsyncTasks

8.4 Building the GUI and Resource Files

8.4.1 Creating the Project

8.4.2 Creating the App’s Classes

8.4.3 strings.xml

8.4.4 styles.xml

8.4.5 textview_border.xml

8.4.6 MainActivity’s Layout: activity_main.xml

8.4.7 DetailsFragment’s Layout: fragment_details.xml

8.4.8 AddEditFragment’s Layout: fragment_add_edit.xml

8.4.9 Defining the Fragments’ Menus

8.5 MainActivity Class

8.6 ContactListFragment Class

8.7 AddEditFragment Class

8.8 DetailsFragment Class

8.9 DatabaseConnector Utility Class

8.10 Wrap-Up

9 Google Play and App Business Issues

9.1 Introduction

9.2 Preparing Your Apps for Publication

9.2.1 Testing Your App

9.2.2 End User License Agreement

9.2.3 Icons and Labels

9.2.4 Versioning Your App

9.2.5 Licensing to Control Access to Paid Apps

9.2.6 Obfuscating Your Code

9.2.7 Getting a Private Key for Digitally Signing Your App

9.2.8 Screenshots

9.2.9 Promotional App Video

9.3 Pricing Your App: Free or Fee

9.3.1 Paid Apps

9.3.2 Free Apps

9.4 Monetizing Apps with In-App Advertising

9.5 Monetizing Apps: Using In-App Billing to Sell Virtual Goods

9.6 Registering at Google Play

9.7 Setting Up a Google Wallet Merchant Account

9.8 Uploading Your Apps to Google Play

9.9 Launching the Play Store from Within Your App

9.10 Managing Your Apps in Google Play

9.11 Other Android App Marketplaces

9.12 Other Popular Mobile App Platforms

9.13 Marketing Your Apps

9.14 Wrap-Up

A Introduction to Java Applications

A.1 Introduction

A.2 Your First Program in Java: Printing a Line of Text

A.3 Modifying Your First Java Program

A.4 Displaying Text with printf

A.5 Another Application: Adding Integers

A.6 Memory Concepts

A.7 Arithmetic

A.8 Decision Making: Equality and Relational Operators

A.9 Wrap-Up

B Introduction to Classes, Objects, Methods and Strings

B.1 Introduction

B.2 Declaring a Class with a Method and Instantiating an Object of a Class

B.3 Declaring a Method with a Parameter

B.4 Instance Variables, set Methods and get Methods

B.5 Primitive Types vs. Reference Types

B.6 Initializing Objects with Constructors

B.7 Floating-Point Numbers and Type double

B.8 Wrap-Up

C Control Statements

C.1 Introduction

C.2 Algorithms

C.3 Pseudocode

C.4 Control Structures

C.5 if Single-Selection Statement

C.6 if...else Double-Selection Statement

C.7 while Repetition Statement

C.8 Case Study: Counter-Controlled Repetition

C.9 Case Study: Sentinel-Controlled Repetition

C.10 Case Study: Nested Control Statements

C.11 Compound Assignment Operators

C.12 Increment and Decrement Operators

C.13 Primitive Types

C.14 Essentials of Counter-Controlled Repetition

C.15 for Repetition Statement

C.16 Examples Using the for Statement

C.17 do...while Repetition Statement

C.18 switch Multiple-Selection Statement

C.19 break and continue Statements

C.20 Logical Operators

C.21 Wrap-Up

D Methods: A Deeper Look

D.1 Introduction

D.2 Program Modules in Java

D.3 static Methods, static Fields and Class Math

D.4 Declaring Methods with Multiple Parameters

D.5 Notes on Declaring and Using Methods

D.6 Method-Call Stack and Activation Records

D.7 Argument Promotion and Casting

D.8 Java API Packages

D.9 Introduction to Random-Number Generation

D.9.1 Scaling and Shifting of Random Numbers

D.9.2 Random-Number Repeatability for Testing and Debugging

D.10 Case Study: A Game of Chance; Introducing Enumerations

D.11 Scope of Declarations

D.12 Method Overloading

D.13 Wrap-Up

E Arrays and ArrayLists

E.1 Introduction

E.2 Arrays

E.3 Declaring and Creating Arrays

E.4 Examples Using Arrays

E.5 Case Study: Card Shuffling and Dealing Simulation

E.6 Enhanced for Statement

E.7 Passing Arrays to Methods

E.8 Case Study: Class GradeBook Using an Array to Store Grades

E.9 Multidimensional Arrays

E.10 Case Study: Class GradeBook Using a Two-Dimensional Array

E.11 Class Arrays

E.12 Introduction to Collections and Class ArrayList

E.13 Wrap-Up

F Classes and Objects: A Deeper Look

F.1 Introduction

F.2 Time Class Case Study

F.3 Controlling Access to Members

F.4 Referring to the Current Object’s Members with the this Reference

F.5 Time Class Case Study: Overloaded Constructors

F.6 Default and No-Argument Constructors

F.7 Composition

F.8 Enumerations

F.9 Garbage Collection

F.10 static Class Members

F.11 final Instance Variables

F.12 Packages

F.13 Package Access

F.14 Wrap-Up

G Object-Oriented Programming: Inheritance and Polymorphism

G.1 Introduction to Inheritance

G.2 Superclasses and Subclasses

G.3 protected Members

G.4 Relationship between Superclasses and Subclasses

G.4.1 Creating and Using a CommissionEmployee Class

G.4.2 Creating and Using a BasePlusCommissionEmployee Class

G.4.3 Creating a CommissionEmployeeBasePlusCommissionEmployee Inheritance Hierarchy

G.4.4 CommissionEmployeeBasePlusCommissionEmployee Inheritance Hierarchy Using protected Instance Variables

G.4.5 CommissionEmployeeBasePlusCommissionEmployee Inheritance Hierarchy Using private Instance Variables

G.5 Class Object

G.6 Introduction to Polymorphism

G.7 Polymorphism: An Example

G.8 Demonstrating Polymorphic Behavior

G.9 Abstract Classes and Methods

G.10 Case Study: Payroll System Using Polymorphism

G.10.1 Abstract Superclass Employee

G.10.2 Concrete Subclass SalariedEmployee

G.10.3 Concrete Subclass HourlyEmployee

G.10.4 Concrete Subclass CommissionEmployee

G.10.5 Indirect Concrete Subclass BasePlusCommissionEmployee

G.10.6 Polymorphic Processing, Operator instanceof and Downcasting

G.10.7 Summary of the Allowed Assignments Between Superclass and Subclass Variables

G.11 final Methods and Classes

G.12 Case Study: Creating and Using Interfaces

G.12.1 Developing a Payable Hierarchy

G.12.2 Interface Payable

G.12.3 Class Invoice

G.12.4 Modifying Class Employee to Implement Interface Payable

G.12.5 Modifying Class SalariedEmployee for Use in the Payable Hierarchy

G.12.6 Using Interface Payable to Process Invoices and Employees Polymorphically

G.13 Common Interfaces of the Java API

G.14 Wrap-Up

H Exception Handling: A Deeper Look

H.1 Introduction

H.2 Example: Divide by Zero without Exception Handling

H.3 Example: Handling ArithmeticExceptions and InputMismatchExceptions

H.4 When to Use Exception Handling

H.5 Java Exception Hierarchy

H.6 finally Block

H.7 Stack Unwinding and Obtaining Information from an Exception Object

H.8 Wrap-Up

I GUI Components and Event Handling

I.1 Introduction

I.2 Nimbus Look-and-Feel

I.3 Text Fields and an Introduction to Event Handling with Nested Classes

I.4 Common GUI Event Types and Listener Interfaces

I.5 How Event Handling Works

I.6 JButton

I.7 JComboBox; Using an Anonymous Inner Class for Event Handling

I.8 Adapter Classes

I.9 Wrap-Up

J Other Java Topics

J.1 Introduction

J.2 Collections Overview

J.3 Type-Wrapper Classes for Primitive Types

J.4 Interface Collection and Class Collections

J.5 Lists

J.5.1 ArrayList and Iterator

J.5.2 LinkedList

J.5.3 Views into Collections and Arrays Method asList

J.6 Collections Methods

J.6.1 Method sort

J.6.2 Method shuffle

J.7 Interface Queue

J.8 Sets

J.9 Maps

J.10 Introduction to Files and Streams

J.11 Class File

J.12 Introduction to Object Serialization

J.13 Introduction to Multithreading

J.14 Creating and Executing Threads with the Executor Framework

J.15 Overview of Thread Synchronization

J.16 Concurrent Collections Overview

J.17 Multithreading with GUI

J.18 Wrap-Up

K Operator Precedence Chart

L Primitive Types

Index

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.12.146.236