(see also Accessibility Scanner, Explore by Touch, TalkBack)
android:contentDescription attribute, Adding content descriptions
android:focusable attribute, Making a widget focusable
color contrast and, For the More Curious: Using Accessibility Scanner
someView.setContentDescription(someString) method, Creating a Comparable Experience
accessibility focus, TalkBackfor touch targets, For the More Curious: Using Accessibility Scanner
(see also Activity class, fragments)
about, App Basics
abstract fragment-hosting activity, An abstract Activity class
adding to project, Your Second Activity
as controllers, Model-View-Controller and Android
back stack of, How Android Sees Your Activities, Tasks and the Back Stack
base, Tasks and the Back Stack
child, Your Second Activity, Getting a result back from a child activity
creating new, Creating a new activity
fragment transactions and, Activity: Fragment Boss
handling configuration changes in, Proper Rotation with WebView
hosting fragments, Starting CriminalIntent, Hosting a UI Fragment
label (display name), Resolving an Implicit Intent
launcher, How Android Sees Your Activities
lifecycle and fragments, The FragmentManager and the fragment lifecycle
lifecycle diagram, The Activity Lifecycle, Revisited
lifecycle of, The Activity Lifecycle, Rotation and the Activity Lifecycle, The Activity Lifecycle, Revisited
managing fragments, Activity: Fragment Boss
overriding methods, The Activity Lifecycle, Making log messages
passing data between, Passing Data Between Activities
rotation and, Rotation and the Activity Lifecycle
stack of, How Android Sees Your Activities
starting from fragments, Starting an Activity from a Fragment
starting in current task, Tasks and the Back Stack
starting in new task, Starting a new task
states of, The Activity Lifecycle, The Activity Lifecycle, Revisited
tasks and, Tasks and the Back Stack
Activity classUI flexibility and, The Need for UI Flexibility
as Context subclass, Making Toasts
getIntent(), Using intent extras, Retrieving an extra
lifecycle methods, The Activity Lifecycle
onActivityResult(…), Sending back an intent
onCreate(Bundle), The Activity Lifecycle, Making log messages
onCreateOptionsMenu(Menu), Creating the menu
onDestroy(), The Activity Lifecycle
onPause(), The Activity Lifecycle
onResume(), The Activity Lifecycle, Reloading the List
onSaveInstanceState(Bundle), Saving Data Across Rotation
onStart(), The Activity Lifecycle
onStop(), The Activity Lifecycle
setContentView(…) method, From Layout XML to View Objects
setResult(…), Setting a result
startActivity(Intent), Starting an Activity
activity record, The Activity Lifecycle, RevisitedstartActivityForResult(…), Getting a result back from a child activity
back stack, How Android Sees Your Activities
ActivityNotFoundException, Communicating with intentsstarting activities, Starting an Activity, Communicating with intents, Explicit and implicit intents, Sending back an intent
about, Adapters
adb (Android Debug Bridge) driver, Connecting your deviceimplementing, Implementing a ViewHolder and an Adapter
about, Dialogs
AlertDialog.Builder classwrapping in DialogFragment, Creating a DialogFragment
about, Creating a DialogFragment
create(), Creating a DialogFragment
setPositiveButton(…), Creating a DialogFragment
setTitle(int), Creating a DialogFragment
alias resources, Using an alias resourcesetView(…), Setting a dialog’s contents
as static analyzer, Using Android Lint
compatibility and, Adding code from later APIs safely
Android SDK Manager, Downloading Earlier SDK Versionsrunning, Using Android Lint
adding dependencies in, Adding dependencies in Android Studio
AppCompat theme, Modifying the theme
build process, For the More Curious: Android Build Process
code completion, Using code completion
code style preferences, Generating getters and setters
creating new classes, Creating a New Class
creating new projects, Creating an Android Project
debugger
(see also debugging)
devices view, Configuring your device for development
editor, Navigating in Android Studio
Emulator Control, Mock location data
extracting a method with, Sending data to the target fragment
generating getter and setter methods, Generating getters and setters
graphical layout tool, Using the Graphical Layout Tool, Testing Alternative Resources
installing, Downloading and Installing Android Studio
preferences, Generating getters and setters
project tool window, Navigating in Android Studio
project window, Navigating in Android Studio
run configurations, Data Binding Callbacks
tool windows, Navigating in Android Studio
Android versions (see SDK versions)variables view, Setting breakpoints
about, Property Animation
android.view.animation package, Legacy animation tools
interpolation, Simple Property Animation
property animation vs transitions framework, Transitions
running multiple animators, Playing Animators Together
simple property animation, Simple Property Animation
transformation properties and (see transformation properties)
transitions framework, Transitions
animation tools, Animation Toolstranslation, Simple Property Animation
maps, Getting a Maps API Key
API levels (see SDK versions)when working with teams, For the More Curious: Teams and API Keys
app namespace, The app namespace
themes in, Modifying the theme
AppCompatActivity class, From Layout XML to View Objectstoolbars with, AppCompat
accessing, Accessing Assets
importing, Importing Assets
managing, Getting At Assets
presenting to user, Wiring Up Assets for Use
AsyncTask classvs resources, Importing Assets, For the More Curious: Why Assets, Not Resources
cancel(boolean), Cleaning Up AsyncTasks
doInBackground(…), Using AsyncTask to Run on a Background Thread
for running on background thread, Using AsyncTask to Run on a Background Thread
HandlerThread vs, For the More Curious: AsyncTasks vs Threads
onPostExecute(…), From AsyncTask Back to the Main Thread
onProgressUpdate(…), For the More Curious: More on AsyncTask
AsyncTaskLoader class, For the More Curious: Alternatives to AsyncTaskpublishProgress(…), For the More Curious: More on AsyncTask
dedicated, Downloading Lots of Small Things
updating UI from, From AsyncTask Back to the Main Thread
BaseObservable class, Observable datausing AsyncTask for, Using AsyncTask to Run on a Background Thread, Beyond the main thread
(see also debugging)
exception, Using exception breakpoints
broadcast intentssetting, Setting breakpoints
permissions and, Limiting broadcasts to your app using private permissions
registered in code, Creating and registering a dynamic receiver
regular intents vs, Regular Intents vs Broadcast Intents
broadcast receiverssending, Sending broadcast intents
implementing, Creating and registering a standalone receiver
intent filters and, Regular Intents vs Broadcast Intents
long-running tasks and, Receivers and Long-Running Tasks
permissions and, Limiting broadcasts to your app using private permissions
standalone, Creating and registering a standalone receiver
build errors, Issues with the R classuses for, Using receivers
build process, For the More Curious: Android Build Process(see also debugging)
for stashing objects, Rotation and Object Continuity
for fragment arguments, Fragment Arguments
in onCreate(Bundle), Saving Data Across Rotation
in onSaveInstanceState(Bundle), Saving Data Across Rotation
putCharSequence(…);, Fragment Arguments
putInt(…);, Fragment Arguments
Button classputSerializable(…), Fragment Arguments
example, Laying Out the UI
vs ImageButton, Challenge: From Button to ImageButton
buttonsinheritance, Challenge: From Button to ImageButton
(see also Button class, ImageButton class)
9-patch images for, For the More Curious: 9-Patch Images
adding icons to, Referencing resources in XML
adding IDs, Resources and resource IDs
drawables for, XML Drawables
floating action, Floating action buttons
modifying attributes, Modifying Button Attributes
positive, negative, and neutral, Creating a DialogFragment
about, Taking Pictures with Intents
firing intent, Firing the intent
layouts for, A Place for Your Photo
CameraUpdate class, Working with Your Maptaking pictures with intents, Using a Camera Intent
for animation, Color evaluation
color resources, adding, Color Resourcesthemes and, Adding Theme Colors
Android Lint and, Adding code from later APIs safely
fragments and, Two types of fragments
importance of, Code Style, Android SDK Versions
minimum SDK version and, Minimum SDK version
with support libraries, Two types of fragments
using conditional code for, Adding code from later APIs safely
compile SDK version, Compile SDK versionwrapping code for, Adding code from later APIs safely
about, Creating a landscape layout
for language, Localizing Resources
listed, Configuration Qualifiers
multiple, Multiple qualifiers
precedence of, Prioritizing alternative resources
for screen density, Adding an Icon, Screen density works differently
for screen orientation, Creating a landscape layout
ConnectivityManager class, Safe background networkingfor screen size, Creating tablet alternatives, For the More Curious: More on Determining Device Size
about, Introducing ConstraintLayout
constraintsconverting layout to use, Using ConstraintLayout
about, Introducing ConstraintLayout
adding in graphical editor, Adding widgets
removing, The graphical editor
contactswarnings when insufficient, The graphical editor
getting data from, Getting the data from the contact list
container view IDs, Fragment transactionspermissions for, Contacts permissions
AssetManager, Getting At Assets
basic file and directory methods in, File Storage
explicit intents and, Communicating with intents
for opening database files, Building Your Initial Database
getSharedPreferences(…), Simple Persistence with Shared Preferences
references to, For the More Curious: The Application Context
Context.MODE_WORLD_READABLE, File Storageresource IDs and, Making Toasts
class naming, Creating an Android Project
extra naming, Using intent extras
package naming, Creating an Android Project
create() method (AlertDialog.Builder), Creating a DialogFragmentvariable naming, Wiring Up Widgets, Generating getters and setters
?? (null coalescing) operator in, More syntactic sugar
@{} operator, Binding to Data, Binding to a ViewModel
and application architecture, Binding to Data
and view models, Binding to a ViewModel
binding adapters, BindingAdapters
binding classes, Simple data binding
enabling, Simple data binding
lambda expressions, Lambda expressions
/data/data directory, SQLite Databasesobservable data, Observable data
(see also Android Lint)
about, Debugging Android Apps
build errors, Issues with the R class
crash, Exceptions and Stack Traces
crash on unconnected device, Exceptions and Stack Traces
database issues, Debugging database issues
misbehaviors, Diagnosing misbehaviors
online help for, Issues with the R class
running app with debugger, Setting breakpoints
stopping debugger, Setting breakpoints
using breakpoints, Setting breakpoints
DEFAULT (Intent), Using NerdLauncher as a Home Screenwhen working with teams, For the More Curious: Teams and API Keys
configuring language settings, Localizing Resources
hardware, Running on the Emulator
devices view, Configuring your device for developmentvirtual, Running on the Emulator, Two-Pane Master-Detail Interfaces
about, Creating a DialogFragment
onCreateDialog(Bundle), Creating a DialogFragment
dialogs, Dialogsshow(…), Showing a DialogFragment
9-patch images, For the More Curious: 9-Patch Images
layer list, Layer List Drawables
referencing, Referencing resources in XML
shape, Shape Drawables
state list, State List Drawables
drawingXML drawables, XML Drawables
Canvas, Rendering Inside onDraw(Canvas)
in onDraw(Canvas), Rendering Inside onDraw(Canvas)
creating a virtual device for, Running on the Emulator
for location testing, Play Services and Location Testing on Emulators
installing, Downloading Earlier SDK Versions
rotating, Referencing resources in XML
running on, Running on the Emulator
search queries on, Responding to SearchView user interactions
Emulator Control (Android Studio), Mock location datafor tablets, Two-Pane Master-Detail Interfaces
escape sequence (in string), Updating the View Layer(see also debugging)
creating, Communicating with intents
creating at runtime, Creating Explicit Intents at Runtime
implicit intents vs, Implicit Intents
Explore by Touch, Explore by Touchpurpose, Explicit and implicit intents
about, Using intent extras
fragments retrieving from activity, Retrieving an extra
as key-value pairs, Using intent extras
naming, Using intent extras
putting, Using intent extras
retrieving, Using intent extras
structure of, Using intent extras
getCacheDir(…), File Storage
getDir(…), File Storage
FileDescriptor class, Accessing AssetsgetFilesDir(…), File Storage
Geosearch, Flickr Geosearch
floating action buttons, Floating action buttonssearching in, Searching Flickr
for asset management, Creating BeatBox
getActivity(), Starting an Activity from a Fragment, Retrieving an extra
getArguments(…), Retrieving arguments
getTargetFragment(), Setting a target fragment
getTargetRequestCode(), Setting a target fragment
from native libraries, For the More Curious: Why Support Fragments Are Superior
newInstance(…), Attaching arguments to a fragment
onActivityResult(…), Passing Data Between Two Fragments
onCreate(Bundle), Implementing fragment lifecycle methods
onCreateOptionsMenu(…), Creating the menu
onCreateView(…), Implementing fragment lifecycle methods
onOptionsItemSelected(MenuItem), Creating the menu, Responding to menu selections
onSaveInstanceState(Bundle), Implementing fragment lifecycle methods
setArguments(…), Attaching arguments to a fragment
setHasOptionsMenu(boolean), Creating the menu
setRetainInstance(…), Retaining a fragment
setTargetFragment(…), Setting a target fragment
SingleFragmentActivity, Creating BeatBox
startActivityForResult(…), Getting Results with Fragments
fragment transactions, Activity: Fragment Boss, Implementing CrimeListFragment.Callbacksfrom support library, Two types of fragments, For the More Curious: Why Support Fragments Are Superior
FragmentManager class(see also FragmentTransaction class)
adding fragments to, Adding a UI Fragment to the FragmentManager
fragment lifecycle and, The FragmentManager and the fragment lifecycle
onResume(), Reloading the List
responsibilities, Adding a UI Fragment to the FragmentManager
FragmentPagerAdapter class, FragmentStatePagerAdapter vs FragmentPagerAdapterrole in rotation, Rotation and Object Continuity, Rotation and retained fragments
(see also fragment transactions, FragmentManager class)
about, Introducing Fragments
accessing extra in activity’s intent, Retrieving an extra
activities vs, The Need for UI Flexibility
activity lifecycle and, The FragmentManager and the fragment lifecycle
adding in code, Two approaches to hosting
adding to FragmentManager, Adding a UI Fragment to the FragmentManager
adding to layout, Two approaches to hosting
application architecture with, Application Architecture with Fragments
arguments of, The downside to direct retrieval
as composable units, The Need for UI Flexibility, Activity: Fragment Boss
Callbacks interface, Fragment callback interfaces
compatibility and, Two types of fragments
container view IDs, Fragment transactions
container views for, Defining a container view, Creating a layout with two fragment containers
creating, Creating a UI Fragment
creating from support library, Creating the CrimeFragment class
delegating functionality to activity, Fragment callback interfaces
hosting, Starting CriminalIntent, Hosting a UI Fragment
implementing lifecycle methods, Implementing fragment lifecycle methods
inflating layouts for, Implementing fragment lifecycle methods
layout, Two approaches to hosting
lifecycle diagram, The FragmentManager and the fragment lifecycle
lifecycle methods, The FragmentManager and the fragment lifecycle
lifecycle of, The fragment lifecycle, The FragmentManager and the fragment lifecycle
maintaining independence of, The downside to direct retrieval, Activity: Fragment Boss
passing data between (same activity), Passing Data Between Two Fragments
passing data with fragment arguments, Passing data to DatePickerFragment
reasons for, The Need for UI Flexibility, The reason all our activities will use fragments
retaining, Retaining a fragment
rotation and, Rotation and retained fragments
setting listeners in, Wiring widgets in a fragment
starting activities from, Starting an Activity from a Fragment
support libraries and, Two types of fragments, For the More Curious: Why Support Fragments Are Superior
without support library, For the More Curious: Why Support Fragments Are Superior
UI flexibility and, The Need for UI Flexibility
FragmentStatePagerAdapter classwidgets and, Wiring widgets in a fragment
about, ViewPager and PagerAdapter
getCount(), ViewPager and PagerAdapter
getItem(int), ViewPager and PagerAdapter
FragmentTransaction classsetOffscreenPageLimit(int), Integrating CrimePagerActivity
add(…), Fragment transactions
beginTransaction(), Fragment transactions
detach(Fragment), FragmentStatePagerAdapter vs FragmentPagerAdapter
FrameLayout classremove(Fragment), FragmentStatePagerAdapter vs FragmentPagerAdapter
about, Creating a landscape layout
Fused Location Provider, Google Play Servicesas container view for fragments, Defining a container view, Creating a layout with two fragment containers
FusedLocationProviderApi class, Getting a Location Fix(see also FusedLocationProviderApi class)
about, Google Play Services
Maps API from, Importing Play Services Maps
setting up, Setting Up Google Play Services
GoogleMap class, Working with Your Mapusing, Using Google Play Services
AsyncTask vs, For the More Curious: AsyncTasks vs Threads
hardware devices, Running on the Emulatorhandling downloads, Communicating with the Main Thread
about, Networking Basics
getInputStream(), Networking Basics
getOutputStream(), Networking Basics
action, Parts of an implicit intent, Resolving an Implicit Intent
ACTION_CALL category, Challenge: Another Implicit Intent
ACTION_DIAL category, Challenge: Another Implicit Intent
ACTION_PICK category, Asking Android for a contact
ACTION_SEND category, Sending a crime report
benefits of using, Implicit Intents
categories, Parts of an implicit intent, Resolving an Implicit Intent
CATEGORY_DEFAULT, Resolving an Implicit Intent
explicit intents vs, Implicit Intents, Using Implicit Intents
for browsing web content, The Easy Way: Implicit Intents
parts of, Parts of an implicit intent
sending with AlarmManager, Delayed Execution with AlarmManager
inflating layouts, From Layout XML to View Objects, Implementing fragment lifecycle methodstaking pictures with, Using a Camera Intent
for delivering bytes, Networking Basics
inSampleSize, Scaling and Displaying Bitmapsread(), Networking Basics
mock objects, For the More Curious: Mocks and Testing
Intent classvs unit testing, Creating a Test Class
addFlags(…), Starting a new task
constructors, Communicating with intents
createChooser(…), Sending a crime report
getBooleanExtra(…), Using intent extras
putExtra(…), Using intent extras, Putting an extra
setClassName(…), Creating Explicit Intents at Runtime
intent filterssetComponent(…), Creating Explicit Intents at Runtime
BOOT_COMPLETED, Creating and registering a standalone receiver
explained, Parts of an implicit intent
intent servicesSHOW_NOTIFICATION, Creating and registering a dynamic receiver
processing commands, Creating an IntentService
Intent.FLAG_ACTIVITY_NEW_DOCUMENT class, For the More Curious: Concurrent Documentspurpose, Creating an IntentService
(see also broadcast intents, explicit intents, extras, implicit intents, Intent class)
communicating with, Communicating with intents
implicit vs explicit, Explicit and implicit intents, Implicit Intents
permissions and, Contacts permissions
regular vs broadcast, Regular Intents vs Broadcast Intents
IntentService classtaking pictures with, Using a Camera Intent
about, Creating an IntentService
interpolators, Using different interpolatorscommands, Creating an IntentService
android:background, Styles
android:contentDescription, Challenge: From Button to ImageButton
android:drawablePadding, Referencing resources in XML
android:drawableRight, Referencing resources in XML
android:icon, Using Android Asset Studio
android:id, Resources and resource IDs
android:layout_gravity, Creating a landscape layout
android:layout_height, android:layout_width and android:layout_height
android:layout_margin, Margins vs padding
android:layout_width, android:layout_width and android:layout_height
android:orientation, android:orientation
android:text, android:text
colorAccent, Adding Theme Colors
colorPrimary, Adding Theme Colors
layout constraints (see constraints)colorPrimaryDark, Adding Theme Colors
about, App Basics
alternative, Creating a landscape layout
for asset management, Creating BeatBox
for cameras, A Place for Your Photo
defining in XML, Laying Out the UI
design documentation, Android’s design guidelines
inflating, From Layout XML to View Objects, Implementing fragment lifecycle methods
landscape, Creating a landscape layout
naming, Creating an Android Project
previewing, Previewing the layout, Creating a new activity, Testing Alternative Resources
for property animation, Building the Scene
root element, The view hierarchy
testing, Testing Alternative Resources
-ldpi suffix, Adding an Iconview hierarchy and, The view hierarchy
about, Setting listeners
as interfaces, Setting listeners
setting in fragments, Wiring widgets in a fragment
listssetting up, Setting listeners
displaying, Displaying Lists with RecyclerView
ListView class, For the More Curious: ListView and GridViewgetting item data, Adapters
about, Locations and Play Services
adding GPS permissions for, Location permissions
with Flickr Geosearch, Flickr Geosearch
Fused Location Provider, Google Play Services
Location API, Locations and Libraries
logging messages, Making log messages
Log.d(String, String, Throwable) method, Logging stack traces
logging(see also logging)
of exceptions, Logging stack traces
Log.d(String, String, Throwable), Logging stack traces
messages, Making log messages
of stack traces, Logging stack traces
Looper class, Communicating with the Main Thread, Handler anatomyTAG constant, Making log messages
(see also manifest attributes)
adding network permissions to, Asking permission to network
adding service to, Creating an IntentService
adding uses-permission INTERNET, Asking permission to network
Android versions in, A sane minimum
build process and, For the More Curious: Android Build Process
manifest attributesdeclaring Activity in, Declaring activities in the manifest
android:configChanges, Proper Rotation with WebView
MapFragment class, Setting Up Your Mapandroid:protectionLevel, More about protection levels
adding markers to, Drawing on the map
API setup for, Getting a Maps API Key
getting lat-lon data for, Getting More Location Data
Maps APIworking with, Working with Your Map
about, Getting a Maps API Key
MapView class, Setting Up Your Map
about, Material Design
animation tools, Animation Tools
material surfaces, Material Surfaces
mContext class, For the More Curious: The Application Contextview components, View Components
(see also toolbar)
about, Menus
app:showAsAction attribute, Defining a menu in XML
creating, Creating the menu
creating XML file for, Defining a menu in XML
defining in XML, Defining a menu in XML
determining selected item, Responding to menu selections
populating with items, Creating the menu
as resources, Defining a menu in XML
Message class, Message anatomyresponding to selections, Responding to menu selections
benefits, Benefits of MVC
drawbacks, Different Architectures: Why Bother?
Model-View-ViewModel (MVVM), Different Architectures: Why Bother?flow of control, Model-View-Controller and Android
about, Handling Touch Events
actions, Handling Touch Events
MVC (see Model-View-Controller)getAction(), Handling Touch Events
Android XML, The view hierarchy
naming conventionsapp, The app namespace
for static variables, Singletons and centralized data storage
navigation, Enabling Hierarchical Navigationfor style inheritance, Style inheritance
on Android Wear devices, Challenge: Notifications on Android Wear
notify(…) method (NotificationManager), Notificationsposting, Notifications
querying, Firing the intent
packages, naming, Creating an Android ProjectresolveActivity(…), Checking for responding activities
adding to manifest, Asking permission to network
location, Location permissions
permission groups, Checking for permissions
providing rationale, Challenge: Permissions Rationale
persistent data, Simple Persistence with Shared Preferencesrequesting at runtime, Asking for Permission at Runtime
designating file location for, Designating a picture location
scaling and displaying bitmaps, Scaling and Displaying Bitmaps
PhotoView class, Scaling and Displaying Bitmapstaking with intents, Using a Camera Intent
projectsupdating from background thread, For the More Curious: More on AsyncTask
adding resources, Adding resources to a project
app/java directory, From Layout XML to View Objects
configuring, Creating an Android Project
creating, Creating an Android Project
gen directory, Resources and resource IDs
layout, Creating an Android Project
res/layout directory, Resources and resource IDs
res/menu directory, Defining a menu in XML
res/values directory, Resources and resource IDs
setting package name, Creating an Android Project
property animation (see animation)setting project name, Creating an Android Project
efficient reloading of, Challenge: Efficient RecyclerView Reloading
for display grid, Creating PhotoGallery
setOnItemClickListener(…), The Easy Way: Implicit Intents
release key, For the More Curious: Android Build Processvs ListView and GridView, For the More Curious: ListView and GridView
+ prefix in, Resources and resource IDs
resourcesabout, Resources and resource IDs
(see also configuration qualifiers, drawables, layouts, menus, string resources)
about, Resources and resource IDs
adding, Adding resources to a project
alias, Using an alias resource
alternative, Prioritizing alternative resources
vs assets, Importing Assets, For the More Curious: Why Assets, Not Resources
default, Default resources
localizing, Localization
location of, Resources and resource IDs
referencing in XML, Referencing resources in XML
result code (Activity), Setting a resultstring, android:text
activity lifecycle and, Rotation and the Activity Lifecycle
saving data across, Saving Data Across Rotation
rows, inserting and updating, Inserting and updating rowswith DatePicker, Setting a dialog’s contents
(see also compatibility)
build target, Compile SDK version
codenames, Android SDK Versions
installing, Downloading Earlier SDK Versions
listed, Android SDK Versions
minimum required, A sane minimum
target, A sane minimum
searchupdating, Downloading Earlier SDK Versions
about, Search
in Flickr, Searching Flickr
integrating into app, Search
SearchView classuser-initiated, Using SearchView
about, Using SearchView
OnQueryTextListener(…), Responding to SearchView user interactions
post-Honeycomb, Using SearchView
Serializable class, Rotation and Object Continuityresponding to user interactions, Responding to SearchView user interactions
adding to manifest, Creating an IntentService
bound, Bound services
lifecycle of, A service’s lifecycle
locally bound, Local service binding
non-sticky, Non-sticky services
notifying user, Notifications
purpose of, Background Services
remotely bound, Remote service binding
setArguments(…) method (Fragment), Attaching arguments to a fragmentsticky, Sticky services
audio playback, Playing Sounds
creating, Creating a SoundPool
loading sounds into, Loading Sounds
rotation and object continuity with, Rotation and Object Continuity
SoundPool.release(), Unloading Sounds
SoundPool.release() method, Unloading Soundsunloading sounds, Unloading Sounds
about, SQLite Databases
building, Building Your Initial Database
debugging, Debugging database issues
defining schema for, Defining a Schema
inserting and updating rows, Inserting and updating rows
model objects from, Converting to model objects
reading from, Reading from the Database
SQLiteDatabase.query(…) method, Reading from the Databasewriting to, Writing to the Database
in Logcat, Exceptions and Stack Traces
startActivity(Intent) method (Activity), Starting an Activitylogging of, Logging stack traces
about, android:text
creating, Creating string resources
String.replace(…) method, Wiring Up Assets for Usereferencing, Referencing resources in XML
inheritance, Style inheritance, For the More Curious: More on Style Inheritance
modifying button attributes, Modifying Button Attributes
styles.xml file, Stylesthemes and, Styles, themes, and theme attributes
SupportMapFragment class, Setting Up Your Map(see also AppCompat library)
creating virtual devices for, Two-Pane Master-Detail Interfaces
TAG constant, Making log messagesuser interfaces for, Two-Pane Master-Detail Interfaces
about, TalkBack
Android widgets’ inherent support, Explore by Touch
android:hint attribute, Using labels to provide context
android:labelFor attribute and, Using labels to provide context
enabling, TalkBack
linear navigation by swiping, Linear navigation by swiping
target fragments, Setting a target fragmentnon-text elements and, Adding content descriptions
about, Tasks and the Back Stack
and Back button, Tasks and the Back Stack
vs processes, For the More Curious: Processes vs Tasks
starting new, Starting a new task
temporal navigation, Enabling Hierarchical Navigationswitching between, Switching between tasks
and tools:text, Creating a new activity
example, Laying Out the UI
inheritance, Challenge: From Button to ImageButton
TextWatcher interface, Wiring widgets in a fragmentsetText(int), Using intent extras
about, Themes
accessing attributes, For the More Curious: Accessing Theme Attributes
adding colors to, Adding Theme Colors
modifying, Modifying the theme
overriding attributes, Overriding Theme Attributes
threadsstyles and, Styles, themes, and theme attributes
background (see background threads)
main, You and Your Main Thread
message queue, Communicating with the Main Thread
processes and, For the More Curious: Processes vs Tasks
as sequence of execution, You and Your Main Thread
TimeInterpolator class, Using different interpolators
action bar vs, For the More Curious: Action Bar vs Toolbar
action views in, Using SearchView
app:showAsAction attribute, Defining a menu in XML
features, The Toolbar
menu, Menus
tools:text attribute, Creating a new activityoverflow menu, Defining a menu in XML
pivotX, View transformation properties
pivotY, View transformation properties
rotation, View transformation properties
scaleX, View transformation properties
scaleY, View transformation properties
translationX, View transformation properties
translationY, View transformation properties
transitions framework, for animation, TransitionstranslationZ, Elevation and Z values
@Before annotation, Setting Up Your Test
@Test annotation, Writing Tests
Espresso tool, For the More Curious: Espresso and Integration Testing
Hamcrest tool, Test Dependencies
vs integration testing, Creating a Test Class
JUnit testing framework, Creating a Test Class
matchers, Test Dependencies
mock objects, Test Dependencies, Using mocked dependencies
Mockito tool, Test Dependencies, Using mocked dependencies
testing frameworks, Creating a Test Class
Up button, Enabling Hierarchical Navigation, How hierarchical navigation workstesting object interactions, Testing object interactions
for making URL from string, Networking Basics
URLConnection class, Networking BasicsopenConnection(), Networking Basics
defined by layout, App Basics
for tablets, Two-Pane Master-Detail Interfaces
UUID.randomUUID() method, Creating the Crime classlaying out, Laying Out the UI
conventions for, Generating getters and setters
variables view, Setting breakpointsprefixes for, Generating getters and setters
draw(), Rendering Inside onDraw(Canvas)
getBottom(), Simple Property Animation
getHeight(), Simple Property Animation
getLeft(), Simple Property Animation
getRight(), Simple Property Animation
getTop(), Simple Property Animation
invalidate(), Tracking across motion events
OnClickListener interface, Setting listeners
onDraw(Canvas), Rendering Inside onDraw(Canvas)
onRestoreStateInstance(Parcelable), Challenge: Saving State
onSaveStateInstance(), Challenge: Saving State
onTouchEvent(MotionEvent), Handling Touch Events
setOnTouchListener(…), Handling Touch Events
view components, View Componentssubclasses, Laying Out the UI, Challenge: From Button to ImageButton
about, Using ViewPager
internals of, For the More Curious: How ViewPager Really Works
viewsin support library, Creating CrimePagerActivity
adding in graphical editor, Adding widgets
creating custom views, Creating a Custom View
creation by RecyclerView, RecyclerView, Adapter, and ViewHolder
custom, Creating a Custom View
invalid, Rendering Inside onDraw(Canvas)
laying out in code, For the More Curious: Laying Out Views in Code
persisting, Challenge: Saving State
simple vs composite, Creating a Custom View
size settings, Making room
touch events and, Handling Touch Events
ViewTreeObserver class, Challenge: Efficient Thumbnail Loadusing fully qualified name in layout, Creating BoxDrawingView
browsing via implicit intent, The Easy Way: Implicit Intents
displaying within an activity, The Harder Way: WebView
web rendering events, responding to, The Harder Way: WebViewenabling JavaScript, The Harder Way: WebView
for enhancing appearance of WebView, Using WebChromeClient to spruce things up
onProgressChanged(…), Using WebChromeClient to spruce things up
WebSettings class, The Harder Way: WebViewonReceivedTitle(…), Using WebChromeClient to spruce things up
for presenting web content, The Harder Way: WebView
WebViewClient class, The Harder Way: WebViewhandling rotation, Proper Rotation with WebView
about, Laying Out the UI
attributes of, Laying Out the UI
Button, Laying Out the UI, Challenge: From Button to ImageButton
DatePicker, Setting a dialog’s contents
defining in XML, Laying Out the UI
EditText, Defining CrimeFragment’s layout
FrameLayout, Creating a landscape layout
ImageButton, Challenge: From Button to ImageButton
LinearLayout, Laying Out the UI, The view hierarchy
margins, Margins vs padding
padding, Margins vs padding
references, Getting references to widgets
styles and, Styles
from support library, Creating CrimePagerActivity
TextView, Laying Out the UI, Creating a new activity
in view hierarchy, The view hierarchy
as view layer, Model-View-Controller and Android
wiring in fragments, Wiring widgets in a fragment
wrap_content, android:layout_width and android:layout_heightwiring up, Wiring Up Widgets
Android namespace, The view hierarchy
XML drawables (see drawables)referencing resources in, Referencing resources in XML
18.117.81.240