Thông tin tài liệu
Beginning Android 3
■ ■ ■
Mark Murphy
I
n
t
e
l
’
s
R
e
c
o
m
m
e
n
d
e
d
R
e
a
d
i
n
g
L
i
s
t
S
e
l
e
c
t
e
d
F
o
r
Beginning Android 3
Copyright © 2011 by Mark Murphy
All rights reserved. No part of this work may be reproduced or transmitted in any form or by any
means, electronic or mechanical, including photocopying, recording, or by any information
storage or retrieval system, without the prior written permission of the copyright owner and the
publisher.
ISBN-13 (pbk): 978-1-4302-3297-1
ISBN-13 (electronic): 978-1-4302-3298-8
Trademarked names, logos, and images may appear in this book. Rather than use a trademark
symbol with every occurrence of a trademarked name, logo, or image we use the names, logos,
and images only in an editorial fashion and to the benefit of the trademark owner, with no
intention of infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if
they are not identified as such, is not to be taken as an expression of opinion as to whether or not
they are subject to proprietary rights.
President and Publisher: Paul Manning
Lead Editor: Steve Anglin
Development Editor: Tom Welsh
Technical Reviewer: Dylan Philips
Editorial Board:
Steve Anglin, Mark Beckner, Ewan Buckingham, Gary Cornell, Jonathan
Gennick, Jonathan Hassell, Michelle Lowman, Matthew Moodie, James Markham,
Jeff Olson, Jeffrey Pepper, Frank Pohlmann, Douglas Pundick, Ben Renow-Clarke,
Dominic Shakeshaft, Matt Wade, Tom Welsh
Coordinating Editor: Jessica Belanger
Copy Editor: William McManus
Compositor: MacPS, LLC
Indexer: John Collin
Artist: April Milne
Cover Designer: Anna Ishchenko
Distributed to the book trade worldwide by Springer Science+Business Media, LLC., 233 Spring
Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail
orders-ny@springer-sbm.com, or visit www.springeronline.com.
For information on translations, please e-mail rights@apress.com, or visit www.apress.com.
Apress and friends of ED books may be purchased in bulk for academic, corporate, or
promotional use. eBook versions and licenses are also available for most titles. For more
information, reference our Special Bulk Sales–eBook Licensing web page at
www.apress.com/bulk-sales.
The information in this book is distributed on an “as is” basis, without warranty. Although every
precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall
have any liability to any person or entity with respect to any loss or damage caused or alleged to
be caused directly or indirectly by the information contained in this work.
The source code for this book is available to readers at www.apress.com.
Contents
Part I: Core Concept 1
■Chapter 1: The Big Picture 3
Benefits and Drawbacks of Smartphone Programming 3
What Androids Are Made Of 4
Stuff at Your Disposal
5
The Big Picture of This Book
6
■Chapter 2: How to Get Started 7
Step 1: Set Up Java 7
Install the JDK 7
Learn Java
8
Step 2: Install the Android SDK
8
Install the Base Tools
8
Install the SDKs and Add-ons
9
Step 3: Install the ADT for Eclipse
12
Step 4: Install Apache Ant
14
Step 5: Set Up the Emulator
15
Step 6: Set Up the Device
21
Windows
21
M
ac OS X and Linux 22
■Chapter 3: Your First Android Project 23
Step 1: Create the New Project 23
Eclipse 23
Com
mand Line 26
Step 2: Build, Install, and Run the Application in Your Em
ulator or Device 27
Eclipse
27
Com
mand Line 28
■Chapter 4: Examining Your First Project 31
Project Structure 31
Root Contents 31
The Sweat Off Your Brow
32
And Now,
the Rest of the Story 32
What You Get Out of It
33
Inside Your Manifest
33
In the Beginning, There Was the
Root, and It Was Good 34
An Application for Your Application
35
■Chapter 5: A Bit About Eclipse 37
What the ADT Gives You 37
Coping with Eclipse 38
How to Import a Non-
Eclipse Project 38
How to Get to DDM
S 42
How to Create an Em
ulator 43
How to Run a Project
44
How Not to Run Your Project
45
Alternative IDEs
45
IDEs and This Book
46
■Chapter 6: Enhancing Your First Project 47
Supporting Multiple Screen Sizes 47
Specifying Versions 48
Part II: Activities 49
■Chapter 7: Rewriting Your First Project 51
The Activity 51
Dissecting the Activity 52
Building and Running the Acti
vity 53
■Chapter 8: Using XML-Based Layouts 55
What Is an XML-Based Layout? 55
Why Use XML-Based Layouts? 55
OK, So What Does It Look Like?
56
What’s with the @
Signs? 57
And How Do We Attach These to the Java?
57
The Rest of the Story 58
■Chapter 9: Employing Basic Widgets 61
Assigning Labels 61
Button, Button, Who’s Got the Button? 62
Fleeting Images
63
Fields of Green…or Other Colors
64
Just Another Box to Check
66
Turn the Radio Up
68
It’s Quite a View
70
Padding
70
Other Useful Properties
71
Useful Me
thods 71
Colors
71
■Chapter 10: Working with Containers 73
Thinking Linearly 73
LinearLayout Concepts and Properties
74
LinearLayout Example 76
The Box Model
80
All Things Are Relative
81
RelativeLayout Concepts and Properties
82
RelativeLayout Example 84
Overlap
86
Tabula Rasa
87
TableLayout Concepts and Pr
operties 87
TableLayout Example
89
Scrollwork
90
■Chapter 11: The Input Method Framework 93
Keyboards, Hard and Soft 93
Tailored to Your Needs 94
Tell Android Where It Can Go
98
Fitting In
100
Jane, Stop This Crazy Thing!
101
■Chapter 12: Using Selection Widgets 103
Adapting to the Circumstances 103
Using ArrayAdapter 104
Lists of Naughty and Nice
104
Selection Modes
106
Spin Control
108
Grid Your Lions (or Som
ething Like That ) 111
Fields: Now with 35% Less Typing!
115
Galleries, Give or Take the Art 118
■Chapter 13: Getting Fancy with Lists 119
Getting to First Base 119
A Dynamic Presentation 121
Inflating Rows
Ourselves 123
A Sidebar About Inflation
123
And Now, Back to Our Story
125
Better. Stronger. Faster.
125
Using convertView
125
Using the Holder Pattern 127
Interactive Rows
129
■Chapter 14: Still More Widgets and Containers 135
Pick and Choose 135
Time Keeps Flowing Like a River 140
Seeking Resolution
141
Putting It on My
Tab 142
The Pieces
143
Wiring It Together
144
Adding Them Up
146
Flipping Them Off 149
Getting in Somebody’s Drawer 154
Other Good Stuff
156
■Chapter 15: Embedding the WebKit Browser 159
A Browser, Writ Small 159
Loading It Up 161
Navigating the W
aters 162
Entertaining the Client
163
Settings, Preferences, and Options (Oh, My
!)
165
■Chapter 16: Applying Menus 167
Flavors of Menu 167
Menus of Options 168
Menus in Context
169
Taking a Peek
170
Yet Mo
re Inflation 175
Menu XM
L Structure 175
Menu Options and XM
L 176
Inflating the Menu
177
In the Land of Menus and Honey
178
■Chapter 17: Showing Pop-Up Messages 179
Raising Toasts 179
Alert! Alert! 180
Checking Them
Out 181
■Chapter 18: Handling Activity Lifecycle Events 183
Schroedinger’s Activity 183
Life, Death, and Your Activity 184
onCreate() and onDestroy()
184
onStart(), onRestart(), and onStop()
185
onPause() and onResume()
185
The Grace of State
185
■Chapter 19: Handling Rotation 187
A Philosophy of Destruction 187
It’s All the Same, Just Different 188
Picking and Viewing a C
ontact 189
Saving Your State
190
Now with Mo
re Savings! 193
DIY Rotation
195
But Google Does Not Recommend This
198
Forcing the Issue 198
Making Sense of It All
200
■Chapter 20: Dealing with Threads 203
The Main Application Thread 203
Making Progress with ProgressBars
204
Getting Through the Handlers 204
Messages
205
Runnables
208
Where Oh Where Has My UI Thread Gone? 208
Asyncing Feeling 208
The Theory
208
AsyncTask, Generics, and Varargs
209
The Stages of AsyncTask 209
A Samp
le Task 210
Threads and Rotation
214
Manual Activity Association
215
Flow of Events
217
Why This W
orks 218
And Now, the Caveats
218
■Chapter 21: Creating Intent Filters 221
What’s Your Intent? 221
Pieces of Intents 222
Intent Routing
222
Stating Your Intent(ions)
223
Narrow Receivers
224
The Pause Caveat
225
■Chapter 22: Launching Activities and Subactivities 227
Peers and Subs 227
Start ’Em Up 228
M
ake an Intent 228
Make the Call
228
Tabbed Browsing, Sort Of
232
■Chapter 23: Working with Resources 235
The Resource Lineup 235
String Theory 235
Plain Strings
236
String Forma
ts 236
Styled Text
237
Styled Text and Forma
ts 237
Got the Picture?
240
XML: The Resource W
ay 241
Miscellaneous Values
243
Dimensions
244
Colors
244
Arrays
245
Different Strokes for Different Folks
246
RTL Languages: Going Both Ways
250
■Chapter 24: Defining and Using Styles 251
Styles: DIY DRY 251
Elements of Style 253
Where to Apply a Style
253
The Available Attributes
254
Inheriting a Style
254
The Possible Values
255
Themes: A Style by Any
Other Name 256
■Chapter 25: Handling Multiple Screen Sizes 257
Taking the Default 257
Whole in One 258
Think About Rules, Not Positions . 259
Consider Physical Dimensions . 260
Avoid “Real” Pixels . 260
Choose Scalable Drawables . 260
Tailor-Made, Just for You (and You, and You, and ) 261
Adding the <supports-screens> Element 261
Resources and Resource Sets . 262
Finding Your Size . 263
Ain’t Nothing Like the Real Thing . 263
Density Differs 264
Adjusting the Density . 264
Ruthlessly Exploiting the Situation . 265
Replace Menus with Buttons . 265
Replace Tabs with a Simple Activity . 266
Consolidate Multiple Activities . 266
Example: EU4You 266
The First Cut 267
Fixing the Fonts 272
Fixing the Icons 274
Using the Space 274
What If It Is Not a Browser? . 276
Part III: Honeycomb and Tablets . 279
■Chapter 26: Introducing the Honeycomb UI . 281
Why Honeycomb? 281
What the User Sees 282
The Holographic Theme . 285
Dealing with the Rest of the Devices . 286
■Chapter 27: Using the Action Bar 289
Enabling the Action Bar . 289
Promoting Menu Items to the Action Bar 290
Responding to the Logo . 291
Adding Custom Views to the Action Bar 291
Defining the Layout . 292
Putting the Layout in the Menu . 293
Getting Control of User Input . 294
Don’t Forget the Phones! . 295
■Chapter 28: Fragments 297
Introducing Fragments . 297
The Problem Addressed by Fragments . 297
The Fragments Solution . 298
The Android Compatibility Library . 299
Creating Fragment Classes . 300
General Fragments . 300
ListFragment 301
Other Fragment Base Classes 306
Fragments, Layouts, Activities, and Multiple Screen Sizes
306
EU4You 307
DetailsActivity
311
Fragments and Configuration Changes
312
Designing for Fragments 312
■Chapter 29: Handling Platform Changes 313
Things That Make You Go Boom 313
View Hierarchy 313
Changing Resources
314
Handling API Changes
314
Mi
nimum, Maximum, Target, and Build Versions 315
Detecting the Version
316
Wr
apping the API 317
Patterns for Honeycomb
318
The Action Bar
319
Wr
iting Tablet-Only Apps 321
■Chapter 30: Accessing Files 323
You and the Horse You Rode in On 323
Readin’ ’n Writin’ 326
External Storage: Giant Economy
-
Size Space 330
Where to Write 330
When to W
rite 331
StrictMode: Avoiding Janky Code
331
Setting Up StrictM
ode 332
Seeing StrictMode in
Action 332
Development Only, Please!
333
Conditionally Being Strict
333
Linux File Systems: You Sync, You W
in 335
Part IV: Data Stores, Network Services, and APIs 337
■Chapter 31: Using Preferences 339
Getting What You Want 339
Stating Your Preference 340
Introducing PreferenceActivity
340
Letting Users Have Their Say
341
Adding a Wee Bit o’ Structure
345
The Kind of Pop-Ups You Like
347
Preferences via Fragments
350
The Honeycomb W
ay 351
Adding Backward Compatibility
354
■Chapter 32: Managing and Accessing Local Databases 357
A Quick SQLite Primer 359
Start at the Beginning 359
Setting the Table
362
Makin’ Data
362
W
hat Goes Around, Comes Around 364
Raw Queries 364
Regular Queries 364
Using Cursors
365
Custom CursorAdapters
366
Making Your Own Cursors
366
Flash: Sounds Faster Than It Is
367
Data, Data, Everywhere
367
■Chapter 33: Leveraging Java Libraries 369
Ants and JARs 369
The Outer Limits 370
Following the Script
371
Reviewing the Script
374
■Chapter 34: Communicating via the Internet 377
REST and Relaxation 377
HTTP Operations via Apache HttpClient
378
Parsing Responses
379
Stuff to Consider 381
AndroidHttpClient
382
Leveraging Internet-Aware Android Components
382
Downloading Files 383
Continuing Our Escape from Janky Code
391
Part V: Services 393
■Chapter 35: Services: The Theory 395
Why Services? 395
Setting Up a Service 396
Service Class
396
Lifecycle Me
thods 396
Manifest Entry
397
Comm
unicating to Services 397
Sending Comm
ands with startService() 397
Binding with bindService()
398
Comm
unicating from Services 399
Callback/Listener Objects
400
Broadcast Intents
400
Pending Results
400
Messenger
401
Notifications 401
■Chapter 36: Basic Service Patterns 403
The Downloader 403
The Design 403
The Service Implem
entation 404
Using the Service
406
The Music Player
407
The Design
407
The Service Implem
entation 408
Using the Service
409
The Web Service Interface
410
[...]... . 531 Explicit Feature Requests 531 Implied Feature Requests 532 A Guaranteed Market 533 Other Stuff That Varies 534 Bugs, Bugs, Bugs 534 Device Testing 535 ■Chapter 49: Where Do We Go from Here? 537 Questions, Sometimes with Answers 537 Heading to the Source 538 Getting... trivial) Android application The process differs depending on whether you are using Eclipse or the command line Eclipse From the Eclipse main menu, choose File ➤ New ➤ Project to open the New Project dialog box, which gives you a list of project type wizards to choose from Expand the Android option and click Android Project, as shown in Figure 3 1 23 24 CHAPTER 3: Your First Android Project Figure 3 1 Selecting... ■Chapter 37 : Alerting Users via Notifications 4 23 Notification Configuration 4 23 Hardware Notifications 424 Icons 424 Notifications in Action 425 Staying in the Foreground 429 FakePlayer, Redux 430 Notifications and Honeycomb . 431 Part VI: Other Android Capabilities 435 ■Chapter... knowledge is to read Learn Java for Android Development by Jeff Friesen (Apress, 2010) Step 2: Install the Android SDK The Android SDK gives you all the tools you need to create and test Android applications It comes in two parts: the base tools, and version-specific SDKs and related add-ons Install the Base Tools You can find the Android developer tools on the Android Developers web site Download... necessary to run an Android emulator To address this, click the Available packages option on the left to open the screen shown in Figure 2–2 9 10 CHAPTER 2: How to Get Started Figure 2–2 Android SDK and AVD Manager available packages Open the Android Repository branch of the tree After a short pause, you will see a screen similar to Figure 2 3 Figure 2 3 Android SDK and AVD Manager available Android packages... 5 03 Signing and Distribution 5 03 Updates 5 03 Issues You May Encounter 5 03 Android Device Versions 5 03 Screen Sizes and Densities 504 Limited Platform Integration 504 Performance and Battery .505 Look and Feel .505 Distribution 505 HTML5 and Alternative Android. .. will go through a few startup phases, the first of which displays a plain-text ANDROID label, as shown in Figure 2–12 17 18 CHAPTER 2: How to Get Started Figure 2–12 Android emulator, initial startup segment The second phase displays a graphical Android logo, as shown in Figure 2– 13 CHAPTER 2: How to Get Started Figure 2– 13 Android emulator, secondary startup segment Finally, the emulator reaches the... 38 : Requesting and Requiring Permissions 437 Mother, May I? 437 Halt! Who Goes There? . 438 Enforcing Permissions via the Manifest . 439 Enforcing Permissions Elsewhere 440 May I See Your Documents? .440 New Permissions in Old Applications 440 Permissions: Up Front or Not at All .441 ■Chapter 39 :... Your News Fix . 539 Index 541 Part Core Concept I Chapter 1 The Big Picture Android is everywhere Phones Tablets TVs and set-top boxes powered by Google TV Soon, Android will be in cars and all sort of other places as well However, the general theme of Android devices will be smaller screens and/or no hardware keyboard And, by the numbers, Android will probably be associated... Platform” for all Android SDK releases you want to test against “Documentation for Android SDK” for the latest Android SDK release “Samples for SDK” for the latest Android SDK release, and perhaps for older releases if you wish Then, open the Third party Add-ons branch of the tree After a short pause, you will see a screen similar to Figure 2–4 CHAPTER 2: How to Get Started Figure 2–4 Android SDK and . Write 33 0 When to W rite 33 1 StrictMode: Avoiding Janky Code 33 1 Setting Up StrictM ode 33 2 Seeing StrictMode in Action 33 2 Development Only, Please! 33 3 Conditionally Being Strict 33 3 Linux. You W in 33 5 Part IV: Data Stores, Network Services, and APIs 33 7 ■Chapter 31 : Using Preferences 33 9 Getting What You Want 33 9 Stating Your Preference 34 0 Introducing PreferenceActivity 34 0 Letting. 37 9 Stuff to Consider 38 1 AndroidHttpClient 38 2 Leveraging Internet-Aware Android Components 38 2 Downloading Files 38 3 Continuing Our Escape from Janky Code 39 1 Part V: Services 39 3 ■Chapter
Ngày đăng: 31/03/2014, 16:34
Xem thêm: apress beginning android 3 (2011), apress beginning android 3 (2011), Grid Your Lions (or Something Like That...), Tailor-Made, Just for You (and You, and You, and...)