Академический Документы
Профессиональный Документы
Культура Документы
.
ANDROID 24 .
II
GOOGLE
.
. .
.
.
.
119021, , , , . 17, . 1; .: 788-0075(76)
. : editorial@readgroup.ru
ACT
27.04.2011. 70x100/ 16.
. . . 37,7. . .
3 . 5092.
144003, . , , . , . 25
JI.
94 Android 24 .
Google/ ., . .: , 2011. 464 .
( ).
ISBN 978-5-4252-0318-2
Android
, .
, , ,
, .
Java, Android, ,
.
Android 24 24 .
, ,
.
Android.
004.4
32.973.26-018.2
ISBN 978-5-4252-0318-2
, 2011
............................................................................................................
...............................................................................................................
I. Android ..........................................................
1. Android ..........................................................
Android ..................................................
Eclipse .............................................................................
...................................................
......................................................................................................
.................................................................................
.............................................................................................
11
14
19
19
16
21
28
36
36
37
2. Android ...
Android .
DDMS ...
Android ..
Android ..
..
.....
..
39
39
41
47
50
51
51
51
3. Android
Android .
...
..
...
.
...
..
.
..
53
53
56
57
61
62
63
64
65
65
4. ......................................
...
.
...
.
..
.
..
.
.
67
67
71
74
75
79
80
81
81
82
5. Android
Android
...
..
.
..
84
84
88
92
94
97
97
97
98
6.
Android
..
.
.
100
100
105
110
111
111
112
II. ..
7. -
- ..
.
.
..
.
..
113
113
113
114
119
123
124
124
8. ...
..
...
ListView ...
..
.
.....
.
9. ..
.
..
...
....
.
XML- ...
..
.
125
125
127
130
135
138
138
138
140
140
141
143
144
147
150
151
153
154
.
10.
..
.
..
...
SharedPreferences ...
..
.
.
11. ,
..
...
DatePickerDialog ..
...
..
.
..
154
156
156
159
162
170
173
173
174
175
175
178
181
188
188
189
12. ...
..
ViewSwitcher .
...
..
.
.
190
190
192
196
200
207
207
208
III.
Android ..
13. .
...
.
ImageButton ..
...
.
..
.
..
210
210
210
212
213
220
221
223
223
223
14. ...
,
...
,
..
.
225
225
229
231
, ..
...
..
.
..
236
238
241
242
242
15. .
...
.
..
..
..
.
...
..
.
..
244
244
246
248
16. ..
.
..
.
..
265
265
265
268
276
276
276
17. ...
.
..
.
.
278
18. ...
...
,
...
....
..
.
.
292
292
307
307
307
251
253
255
260
262
263
263
278
279
287
288
289
290
299
300
304
304
305
Android .
Android- ...
,
...
..
.
..
308
313
ac 20. ..
Android ..
..
.
.
319
319
329
329
330
332
332
333
337
339
340
341
22. Android- .
..
..
.
..
350
350
354
365
366
366
V. ..
23. ...
...
- ...
- ...
..
..
..
.
..
368
368
368
369
371
372
375
377
377
377
379
379
387
315
316
316
317
345
348
348
348
..
.
..
389
390
391
VI. ..
. Android .
Java Development Kit .
Eclipse
Android SDK ...
Android
Eclipse (ADT) ...
Android SDK
...
393
. Eclipse
..
import ..
...
..
...
...
..
.
...
..
.
393
393
393
394
395
397
398
399
402
402
402
403
403
404
405
405
406
406
407
408
408
409
(Lauren Darcey)
, ,
Android, iPhone, Blackberry, Palm Pre, BREW J2ME.
,
.
, .
, .
.
,
.
,
(), , , ,
.
.
(Shane Conder)
.
.
BREW, J2ME, Palm, Windows Mobile Android
.
, .
.
, ,
. ! , Amazon Web Services, Android,
iPhone, Google App Engine ., .
,
. ,
, ,
.
Android Wireless Application
Development, Developers Library,
developer.com, informlT.com, androidbook.blogspot.com.
, ,
.
-
. , ,
.
,
, , ,
.
Sams Publishing
( Pearson) . (Trina MacDonald), (Olivia Itasegio) (Betsy Harris).
(Jonathan Jackson) ,
. , ,
, ,
, ,
. (, Android .)
(Liz Reid),
(Guy Grayson), (Lenz) ( ), (Shoshi
Brown) ( ), (Badger) ( - ),
(Richard de Castongrene), (Asher Siddiqui),
(Anthony Shaffer), (Spencer Nassar) (Mary
Thompson) .
, ,
. ,
, ,
.
, ,
.
E-mail: baranov@readgroup.ru
:
: , 119121, . , 17, .
Android .
,
(SDK, Software Development Kit), ,
. (
, )
Android. :
, ( ARCHOS 5), e-books- (,
Barnes & Noble),
. ,
. ( ? . bit.ly/bGqmZp.)
Droid, Verizon.
Android
, (,
iPhone).
, .
, , ,
.
(( DMA, GSM) (,
, , , , , ).
.
. ; v
, .
,
.
. ,
Android: ,
, .
Android , .
, SDK,
,
Android.
, , ,
,
.
.
?
Android
,
. , ,
, ,
.
Java ( ,
, ..), Android, ,
. Java, ,
,
-
Java, , .
,
(, Eclipse, Java JDK Android SDK), (
USB) . ,
Android ,
. .
24 .
Android (LBS, Location-Based Service),
. ,
,
.
.
I. Android.
I Android,
Android SDK ,
Android. I
, Android,
,
, ,
.
II. .
,
.
-, , ,
.
, ,
.
.
III. Android.
IV , ,
.
.
V. .
V ,
Android Market.
VI. .
VI
Android Eclipse IDE,
, .
! Android,
Android - Android Wireless Application Development,
Developer Library Addison-Wesley.
:
Windows 7 Mac OS X 10.6;
Eclipse Java IDE 3.5 (Galileo);
Eclipse JDT Web Tools Platform (WTP);
Sun Java SE (JDK) 6.18;
Android SDK 2.1 (
SDK);
Android (Androi SDK 1.6, 2.0.1
2.1).
,
:
...
, .
, .
!
,
, , .
, :
.
, *, ,
, .
.
, , .
, , ,
, . ,
, ,
.
,
.
, .
,
. ,
, , ,
.
.
, ,
=>. , ,
File => New Document ( >
).
I. ANDROID
1. ANDROID
, :
Android;
Eclipse;
Android;
.
Android , .
,
. ,
, . ,
,
. (
, Android Market.) Android
.
ANDROID
, Android , .
Google
2007 ,
( Google)
(, Open Handset
Alliance) .
, ,
, .
.
, RIM BlackBerry Apple iPhone,
,
.
Android
2008
Android -.
, Android .
Android SDK.
Android -Mobile G1,
2008 . 2009 ,
, Android, .
65 ,
. Android
,
Android. ,
Android ,
.
Android .
Google
. -
Android
Android (developer.android. com). - Android
SDK, ,
.
Google
Android
Android Market. . 1.1 Android,
.
. 1.1 Android
.
.
,
. Android .
, Android
'.
Android SDK
- Android developer.android.com. Eclipse,
,
(IDE, Integrated Development Environment)
Android. Android, Eclipse,
Android.
, ,
Android. Android Java,
,
Android SDK, , java.net. , ,
Android.
, .
ECLIPSE
Android- Hello, World,
. Eclipse. , ,
ADT (Android Developmeni
Tools). ADT
, , Android:
ANDROID SDK
Android .
Eclipse, Android SDK ADT Eclipse. , ,
USB Android,
.
.
Android
Android Project Wizard ( Android)
Android. , Eclipse
:
1. File => New => Android Project ( => =>
Android) Android
(
) Eclipse.
______________________________________________________________
Android, , ,
: File => New => Project ( =* => ),
Android => Android Project [Android =>
Android). Eclipse , , .
2.
3.
. , Droidl.
, . ,
Create new project in workspace (
). Use default location ( ),
.
, ... ____________________________________________________
,
Use default location ( ) .
4.
.
Android, ,
,
. Google (,
Google Maps), Google API,
. , Android 2.1
API Level 7.
5.
. .
Droid #1.
6.
,
Java.
com.androidbook.*, com.androidbook.droidl.
7.
Create Activity ( ).
Activity .
DroidActivity.
?
_________________________________________
Android. , ,
.
Droid #1 DroidActivity, .
3.
, . 1.2.
8.
, Min SDK Version (
SDK) . API
( Android 2.1 API
Level 7). ,
Android SDK.
.
9.
Next ().
10. , Android .
.
, (
, J u:
), Android
Project Wizard ( Android) Eclipse.
22.
11. Finish ().
Android
File Explorer ( ) Eclipse
Android Droid 1. JAR- Android SDK, :
AndroidManifest.xml (
);
default.properties , Eclipse ADT. ;
/src , ;
/src/com.androidbook.droidl/DroidActivity.java DroidActivity.
Android;
/gen/com.androidbook.droid1/R.java
. ; ;
/assets ^ ;
/res , .
, , ,
, ;
/res/drawable () ;
/res/layout/main.xml , DroidActivity
;
/res/values/strings.xml .
, ... __________________________________________
______
Android Eclipse Android. Create
project from existing source ( ]
Create new project in workspace ( )
New Android Project ( Android), . 1.2. , ,
/samples Android SDK.
/android-*, * .
Create project from
existing sample ( ), . , -
, , .
Android. ,
, AndroidManifest.xml,
(. . 1.3).
Manifest () , . 1.3,
,
( ).
Application ()
, ,
, , (
DroidActivity )
, .
Permissions () , .
,
, Uses-Permission
(android, permission. READCONTACTS).
Instrumentation ()
, Android
SDK.
AndroidManifest.xml XML-
.
AndroidManifest.xml, ,
:
<?xml version="l.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android "
pakage="com.androidbook.droidl"
android: versionCode=" 1"
android:versionName="l. 0">
<appplication
android:icon="@drawable/icon"
android:label="@string/app_name">
<activity
android: name=". DroidActivity"
android: l abel="@string/app_name">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android: name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk
android:minSdkVersion="7" />
</manifest>
!
, ... ___________________________________________________
Android, Android,
XML. , . XML- Android,
, (
Eclipse.
1.
2.
3.
4.
ANDROID
Android.
, android:debuggable true.
:
AndroidManifest.xml .
Application ().
debuggable true.
.
, AndroidManifest.xml, ,
application :
android:debuggable="true"
Android /res.
:
/layout .
main.xml,
.
/values ,
, .
strings.xml,
, .
- , .
, XML-
.
1.
3.
main.xml, ,
TextView. .
0string/hello.
0string/hello
:
strings.xml.
2.
hello Hello
World, DroidActivity! .
Value () Hello, Dave.
4.
.
strings.xml XML,
, <resources> :
<?xml version="l.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello, Dave</string>
<string name="app_name">Droid #l</string>
</resources>
@string/hello.
0string/app_name, .
Android, , string/
app_name .
4.
.
Android
. ADT
Eclipse. :
Android .
Eclipse Android
( ), .
Android
Android,
AVD. AVD ,
, .
, SD- , ,
. AVD Android 2.1
. AVD.
1. Android SDK and AVD Manager Eclipse,
Android (
) .
Window => Android SDK and AVD Manager
( => Android SDK AVD).
2. Virtual Devices ( ) .
AVD .
9.
1.
2.
3.
New_configuration.
4.
5.
Browse () Droid 1.
6. Target ( )
AVD.
, ... ___________________________________________________
Target ( ) Manual ()
Automatic (),
.
,
. Android .
7. , Apply ().
Debug Configurations ( )
, . 1.5.
Android
. ,
Debug () Debug Configurations ( )
(
) Eclipse,
DroidDebug .
. 1.6. Android ( )
Eclipse , ,
. 1.7.
, .
I ext View.
.
DDMS Eclipse,
, Open Perspective ( )
(
Window => Open Perspective ( = )).
Open Perspective ( ) Other (),
. DDMS
. 1.9. Eclipse
! Android-. IIUK;I
Android J Eclipse.
. Android.
,
Android.
.
Android?
. Java ,
Android. , C++,
. , Java, C++
,
, Android NDK.
Android NDK
developer.android. com/sdk/ndk.
. AVD Android 1.1 (
), Android SDK?
. , ,
Android .
, ,
, .
. Android
, . -
?
. Android, ,
(, /res/values/strings.xml) XML-.
, XML . XML 4.
1.
(Open Handset Alliance)?
A.
B.
C.
. .
.
2.
SDK Android
. ?
3.
IDE Android
?
A.
B.
C.
Eclipse.
IntelliJ.
Emacs.
4.
Eclipse
. ?
1.
: .
,
.
2.
, . AVD.
3.
: A. Eclipse IDE
Android. IDE ,
ADT Eclipse.
4.
, . Eclipse ,
.
1.
developer.android.com .
Dev Guide ( )
. Community () Resources
().
Android.
2.
Droid #1. strings.xml
. main.xml,
TextView. android:text
TextView ,
. , ,
.
3.
Eclipse
Android, Android SDK. ,
.
2.
ANDROID
, :
Android;
DDMS;
Android;
Android (ADB, Android Debug Bridge);
Android.
Android
, .
Android
, .
- , ,
. Android
/tools Android SDK.
, .
Android .
ANDROID
Android ,
Android. HTML-
/docs Android SDK, - .
-
Android: http:// developer.android.com.
Android (. . 2.1):
SDK SDK, .
.
, -
,
SDK.
Dev Guide ( )
Android, ,
Android .
Reference ()
Android.
Blog () Android.
.
, Android
SDK .
Videos () , .
Android ,
Google .
Android SDK .
, -,
.
DDMS
Dalvik (DDMS, Dalvik Debug Monitor Service)
, Eclipse DDMS. DDMS
(. . 2.2).
DDMS :
;
;
;
;
.
DDMS DDMS .
.
, ... ___________________________________________________
DDMS Eclipse.
Android SDK /tools.
Devices () DDMS (
, .
, .
, ,
com.androidbook.droid1, ( ), .
2.3.
, ( ). ,
, stop ( ).
DDMS
. Eclipse .
Eclipse, DDMS .
Android
File Explorer ( ) DDMS (. . 2.4).
Android
(
)(
).
________________________________________________________________
. .
Emulator Control (
) DDMS (. . 2.5). ,
( ) .
,
, , (.
. 2.7).
DDMS LogCat
Android. , LogCat
, .
3.
______________________
Eclipse .
(
).
ANDROID
Android ,
. ,
. Android Eclipse IDE ADT.
Android , .
:
. *
,
.
, , nfi
,
, , .
, o- . SMS
.
USB Bluetooth .
, Android .
, .
,
(, ! ).
.
:
1.
Eclipse Droid 1, 1.
2.
Ctrl+F11
Ctrl+F12,
.
3.
Alt+Enter,
. Alt+Enter ,
. -
: developer.android.com/guide/developing/tools, emulator.html.
Android
Android,
Android . 2.1
Android.
Android
. ,
SMS. ,
-. , -
. ,
,
, ,
(skins)
, , , ,
, .
Android SDK ,
( HVGA).
.
AVD.
SD-
SD-.
SD- , ,
-, .
SD- AVD,
1. SD- 9 .
ANDROID
, ,
, Android
SDK.
Android Hierarchy Viewer ( Android) , View Properties (
), .
Draw 9-Patch tool ( NinePatch) PNG-.
AIDL Compiler ( AIDL)
(IPC) Android.
mksdeard
SD- AVD .
ANDROID ECLIPSE
___________________
.
ddms , DDMS Eclipse.
adb (Android Debug Bridge) .
Android SDK
Android. Android
DDMS,
Eclipse
. Android Android
.
,
Android .
: Android, Android SDK, developer.android.com ?
. . , SDK,
SDK, Android SDK. Android SDK, , - .
- ,
. -.
: ?
. . .
.
, .
: ?
. . Android ,
Android.
, .
. , ,
.
, .
, .
1.
A.
B.
C.
D.
E.
F.
DDMS?
.
.
Android.
.
SMS .
.
2.
Android ?
3.
Android?
4.
Android
. ?
1.
F . DDMS , .
2.
. Android ,
,
.
3.
SDK.
Android 1.1, Android 1.5. Android 1.6, Android 2.0, Android 2.0.1
Android 2.1. Android 1.1
Google API. AVD,
Android.
4.
, . , Android
, .
Android SDK and AVD Manager.
1.
Android .
. .
2.
Android .
. . ,
. ,
.
3.
Hierarchy Viewer ( )
Droidl, 1.
TextView.
3. ANDROID
, :
Android;
;
, ;
.
. Android : Context (),
Activity (), Intent (). , ,
,
Android.
Android. ,
.
ANDROID
Android ,
(activity).
.
, Chippys
Revenge.
Chippys Revenge . .
-
. .
,
Play, Scores Help.
Play , .
Scores (
), .
Help ,
, , , .
?
, .
_________________________________________________________________
, ,
. - Android ,
, Android.
. , , ,
, . , .
.
SplashActivity .
(
) ,
MenuActivity.
MenuActivity .
,
. , ,
onClick().
PlayActivity
.
, , ,
.
ScoresActivity ,
SplashActivity. ,
TextView
.
HelpActivity
ScoreActivity, ,
. TextView.
,
, .
ScoresActivity HelpActivity, .
, ,
Textview .
?
?
,
Android . .
.
,
.
getApplicationContext (), :
Context context = getApplicationContext();
Activity Context, this
.
! ____________________________________________________________
Activity - . ,
Android
:
android-developers.
blogspot.com/2009/01/avoiding-memory-leaks.html.
,
.
getResources ( )
. - URI,
R.java.
hello:
String greeting = getResources ().getString (R.string,hello);
getSharedPreferences(). SharedPreferences
, .
SharedPreferences
. ,
, .
GemePref,
:
SharedPreferences settings = getSharedPreferences(GamePrefs,
MODE_PRIVATE);
SharedPreferences.Editor prefEditor = settings.edit();
prefEditor.putString(UserName, Spunky);
prefEditor.putBoolean(HasCredits, true);
prefEditor.commit();
,
SharedPreferences:
SharedPreferences settings = getSharedPreferences(GamePrefs,
MODE_PRIVATE);
String userName = settings.getString(UserName, Chippy Jr.
(Default));
. ,
:
Activity;
;
(,
);
, ,
.
, Activity, ,
.
Activity Android.
.
Chippys Revenge
Activity. ,
.
, :
;
. ;
.
Android
Android. Droid1, ,
DroidActivity .
, ... ___________________________________________________
Activity .
Android .
Chippys Revenge , SplashActivity
.
startActivity(). , .
, startActivity
() .
startActivity ()
:
startActivity(new Intent(getApplicationContext(),
MenuActivity.class));
MenuActivity .
.
MenuActivity ,
Android.
, .
.
Activity. startActivityForResult ().
onActivityResult ().
.
, . ,
.
Android , .
Android ,
, . ,
. , Android
.
Activity ,
, . . 3.1
.
onCreate()
onResume()
onPause()
onDestroy()
. .
setContextView()
.
,
. .
-,
.
UI-,
. . .
,
. UI- ,
Android .
onPause (), (,
) .
. 3.2 , .
,
.
getPreferences().
. , PlayActivity
, , .
, finish().
,
.
. 3.2.
Scores, Play Help
ScoresActivity, PlayActivity
HelpActivity.
Intent ,
Android. startActivity() , Android
Inentent .
.
Android .
, .
,
.
Android.
.
.
putExtra
() , .
Android,
(, m. androidbook.chippy.NameOfExtra).
, :
Intent intent=new Intent(getApplicationContext(),HelpActivi ty.class);
intent.putExtra("com.androidbook.chippy.LEVEL", 23) ;
startActivity(intent);
HelpActivity getintent ()
.
. :
Intent callinglntent=getlntent();
int helpLevel=callingIntent.getlntExtra("com.androidbook.
chippy.LEVEL",1);
,
startActivityForResult(),
onActivityResult() Intent.
.
,
. ,
.
. ,
:
- URL;
- ,
;
Maps ;
Google Street View ;
;
;
.
(ACTION_VIEW)
- URL:
Uri address = Uri.parse(http://www.perlgurl.org);
Intent surf = new Intent(Intent.ACTION_VIEW, address);
startActivity(surf);
.
-. URL,
-.
,
.
, Back
.
, .
, __________________________________________________
openintents.org :
www.openintents.org/en/intentstable. ,
Android, .
, .
.
.
,
.
, ,
.
. 3.2
.
Activity
Activity.showDialog()
Activity.onCreateDialog()
Activity.onPrepareDialog()
Activity.ondismissDialog()
Activity.removeDialog()
.
. showDialog()
. showDialog()
.
.
,
, . :
AlertDialog,
CharacterPickerDialog,
rogressDialog TimePickerDialog.
DatePickerDialog,
D i a l o g . s e t C o n t e n t V i e w () XML- .
Dialog.findViewById
().
Android android.util.Log.
( )
. . 3.3
Log.
3.3
Log.e()
Log.w()
Log.i()
Log.d()
Log.v()
! ____________________________________________________________
Log
.
.
Log , .
Android
,
.
, TAG :
private static final String TAG="MyApp";
Log, .
:
Log.i(TAG, In onCreate() callback method);
, __________________________________________________
LogCat, Eclipse,
. .
, Android
: Context, Activity Intent.
Android .
.
() .
, Android
, ,
.
.
Android
Android, ,
Android .
. ,
?
. ( )
. ,
. ,
, .
. Android?
.
. - Submit
(), Clear (), Cancel (),
.
.
,
.
1.
A.
B.
C.
?
.
-.
.
2.
Android .
?
3.
Android?
A.
Context context=(Context) this;
B.
Context context=getAndroidObject (CONTEXT) ;
C.
Context context=getApplicationContext () ;
4.
android.util.Log . ?
1.
: . .
2.
, .
SharedPreferences.
3.
: . ,
. , , ,
.
4.
. Log : ,
, , .
Droid 1. onCreate ()
Log. i ().
.
Activity onCreate(),
onStart(), onRestartf), onResume (), onPause (), onStop () onDestroy ().
.
.
, . .
, .
4.
, :
;
;
;
;
;
.
Android
, .
Android . , Android,
.
: .
Android
. ,
Android, Android SDK.
.
,
XML-
.
Android, /res. , ,
.
Android.
, ,
.
:
,
.
.
.
.
Android (. . 4.1),
.
Android .
:
, ;
;
;
.
,
XML-. , /res/drawable, /res/layout /res/values,
Android,
.
, /res, :
.
, ,
.
( XML- name) .
, ... ___________________________________________________
,
. , mypic.jpg,
/drawable, @drawable/mypic.
.
. 4.1. Android
Android.
/res
. ,
.
! ____________________________________________________________
, (. ,
, ) Eclipse, R.java . -
, Problems () Eclipse.
R.iava. ,
Resources getResources ()
, , .
, hello, strings.xml,
:
String greeting=getResources {) .getString (R. string.hello) ;
.
,
, :
@_/_
, , , :
@string/hello
,
.
,
Android. ,
, . ,
Android (android.R.string)
, OK, Cancel (), Yes (), No (). Cut (),
Copy ( ), Paste ().
_________________________________________________________________
, , .
android.
.
, android.R.string .
ok, ,
getSystem()
Resources,
Resource,
getString(), , :
String confirm = Resources.getSystem().
getString(android.R.string.ok);
,
, :
@android:[_]/[_]
, ok,
:
@android:string/ok
, , , XML /res/values . XML-,
/.
.
_________________________________________________________________
,
Eclipse, XMl- .
,
- .
<string> /res/values/ strings.xml.
:
<?xml version=1.0 encoding=utf-8?>
<resources>
<string name=app_name>Name this App</string>
<string name=hello>Hello</string>
</resources>
. . 4.1
.
________________________________________________________________
, ( ),
.
4.1
,
,
\, \
\\
,
,
,
.
getstring();
String greeting = getResources().getString(R.string.hello);
.
<color>
/res/values/co(ors.xml. XML- ,
.
_____________________________________________________________________
XML-, , ,
File => New => Android XML File ( => =>
XML- Android). ,
Android, .
:
<?xml version=1.0 encoding=utf-8?>
<resources>
<color name=background_color>#006400</color>
<color name=app_text_color>#FFE4C4</color>
</resources>
Android 12- 24-
RGB. . 4.2 , Android.
4.2
, Android
#RGB
#ARGB
12-
12-
#00F ()
#800F (,
#RRGGBB
#AARRGGBB
24-
24-
app_text_color getColor():
50%)
#FF00FF ()
#80FF00FF (,
50%)
, ... __________________________________________________
. , html-colorcodes.info ,
.
,
Textview, .
<dimen> /res/values/ dimens.xml. XML-
.
:
<?xml version=1.0 encoding=utf-8?>
<resources>
<dimen name=thumbDim>100px</dimen>
</resources>
.
. 4.3 , Android.
4.3
, Android
px
in
(
)
160 dpi
dp
(
)
sp
mm
pt
getDimension():
float thumbnailDim = getResources().getDimension(R.dimen.thumbDim);
, , /res/ drawable
. ,
.
_________________________________________________________________
/res/ drawable
Project Explorer ( ) Eclipse. ,
,
.
, , , PNG JPG-.
, .
. 4.4, Android
.
4.4
, Android
PNG
PNG NinePatch
JPEG
GIF
( )
( )
( )
.png
.9.png
.jpg
.gif
BitmapDrawable.
, /res/drawable/logo.png,
getDrawable():
BitmapDrawable logoBitmap =
(BitmapDrawable)getResources().getDrawable(R.drawable.logo);
.
, ImageView.
logo.png ImageView
LogolmageView, :
ImageView logoView = (ImageView)findViewById(R.id.LogoImageView);
logoView.setImageResource(R.drawable.logo);
XML-
Drawable, ShapeDrawable.
ShapeDrawable ,
.
Android, android.graphics.drawable.
Android
XML-, .
/res/layout.
, , .
, __________________________________________________
, .
.
:
<?xml version=1.0 encoding=utf-8?>
<LinearLayout
xmlns:android=http://schemas.android.com/apk/res/android
android:orientation=vertical
android:layout_width=fill_parent
android:layout_height=fill_parent>
<TextView
android:layout_width=fill_parent
android:layout_height=wrap_content
android:text=@string/hello />
</LinearLayout>
, main.xml ,
Android.
.
LinearLayout,
TextView.
main.xml
@string/hello, strings.xml.
, ... ___________________________________________________
,
. XML- .
.
Eclipse
. XML-
.
Eclipse
(. . 4.2). /res/ layout/main.xml Eclipse,
Layout (),
, .
Outline ().
Properties ().
. 4.2. Eclipse
,
.
.
XML- .
. -
.
,
, Eclipse.
XML
XML- .
/res/layout/main.xml main.xml, XML .
________________________________________________________________
,
XML-. XML ,
.
Eclipse.
Eclipse:
1.
Droid 1, .
2.
/res/layout/main.xml
Eclipse .
3.
Layout (),
.
4.
Outline (). XML . LinearLayout,
TextView.
5.
TextView Outline ().
.
6.
Properties ().
TextView,
. Text ,
@string/hello.
7.
@string/hello Properties
(), . , ,
.
, (,
@string/app_name) , ,
.
8.
main.xml XML-, , ,
, .
Eclipse.
, ImageView TextView .
.
, ... ___________________________________________________
Outline ()
Properties (). Properties ()
Java, , Project Explorer ( ) ,
Properties () (
), Outline () ( , Properties ()).
LayoutInflater, View,
:
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.main, null);
,
, TextView main.xml. ,
, (Button, ImageView
TextView), View.
, Droidl,
TextView. TextView
name.
View , id
TextView . @+id/TextView01.
TextView TextView01,
:
TextView txt = (TextView)findViewById(R.id.TextView01);
, , Android
. .
.
XML-
XML Android. XML-
,
.
XML- .
XML (. 4.5) Android.
4.5
XML
android.sax*
android.util.Xml.*
org.xml.sax.*
javax.xml.*
org.w3c.dom
org.xmlpull.*
SAX
XML, XMLPullParser
SAX (. www.saxproject.org)
SAX DOM 2-
DOM, 2-
XmlPullParser XMLSerializer (. www.xmlpull.org)
Android
(raw files). - ,
.
/res/raw.
( , ).
- Android,
, .
,
. , ,
Android,
.
openRawResource(). ,
inputstream /res/raw/file1.txt:
InputStream iFile = getResources().openRawResource(R.raw.file1);
________________________________________________________________
, ,
file1.txt file1.dat .
, ... ___________________________________________________
, ,
.
Android /assets.
, /res. , ,
, , .
, ,
getResources(). /assets
AssetManager.
,
. , ,
. ,
. .
:
;
;
;
;
;
.
,
Android.
Android ,
. Eclipse
, XML-
.
. ,
XML-,
. XML- .
, ,
. ,
, .
. ,
?
. . Android
. ,
,
.
Android /toots/lib/res/default.
. ,
XML-?
. - . . ,
,
.
.
. XML- ?
. , SAX
XML ( XMLPullParser),
. ,
.
. ?
.
getResources().
,
.
getAssets().
1.
A.
B.
C.
?
12- .
24- .
64- .
2.
.
?
3.
Android?
A.
JPG.
B.
PNG.
C.
GIF.
D.
PNG NinePatch-.
4.
. ?
5.
. ?
: . 12-, 24-
.
.
.
: . , PNG-, NinePatch, .
JPG , GIF .
, . , ,
.
, . ,
.
#00ff00 Droid 1.
TextColor TextView
.
.
22pt Droidl.
textSize TextView
.
.
Droidl.
ImageView src,
.
.
Droidl.
openRawResource() InputStream .
Log.v().
.
5. ANDROID
, :
Android;
;
;
;
.
Android ,
. ,
, ,
. Android ,
, .
ANDROID
Android AndroidManifest.xml
Android. Android :
;
;
;
;
,
-.
, ... __________________________________________________
Eclipse ADT, Android AndroidManifest.xml
.
, Android Eclipse
.
Eclipse
, :
Manifest ();
Application ();
Permissions ();
Instrumentation ();
AndroidManifest.xml.
Manifest ()
Manifest () (. . 5.1) ,
,
Android SDK. .
AndroidManifest.xml
Android XML-.
XML AndroidManifest.xml (. . 5.5).
_______________________________________________________________________
Android,
. Android
.
<uses-library>
Android.
Application () . :
<uses-library
android:name=com.company.sharedutilities />
:
;
.
<manifest> :
.
,
.
. android:versionName
<manifest> .
, Droid 1 1.0.
. , .
Android .
android:versionCode <manifest> ,
Android
. android:versionCode
1.
, .
.
________________________________________________________________
. .
.
Android SDK
Android SDK. <uses-sdk>
Android SDK
. android:minSdkVersion
SDK . . 5.1
.
5.1
Android SDK
Android sdk
! ____________________________________________________________
Android SDK
.
API Level ( API), Android SDK and AVD Manager.
android:label <application> ,
. ,
:
<application
android:label=My application name>
, android: label .
Droid 1 :
<application
android:label=@string/app_name>
, app_name
strings.xml.
android:icon <application> ,
. Droidl
:
<application
android:icon=@drawable/icon>
, android:
icon <application>, .
: (1dpi).
(hdpi) (mdpi) (
Android 2.2 xhdpi, .. .
. .). Android
, .
20.
.
, :
1.
48 48 ,
.
.
2.
PNG myicon.png.
3.
/res/drawable-mdpi .
4.
1-3, 72x72
/res/drawable-hdpi.
.
5.
1-3 36x36
/res/drawable-ldpi. .
6.
android:icon,
@drawable/myicon.
,
( ), .
,
. ,
.
android:description <application> ,
.
:
<application
android:label=My application name
android:description=@string/app_desc>
Android
.
android:debuggable <application>
, ,
Eclipse, ,
true.
false.
Application ()
, . ,
- .
,
Android-
.
Application ()
Application Nodes ( ),
, .
, Android .
Android.
.
.4- ,
.
.
() , .
Application Nodes (
) Application ().
<activity> XML- . ,
XML DroidActivity:
<activity
android:name=.DroidActivity />
.
Droidl, :
1.
Droidl Eclipse.
2.
/com.androidbook.droidl /src
New (), Class ().
New Java Class ( Java).
3.
DroidActivity2.
4.
Browse () Superclass () android.app.Activity.
5.
Finish ().
.
6.
main.xml /res/layout second.xml.
, , . ,
. .
7.
DroidActivity2.
Source (), Override/Implement Methods (/ ).
8.
onCreate(Bundle).
.
9.
onCreate()
setContentview(R.layout.second). .
10.
Android Application
() .
11.
Application Nodes ( ) Application
() Add () Activity (). Atributes for Activity (
).
12.
Browse () Name ()
. DroidActivity2.
13.
. AndroidManifest.xml,
XML.
, DroidActivity2, .
! ____________________________________________________________
,
. , ,
Create a new element at the top level, in
Application ( , ) .
-
. -
<intent-filter> MAIN
LAUNCHER. Droidl Android
DroidActivity :
<activity
android:name=.DroidActivity
android:label=@string/app_name>
<intent-filter>
<action
android:name=android.intent.action.MAIN />
<category
android:name=android.intent.category.LAUNCHER />
</intent-filter>
</activity>
, <intent-filter> Android
DroidActivity.
Android Linux,
, Android.
Android
Linux (. . 5.6).
. 5.6. Android
,
,
Android. ,
- .
_________________________________________________________________
, , Linux.
Android
. ,
, , ,
<uses- permission> Android.
Permissions ()
Android.
,
:
7.
Droidl Eclipse.
8.
Android Permissions ()
.
9.
Add () Uses Permission ( ). Name () .
10. android.permission. CAMERA.
11. . AndroidManifest.xml,
XML.
, .
.
. 5.2
Android.
5.2
, Android
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.READ_CONTACTS
android.permission.WRITE_CONTACTS
android.permission.READ_CALENDAR
android.permission.WRITE_CALENDAR
android.permission.SET_ORIENTATION
android.permission.SET_TIME_ZONE
android.permission.SET_WALLPAPER
android.permission.CALL_PHONE
android.permission.CALL_PRIVILEGED
android.permission.READ_SMS
android.permission.RECEIVE_MMS
android.permission.RECEIVE_SMS
android.permission.RECEIVE_WAP_PUSH
android.permission.SEND_SMS
android.permission.WRITE_SMS
android.permission.INTERNET
android.permission.RECORD_AUDIO
android.permission.MODIFY_AUDIO_SETTINGS
android.permission.ACCESS_NETWORK_STATE
android.permission.CHANGE_NETWORK_STATE
WiFi
android.permission.ACCESS_WIFI_STATE
android.permission.CHANGE_WIFI_STATE
android.permission.BLUETOOTH
android.permission.CAMERA
android.permission.FLASHLIGHT
android.permission.VIBRATE
android.permission.BATTERY_STATS
android.permission.GET_ACCOUNTS
android.permission.MANAGE_ACCOUNTS
android.permission.READ_SYNC_SETTINGS
android.permission.READ_SYNC_STATS
android.permission.WRITE_SYNC_SETTINGS
, Android,
android.Manifest.permission.
! ____________________________________________________________
Android.
.
_________________________________________________________________
.
, .
, , Android
. ,
,
.
, - ,
.
Android (AndroidManifest.xml)
. . Android
XML- ,
. Android .
Eclipse Android.
. ?
. . android: label
,
. .
. Android ,
?
. ,
. Android
, , ,
.
. Activity , . ?
. , Android.
.
. Android ,
Eclipse?
.
. .
. .
?
. ,
. ,
Android , ,
,
.
.
1.
Android .
?
2.
android:versionCode , android:
versionName. ?
3.
?
A.
android.permission.USE_CAMERA.
B.
android.permission.CAMERA.
C.
android.permission.hardware.CAMERA.
4.
,
Android. ?
1.
. Android Android.
, .
2.
android:versionCode,
, .
android:versionName.
3.
: .
android.permission.CAMERA.
4.
. , ,
,
.
1.
Droidl.
2.
Activity. -
. , -
Android, , .
3.
.
, XML.
XML.
6.
, :
Android;
;
.
, .
Android ,
.
.
ANDROID
, .
,
, :
- ?
- ?
- ?
- ?
, ,
. Been There, Done That!.
,
. :
;
;
;
.
. ,
.
, Been There, Done That!*
:
-;
;
;
;
;
.
.
,
Been There, Done That!
Activity. . 6.1 ,
.
. 6.1.
Been Three, Done That!
, Activity
. QuizActivity. ,
, Been There, Done That!:
QuizActivity, android, . Activity, .
.
QuizSplashActivily, QuizActivity,
-.
QuizMcnuActivity, QuizActivity,
.
QuizHelpActivity, QuizActivity,
.
QuizScoresActivity, QuizActivity,
.
QuizSettingsActivity, QuizActivity,
.
QuizGameActivity, QuizActivity,
.
Been There, Done That!.
;
. 6.2. -
Been There, Done That!.
.
. 6.2 -.
.
. QuizMenuActivity.
:
;
Play Game,
Settings, Scores Help.
. 6.3 .
,
QuizHelpActivity.
:
. 6.3.
Been There, Done That!
. 6.4.
Been There, Done That!
;
.
. 6.4 -.
,
.
QuizScoresActivity.
:
;
,
.
. 6.5 .
,
.
QuizSettingsActivity. :
. 6.5.
Been There, Done That!
. 6.6.
Been There, Done That!
;
.
. 6.6 .
.
QuizGameActivity.
:
/;
, ;
.
. 6.7 .
. 6.7.
Been There, Done That!
, ,
Been There, Done That! , .
:
1.
Android Eclipse/
2.
, .
3.
.
4.
5.
.
________________________________________________________________
//
06.
Android
Android
Eclipse.
:
Project name ( ): TriviaQuiz.
Build target ( ): Android 2.1.
Application name ( ): Been There. Done That!.
Package name ( ): com.androidbook.triviaquiz.
Create activity ( ): QuizSplashActivity.
Android. ,
.
, ... ___________________________________________________
( ),
, . ,
com.androidbook.triviaquiz6. , .
Been There, Done That!
. ,
.
.
strings.xml.
hello .
, help Help Screen.
strings.xml :
<?xml version=1.0 encoding=utf-8?>
<resources>
<string
name=app_name>Been There, Done That!</string>
<string
name=help>Help Screen</string>
<string
name=menu>Main Menu Screen</string>
<string
name=splash>Splash Screen</string>
<string
name=settings>Settings Screen</string>
<string
name=game>Game Screen</string>
<string
name=scores>Scores Screen</string>
</resources>
.
main.xml splash.xml. splash.xml
: game.xml, help.xml, menu.xml, scores.xml settings.xml.
.
, TextView
@string/hello, .
,
TextView. , game.xml
@string/hello @string/game.
.
. , quizicon.png 48x48
/drawable. icon.png,
.
, ... __________________________________________________
/drawable. , Android , ,
[/drawabte-ldpi, /drawable-mdpi /drawable-hdpi).
quizicon.png , , .
Activity,
QuizSplashActivity.java.
QuizActivity. :
package com.androidbook.triviaquiz6;
import android.app.Activity;
public class QuizActivity extends Activity {
public static final String GAME_PREFERENCES = GamePrefs;
}
, QuizSplashActivity,
QuizActivity Activity .
QuizSplashActivity
: QuizMenuActivity, QuizHelpActivity, QuizScoresActivity,
QuizSettingsActivity QuizGameActivity.
, Eclipse
. ,
com.androidbook.triviaquiz New Class ( ).
.
_________________________________________________________________
, Eclipse,
.
, Java- .
- , main.xml,
. ,
, . ,
QuizHelpActivity setContentView(),
, , :
setContentView(R.layout.help);
,
setContentView() .
ANDROID
Android. , ,
@drawable/quizicon . -,
, .
, true Debuggable
, QuizSplashActivity
.
_________________________________________________________________
. ,
(/drawableIdpi, /drawable-mdpi /drawable-hdpi),
. , . ,
Android , .
Been There, Done That!
.
Android
(android.content.SharedPreferences).
.
QuizActivity , :
public static final String GAME_PREFERENCES = GamePrefs;
, ... ___________________________________________________
, ,
,
, , .
, -
:
1.
getSharedPreferences()
SharedPreferences.
2.
SharedPreferences.Editor,
.
3.
.
4.
commit () .
/.
:
;
;
;
;
.
, , ,
SharedPreferences, Editor
.
:
import android.content.SharedPreferences;
// ...
SharedPreferences settings =
getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE);
SharedPreferences.Editor prefEditor = settings.edit();
prefEditor.putString(UserName, JaneDoe);
prefEditor.putInt(UserAge, 22);
prefEditor.commit();
SharedPreferences
,
.
, Been Three, Done That!
,
. ,
.
.
Eclipse.
Eclipse . ,
AVD Google API (API Level 7).
AVD ( ), Android SDK and AVD
Manager Eclipse. , AVD
, , .
Been There, Done That! Android.
, Eclipse Run
() .
.
.
.
Been There, Done That! ,
Android
.
Application Manager ( )
. ,
Menu (), Settings=>Applications=>
Manage applications (=>=> )
Been There, Done That! .
,
, ..
Dev Tools ( ) -
. ,
, Dev Tools ( )
Package Browser ( ). com.androidbook.triviaquiz.
.
, DDMS. .
com.androidbook.triviaquiz
Android.
QuizSplashActivity.
,
.
. Android,
.
.
.
?
. Activity,
.
. ?
. , ,
.
getSharedPreferences().
getPreferences().
.
Android Eclipse?
. AVD, .
Eclipse
.
1.
Been There, Done That! . ?
2.
?
A.
, , ,
.
B.
, .
C.
, Java.
3.
(,
QuizActivity) Android. ?
1.
, . Been There, Done That!
.
, .
.
2.
: . ,
, , .
3.
.
Android.
1.
lastLaunch.
QuizSplashActivity
onCreate().
Log.i().
2.
QuizSettingsActivity
getPreferences() getSharedPreferences().
II.
7.
-
, :
-;
-;
.
- Been
There, Done That!*. -, ,
View Android
splash.xml.
- . , - . ,
- ,
.
-
Been There, Done That!, -,
.
6, . ,
( ), ,
,
. . 7.1 -.
- ,
,
. -, ,
, . , , .
. 7.1. -
Been There, Done That!
, , - ,
-. ,
/res/layout/sptash.xml QuizSplashActivity.
, TextView
( , -),
, .
. ,
. -
:
TextView .
ImageView .
View . -
Layout. , - LinearLayout
-
.
- LinearLayout Layout. -
, .
, LinearLayout. . 7.1 Layout.
7.1
- Layout
- Layout
LinearLayout
RelativeLayout
FrameLayout
TableLayout
- -
- - -
-
,
. - View
-
,
/
(
)
,
-
-
View
-
View ,
gravity
TableRow
_________________________________________________________________
Android 1.5 SDK - AbsoluteLayout, X/Y , , . - , - X/Y
, . WebView SDK.
- - View
, . ,
-
android:layout_width
android:layout_height, .
, ,
fill_parent wrap_content.
fill_parent, -
-, wrap_content
- - View,
- View. ,
-,
, .
- TableLayout,
- ImageView, .
. 7.2. - -
Been There, Done That!
- - LinearLayout
,
: TextView, -
TableLayout TableRow,
ImageView, TextView. . 7.2 -.
, - - , , ,
.
/res/drawable (
): splashl.png, splash2.png, splash3.png splashl.png.
- Table Layout
-.
_________________________________________________________________
//
07
/res/values/strings.xml: (Been There), (Done That!) (
). splash ,
.
/res/values/colors.xml,
: (), (-) ,
(-).
________________________________________________________________
, . Android @android:color/black.
,
/res/values/dimens.xml. :
(24pt),
(5pt)
(3pt).
, ,
splash.xml.
-
splash.xml,
, Eclipse, .
, .
1.
- LinearLayout
background @android:color/black,
orientation vertical.
- LinearLayout.
- View
Outline ().
2.
TextView TextViewTopTitie. layout_width fill_parent,
layout_height wrap_content. text
, textColor ,
textSize .
3.
oae
ee-oeep
TableLayout
o
aae
TabeLayout01. layout_width
fill_parent, layout_height wrap_content.
stretchColumns *, , .
4.
TableRow -
TableLayout. ImageView TableRow.
ImageView
src
@drawable/splashl, splas1.png.
ImageView src ,
splash2.png.
5.
4, TableRow.
ImageView splash3.png splash4. png.
6.
2 TextView TextViewBottomTitle -
LinearLayout. layout_width fill__parent,
layout_height wrap_content. text
, textColor ,
textSize .
7.
TextView
TextViewBottomVersion. layout_width
layout_height
fill_parent.
text
, textColor ,
textSize .
background
(-)
lineSpacingExtra ,
.
8.
layout_gravity gravity
,
Eclipse.
splash.xml Been There, Done
That! Android. - , .
7.3.
, -
. , -
.
. 7.3. -
Been There, Done That!
- .
Android :
GIF-. ,
.
. Android SDK
, GIF,
(
AnimationDrawable).
.
,
- -.
OpenGL ES. OpenGL ES Android
, ,
.
. Android
- , ,
. ,
, .
, -.
,
/res/anim.
XML-,
- View.
, ... __________________________________________________
,
android.R.anim.
XML-
/res/anim: fade_in.xml, fade_in2.xml custom_anim.xml.
, fade_in.xml,
(-) 0 ()
1 () 2500 , 2,5 . Eclipse
. XML- fade_in.xml :
<?xml version=1.0 encoding=utf-8 ?>
<set
xmlns:android=http://schemas.android.com/apk/res/android
android:shareInterpolator=false>
<alpha
android:fromAlpha=0.0
android:toAlpha=1.0
android:duration=2500>
</alpha>
</set>
TextView
.
fade_in2.xml. , fade_in.xml,
, startOffset 2500 .
, 5 : ,
2,5 , - 2,5
. ,
fade_in2.xml .
, TableLayout.
:
,
-, View .
custom_anim.xml :
<?xml version=1.0 encoding=utf-8 ?>
<set
xmlns:android=http://schemas.android.com/apk/res/android
android:shareInterpolator=false>
<rotate
android:fromDegrees=0
android:toDegrees=360
android:pivotX=50%
android:pivotY=50%
android:duration=2000 />
<alpha
android:fromAlpha=0.0
android:toAlpha=1.0
android:duration=2000>
</alpha>
<scale
android:pivotX=50%
android:pivotY=50%
android:fromXScale=.1
android:fromYScale=.1
android:toXScale=1.0
android:toYScale=1.0
android:duration=2000 />
</set>
, 360 2 ,
-. ;
2 . , 10% 100%
.
2 .
,
-.
-
.
, ,
- .
,
.
: fade_in.xml - TextView TextviewTopTitle,
. , , -
TextView onCreate() QuizSplashActivity,
Animation startAnimation()
- TextView:
TextView logo1 = (TextView) findViewById(R.id.TextViewTopTitle);
Animation fade1 = AnimationUtils.loadAnimation(this, R.anim.fade_in);
logo1.startAnimation(fade1);
,
onPause() ,
clearAnimation(). , onPause()
:
@Override
protected void onPause() {
super.onPause();
// Stop the animation
TextView logo1 = (TextView) findViewById(R.id.TextViewTopTitle);
logo1.clearAnimation();
TextView logo2 = (TextView)
findViewById(R.id.TextViewBottomTitle);
logo2.clearAnimation();
// ... stop other animations
}
-
View,
View, (, - TableLayout
TableRow), LayoutAnimationController.
- View ,
,
LayoutAnimationController,
setLayoutAnimation() -. ,
custum_anim,
LayoutAnimationController
TableRow - TableLayout:
Animation spinin = AnimationUtils.loadAnimation(this,
R.anim.custom_anim);
LayoutAnimationController controller =
new LayoutAnimationController(spinin);
TableLayout table = (TableLayout) findViewById(R.id.TableLayout01);
for (int i = 0; i < table.getChildCount(); i++) {
TableRow row = (TableRow) table.getChildAt(i);
row.setLayoutAnimation(controller);
}
startAnimation(),
LayoutAnimationController.
, .
( 50%
1 .) , ImageView .
LayoutAnimationController,
: clearAnimation().
, onPause(),
:
TableLayout table = (TableLayout) findViewById(R.id.TableLayout01);
for (int i = 0; i < table.getChildCount(); i++) {
TableRow row = (TableRow) table.getChildAt(i);
row.clearAnimation();
}
, ,
QuizSplashActivity QuizMenuActivity
. Intent,
QuizMenuActivity startActivity().
finish() QuizMenuActivity,
( ,
Back -).
fade_in2, 5 .
, in
.
AnimationListener,
: , .
onAnimationEnd(). ,
AnimationListener
onAnimationEnd():
Animation fade2 = AnimationUtils.loadAnimation(this, R.anim.fade_in2);
fade2.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation animation) {
startActivity(new Intent(QuizSplashActivity.this,
QuizMenuActivity.class));
QuizSplashActivity.this.finish();
}
});
: Android ?
: Android .
. ,
- VideoView ,
.
, , ,
, .
: TableLayout ,
TableRow(R. id. TableRowOl R. id.TableRow02) ?
: TableRow
, .
,
. -
.
:
Layout
AnimationController - TableLayout,
TableRow?
: LayoutAnimationController TableLayout,
TableRow, ImageView. ,
, .
1.
?
2.
?
A.
B.
C.
-, .
-, , .
, .
3.
- LinearLayout - View ( ).
?
8.
, :
;
;
ListView;
.
,
Android. Been There, Done
That!, ListView RelativeLayout.
, ,
.
,
. , ,
.
: ,
, .
. 8.1 .
. 8.1.
Been There, Done That!
.
, ,
.
. , ,
ListView. ,
,
.
- , .
, . ,
.
, - ListView, ,
.
,
Been There, Done That!.
, , ,
-
/res/layout/menu.xml.
QuizMenuActivity.
, LisiView
ImageView.
RelativeLayout
,
TextView.
TextView, ? -
RelativeLayout, -
-. ,
- RelativeLayout
-:
ImageView,
-;
TextView,
-;
ImageView,
-.
ListView
ListView. ListView
, View.
ListView TextView,
ListView View.
ListView, TextView,
. TextView,
ListView, ,
TextView
ListView. ,
ListView.
,
ImageView, ListView.
, -
LinearLayout RelativeLayout,
ListView ImageView . . 8.2
.
. 8.2.
Been There, Done That!
.
menu, xml, - .
, - , ,
, ,
.
/res/drawable:
bkgrnd.jpg, divider.png, half.png textured.png.
- LinearLayout bkgrnd.jpg.
ListView divider.png
textured.png . ImageView,
, half.png.
/res/values/strings.xml,
TextView, .
, /res/menu/colors.xml,
, ,
TextView, TextView,
ListView. ,
/res/values/dimens.xml, ,
ListView.
,
, .
,
.
, ,
. menu, xml
. ,
ListView.
, Eclipse
menu.xml. ,
-.
1.
- LinearLayout background @drawable/bkgrnd.
- LinearLayout.
2.
- RelativeLayout.
layout_width wrap_content, layout_height
wrap_content.
3.
ImageView
-
RelativeLayout.
layout_alignParentLeft
layout_alignParentTop ImageView
true. src @drawable/quizicon.
4.
TextView, , - RelativeLayout.
text, textSize textColor TextView
, .
layout_centerHorizontal layout_ alignParentTop
true.
. ... __________________________________________________
, TextView,
,
shadowColor, shadowDx, shadowDy shadowRadius.
5.
- RelativeLayout,
ImageView. layout_align
ParentRight layout_alignParentTop ImageView true. src @drawable/quizicon.
6.
-
RelativeLayout,
ListView ImageView. -
RelativeLayout - RelativeLayout,
, -
RelativeLayout
LinearLayout.
7.
ImageView - RelativeLayout. src
@drawable/half, layout_width layout_height
fill_parent, ,
.
layout_alignParentBottom true, scaleType
fitEnd, -
.
8.
ListView ListView_Menu
ImageView.
layout_width fill_parent, layout_height
wrap_content. layout_alignTop true.
, .
menu.xml.
! ____________________________________________________________
Eclipse
ListView . ListView,
Android.
.
ListView
/res/layout/menu_item.xml,
ListView.
menu_item.xml TextView.
TextView ,
, .
text ListView.
textColor textsize TextView,
, .
menu_item.xml :
<TextView
xmlns:android=http://schemas.android.com/apk/res/android
android:layout_width=fill_parent
android:textSize=@dimen/menu_item_size
android:text=test string
android:layout_gravity=center_horizontal
android:layout_height=wrap_content
android:shadowRadius=5
android:gravity=center
android:textColor=@color/menu_color
android:shadowColor=@color/menu_glow
android:shadowDy=3
android:shadowDx=3 />
. ... __________________________________________________
, TextView Eclipse, text - .
ListView .
menu_item.xml.
LISTVIEW
QuizMenuActivity.java.
ListView. -, ListView ,
ListView .
ListView
ListView . ListView
, ,
. ,
, String
ListView.
ListView
setContentview() onCreate() .
ListView, ,
findViewById(), :
ListView menuList = (ListView) findViewById(R.id.ListView_Menu);
string
TextView, ListView.
, :
String[] items = { getResources().getString(R.string.menu_item_play),
getResources().getString(R.string.menu_item_scores),
getResources().getString(R.string.menu_item_settings),
getResources().getString(R.string.menu_item_help) };
, ListView ,
, ,
(menu_item.xml).
.
ArrayAdapter:
ArrayAdapter<String> adapt = new ArrayAdapter<String>(this,
R.layout.menu_item, items);
, ListView :
menuList.setAdapter(adapt);
QuizMenuActivity.java
Been There, Done That! Android. -
, . 8.3.
. 8.3.
Been There, Done That!
, ... ___________________________________________________
, AndroidManifest.xml,
QuizMenuActivity, .
, . ,
.
ListView
,
ListView.
, , ,
ListView.
,
ListView, setOnltemClickListener()
ListView. , onltemClick(),
AdapterView.OnltemClickListener, :
menuList.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View itemClicked,
int position, long id) {
TextView textView = (TextView) itemClicked;
String strText = textView.getText().toString();
if (strText.equalsIgnoreCase(getResources().getString(
R.string.menu_item_play))) {
// Launch the Game Activity
startActivity(new Intent(QuizMenuActivity.this,
QuizGameActivity.class));
} else if (strText.equalsIgnoreCase(getResources().getString(
R.string.menu_item_help))) {
// Launch the Help Activity
startActivity(new Intent(QuizMenuActivity.this,
QuizHelpActivity.class));
} else if (strText.equalsIgnoreCase(getResources().getString(
R.string.menu_item_settings))) {
// Launch the Settings Activity
startActivity(new Intent(QuizMenuActivity.this,
QuizSettingsActivity.class));
} else if (strText.equalsIgnoreCase(getResources().getString(
R.string.menu_item_scores))) {
// Launch the Scores Activity
startActivity(new Intent(QuizMenuActivity.this,
QuizScoresActivity.class));
}
});
onItemClick() ,
, .
TextView ( ,
TextView, ,
instanceof) Text
. ,
, id View.
, OnitemClickListener()
,
Been There, Done That!.
ListView
( ,
) ListView, -. ListView
, . ListView
.
, ... __________________________________________________
ListView, ListActivity,
ListView.
ListView
. divider ,
. ,
( ).
,
.
.
ListView ,
. ListView
listselector. ListView
- .
_____________________________________________
ListView,
menu.xml divider ListView
@drawable/divider, (
), .
ListView.
menu.xml
listSelector ListView @drawable/textured, ( ),
.
. 8.4.
Been There, Done That!,
ListView
L i s t V i e w ,
Been There, That! ,
, . 8.4.
Android :
. ,
View.
ListView, ,
.
,
, , , Play (). Delete () Add to Playlist ( ),
.
. ,
Menu .
.
, ,
Been There, Done That!.
,
,
.
,
, .
QuizGameActivity,
.
XML /res/menu gameoptions.xml.
<menu>,
<item>. <item>
. .
id , .
title
.
icon ,
.
; Settings () Help
(). , gameoptions.xml
:
<menu
xmlns:android=http://schemas.android.com/apk/res/android>
<item
android:id=@+id/settings_menu_item
android:title=@string/menu_item_settings
android:icon=@android:drawable/ic_menu_preferences></item>
<item
android:id=@+id/help_menu_item
android:title=@string/menu_item_help
android:icon=@android:drawable/ic_menu_help></item>
</menu>
title ,
. ,
Android SDK,
.
. ... ___________________________________________________
,
android.R.drawable, , ,
. ,
, Android SDK, . , /platforms,
/data/res/drawable.
, Menu,
onCreateOptionsMenu() QuizGameActivity. ,
()
Intent
onCreateOptionsMenu() QuizGameActivity:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.gameoptions, menu);
menu.findItem(R.id.help_menu_item).setIntent(
new Intent(this, QuizHelpActivity.class));
menu.findItem(R.id.settings_menu_item).setIntent(
new Intent(this, QuizSettingsActivity.class));
return true;
}
,
, onOptionsltemSelected()
. , ,
, :
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
startActivity(item.getIntent());
return true;
}
, ... ___________________________________________________
onOptionsltemSelected() . , ,
setlntent(), .
,
Menultem, .
, : .
, , ,
Menu (. 8.5).
. 8.5.
Been There, Done That!
.
, Android- ,
-, RelativeLayout,
ListView.
,
Android, .
: setOnClickListener()
setOnltemClickListener() ListView?
: setOnClickListener()
ListView. setOnltemClick Listener()
-
View ListView.
: ListView ,
. ,
?
: ListView
, setSelection().
1.
? Menu.
2.
ListView?
A.
B.
C.
.
.
.
3.
-
View ?
A.
B.
C.
RelativeLayout.
AbsoluteLayout.
LinearLayout.
4.
? ListActivity
,
ListView.
1.
. Menu . ,
View.
2.
,
ListView ,
.
3.
- RelativeLayout
, view ,
, . - RelativeLayout
View
-.
4.
. ListActivity ListView.
1.
,
ListView. ListView
, ,
- ImageView, - TextView.
(: .)
2.
,
.
3.
LinearLayout menu.xml,
, ,
.
9.
, :
;
;
;
;
XML-.
Been There, Done That!:
.
, TextView ,
, ,
Android SDK.
.
,
TabHost, . , ,
XML-
.
, , :
.
. 9.1 .
, .
, ,
. -,
/res/layout/help.xml
QuizHelpActivity.
. 9.1.
9.2. -
Been There, Done That!
,
( - RelativeLayout)
TextView .
. 9.2 .
.
help.xml, -
.
, ,
,
.
/res/raw/quizhelp.txt,
TextView .
. ... ___________________________________________________
. .
HTML. , .
help.xml .
Eclipse . ,
- .
- LinearLayout
background @drawable/bkgrnd.
- LinearLayout.
, menu.xml.
- RelativeLayout,
ImageView TextView. text TextView
@string/help,
.
TextView TextView_HelpText LinearLayout, - RelativeLayout.
layout_width layout_height fill_parent.
, ... ___________________________________________________
, -,
, TextView,
, , Email Android, linksClickable TextView true, autoLink
all.
, help.xml.
, ... ___________________________________________________
,
TextView, textStyle.
, help.xml ,
QuizHelpActivity , quizhelp.txt
TextView TextView_HelpText.
, , , quizhelp.txt.
/raw.
. ,
,
,
Android Eclipse.
. ... ___________________________________________________
Android-
Android .
Fi1 Stream,
Context:
getFilesDir(), getDir(), openFileInput(), openFileOutput(),
deleteFile() getFileStreamPath().
Android , Java,
/,
. ,
openRawResource(), :
InputStream iFile = getResources().openRawResource(R.raw.quizhelp);
, , InputStream,
.
.
, TextView,
findViewById(), ,
setText(), :
TextView helpText = (TextView) findViewById(R.id.TextView_HelpText);
String strFile = inputStreamToString(iFile);
helpText.setText(strFile);
____________________________________________________________
inputStreamToString(), QuizHelpActivity,
. .
InputStream
string, InputStream.
______________________________________
, , ,
, . 9.3.
TextView.
, , , , ..
,
TextView , , .
. 9.3.
Been There, Done That!
, ,
.
, ,
. :
.
. , .
. ,
TextView ListView
. ,
.
,
. . 9.4
.
. 9.4.
Been There, Done That!
, , ,
-.
/res/layout/scores.xml,
QuizScoresActivity. ,
- RelativeLayout,
.
TabHost ,
- TableLayout
, .
TabHost
,
TabHost, ,
. TabHost
. XML- ,
:
TabHost;
TabHost
- LinearLayout, TabWidget
- FrameLayout;
-
FrameLayout.
. 9.5 - .
. 9.5. -
Been There, Done That!
. scores.xml,
- .
, , 6\\ ,
L.-. Been There, Done That!
,
, .
XML-, ,
.
/res/xml XML-
allscores.xml friendscores.xml,
.
<?xml version=1.0 encoding=utf-8?>
<! XML- >
<scores>
<score
username=LED
score=12345
rank=1 />
<score
username=SAC
score=12344
rank=2 />
<score
username=NAD
score=12339
rank=3 />
</scores>
.
<scores> <score>.
<score> : username, score rank.
,
20 ( ) .
scores.xml. -,
.
! ____________________________________________________________
Eclipse
TabHost. ,
, XML-.
Android , Android.
1.
, .
2.
- LinearLayout, android:background @drawable/bkgrnd.
- LinearLayout.
3.
, .
- RelativeLayout
ImageView TextView. text TextView
@string/scores,
.
4.
- LinearLayout, - RelativeLayout, TabHost TabHostl.
layout width layout_height
fill_parent.
5.
TabHost -
LinearLayout, orientation vertical.
layout_width layout_height -
fill_parent.
6.
- LinearLayout, , TabWidget. id
@android:id/tabs.
7.
- LinearLayout, 5,
, TabWidget,
- FrameLayout. id FrameLayout @android:id/tabcontent,
layout_width layout_height fill_parent.
8.
. -
FrameLayout - TableLayout
. - TableLayout
. -
TableLayout_FriendScores.
layout_width
layout_height - fill_parent.
stretchColums *,
.
! ____________________________________________________________
, , @android:id/tabcontent;
, .
Android.
, @+id/tabcontent. .
,
ScrollView. ,
- TableLayout,
- ScrollView scrollbars
ScrollView vertical.
layout_width layout_height ScrollView.
, TabHost (
,
- TableLayout), :
<TabHost
android:id=@+id/TabHost1
android:layout_width=fill_parent
android:layout_height=fill_parent>
<LinearLayout
android:orientation=vertical
android:layout_width=fill_parent
android:layout_height=fill_parent>
<TabWidget
android:id=@android:id/tabs
android:layout_width=fill_parent
android:layout_height=wrap_content />
<FrameLayout
android:id=@android:id/tabcontent
android:layout_width=fill_parent
android:layout_height=fill_parent>
<ScrollView
android:id=@+id/ScrollViewAllScores
android:layout_width=fill_parent
android:layout_height=fill_parent
android:scrollbars=vertical>
<TableLayout
android:id=@+id/TableLayout_AllScores
android:layout_width=fill_parent
android:layout_height=fill_parent
android:stretchColumns=*>
</TableLayout>
</ScrollView>
<ScrollView
android:id=@+id/ScrollViewFriendScores
android:layout_width=fill_parent
android:layout_height=fill_parent
android:scrollbars=vertical>
<TableLayout
android:id=@+id/TableLayout_FriendScores
android:layout_width=fill_parent
android:layout_height=fill_parent
android:stretchColumns=*></TableLayout>
</ScrollView>
</FrameLayout>
</LinearLayout>
</TabHost>
scores.xml.
! ____________________________________________________________
, Eclipse NullPointerException:null.
TabHost Android 2.1.
.
QuizScoresActivity.java
, TabHost.
TabHost ,
All Scores ( )
. ,
- TableLayout .
TabHost
TabHost
. ,
, findViewById().
setup() TabHost, TabHost
TabWidget FrameLayout
, , :
TabHost host = (TabHost) findViewById(R.id.TabHost1);
host.setup();
TabHost
, TabHost , , addTab().
TabSpec,
. , All Scores ( ):
TabSpec allScoresTab = host.newTabSpec(allTab);
allScoresTab.setIndicator(getResources().getString(R.string.all_scores
),
getResources().getDrawable(android.R.drawable.star_on));
allScoresTab.setContent(R.id.ScrollViewAllScores);
host.addTab(allScoresTab);
QuizScoresActivity.java
Android. , ,
- .
! ____________________________________________________________
TabHost,
TabActivity, TabHost.
.
XML-
Android XML-,
:
XML-
. XML-
.
XML-
XML-,
. , /res/ xml/allscores.xml.
XmlResourceParser,
getXML(), :
XmlResourceParser mockAllScores =
getResources().getXml(R.xml.allscores);
XML- XmlResourceParser
,
:<scores> <score >. <score>
username, rank score. ,
, L-
while(),
next(), :
int eventType = -1;
boolean bFoundScores = false;
// Find Score records from XML
while (eventType != XmlResourceParser.END_DOCUMENT) {
if (eventType == XmlResourceParser.START_TAG) {
// Get the name of the tag (eg scores or score)
String strName = scores.getName();
if (strName.equals(score)) {
bFoundScores = true;
String scoreValue = scores.getAttributeValue(null,
score);
String scoreRank = scores.getAttributeValue(null, rank);
String scoreUserName =
scores.getAttributeValue(null, username);
insertScoreRow(scoreTable, scoreValue, scoreRank,
scoreUserName);
}
}
eventType = scores.next();
}
START_TAG.
<score>, , .
,
getAttributeValue().
TableRow - TableLayout (
).
L- TableLayout TabHost,
QuizScoresActivity.
TableRow - TableLayout,
, ,
.
,
. ,
, ( . 9.6).
. 9.6.
Been There, Done That!
TabHost, , L .
: , TabHost,
id,
Android?
: ,
.
, , Android
( ) ,
.
Android SDK.
: .
?
: ,
. -, L-,
. -,
- view .
, ,
,
, ,
Android - ,
. ,
L-, ,
, . ,
Eclipse
.
1.
.
? TextView
2.
?
A.
B.
C.
Tabify.
TabActivity.
TabController.
3.
? XML- XML-pe,
.
4.
?
A.
B.
C.
Scroll Layout.
Scroller.
ScrollView.
. TextView
.
. , ,
TabActivity,
.
. XML- , L- .
XML-, XML-
XML Pull Parser.
. ScrollView
view .
1.
,
. ,
Android- Android.
, .
www.openintents.org/en/intentstable.
2.
,
.
, TableLayout TextView.
.
10.
, :
;
EditText;
Button;
Spinner;
SharedPreferences.
Been There,
Done That!.
, .
, EditText, Spinner Button. ,
, .
.
, , ,
. (
, .)
, :
Nickname (). , .
, ,
20 ,
.
Email. .
.
Password (). .
. ,
. .
Date of Birth ( ).
, .
,
.
Gender (). ,
. : Male
() (1), Female () (2) Prefer Not to Say (He ) (0).
. 10.1 .
. 10.1.
Been There, Done That!
,
. ,
.
.
,
ScrollView.
, ,
. ScrollView
, LinearLayout .
-
LinearLayout: , TextView,
, , . ,
Nickname () TextView,
(Nickname:), EditText,
.
,
:
Nickname () Email
,
EditText.
Password ()
EditText.
. Button,
Dialog, (
EditText).
, ,
TextView.
Date of Birth ( ) DatePicker.
DatePicker
, ,
. , ,
, Button,
DatePickerDialog.
, (
) TextView.
Gender () ,
Spinner (
).
. 10.2 - .
. 10.2. -
Been There, Done That!
. settings.xml, - .
, ,
, . ,
. ,
,
.
.
strings.xml:
,
TextView (, NickName:);
Button (, SetPassword);
, TextView
;
, TextView ,
Date of Birth ( ) ;
, TextView ,
;
Gender (),
Spinner (, Male).
, strings.xml.
Spinner, ListView, .
,
Gender (), ,
.
String (
ArrayAdapter). ,
(Male, Female, Prefer Not To Say), ,
, .
,
/res/values/arrays.xml.
string-array genders. string-array
item .
, strings.xml
,
:
<string
name=gender_male>Male</string>
<string
name=gender_female>Female</string>
<string
name=gender_neutral>Prefer Not To Say</string>
arrays.xml item
genders . , item
( 0) @string/gender_neutral.
arrays.xml :
<?xml version=1.0 encoding=utf-8?>
<resources>
<string-array
name=genders>
<item>@string/gender_neutral</item>
<item>@string/gender_male</item>
<item>@string/gender_female</item>
</string-array>
</resources>
arrays.xml. ,
genders ,
, R.array.genders.
settings.xml .
, Eclipse
. ,
-.
- LinearLayout,
background @drawable/bkgrnd.
- LinearLayout.
, ,
.
ScrollView,
. isScrollContainer
true, scrollbars vertical.
layout_width layout_height
fill_parent.
ScrollView - LinearLayout,
. orientation
vertical, layout_width layout_height
fill_parent.
- LinearLayout.
- LinearLayout TextView,
Nickname ().
TextView EditText.
id EditText_Nickname, maxLength
20, maxLines 1, inputType
textPersonName.
TextView,
Email. EditText,
id EditText_Email, maxLines
1, inputType textEmailAddress.
Password (),
TextView,
. - LinearLayout
, :
Button TextView. id Button
Button_Password, text
Password (). TextView , Password () (
, Password not set).
, Password
(), Date of Birth ( ).
-
Date of Birth ( ). -
LinearLayout ,
: Button TextView. id
Button Button_DOB, text
Date of Birth ( ). TextView
,
Date of Birth ( ) ( , Date not set).
Gender (), TextView,
Gender ().
Spinner id Spinner_Gender.
, , , ,
, , .
settings.xml.
, settings.xml ,
QuizSettingsActivity,
. ,
.
EditText
EditText, TextView.
, . . 10.3
EditText.
. 10.3. EditText
EDITTEXT
, TextView (, textColor
textSize), EditText.
EditText, .
inputType. Android ,
. , inputType
EditText, Email,
textEmailAddress, Android
, ( @).
textPassword inputType ,
.
minLines maxLines. ,
.
maxLength. ,
. , Nickname
(), maxLength EditText, ,
20.
TextView, ,
EditText, getText() setText(). ,
, EditText EditText_Nickname,
getText(), :
getText() Editable,
.
, EDITTEXT
, EditText,
.
EditText , . ,
Enter
Nickname () View. OnKeyListener,
setOnKeyListener() EditText, :
final EditText nicknameText =
(EditText) findViewById(R.id.EditText_Nickname);
nicknameText.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
String strNicknameToSave =
nicknameText.getText().toString();
// TODO: Save Nickname setting (strNicknameToSave)
return true;
}
return false;
}
});
EDITTEXT
. ,
EditText, , EditText_Pwdl
EditText_Pwd2. TextView TextView_PwdProblem
, .
:
final EditText p1 = (EditText) findViewById(R.id.EditText_Pwd1);
final EditText p2 = (EditText) findViewById(R.id.EditText_Pwd2);
final TextView error = (TextView)
findViewById(R.id.TextView_PwdProblem);
TextWatcher EditText,
addTextChangedListener(), :
p2.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
String strPass1 = p1.getText().toString();
String strPass2 = p2.getText().toString();
if (strPass1.equals(strPass2)) {
error.setText(R.string.settings_pwd_equal);
} else {
error.setText(R.string.settings_pwd_not_equal);
}
}
// Other required overrides do nothing
});
EditText EditText_Pwd1
. ,
EditText_Pwd2, EditText
TextView TextView _PwdProblem,
, (. 10.4).
. 10.4. Password ()
EditText TextView
Button
Button Android , ,
. , Button
, . . 10.5 Button.
. 10.5. Button
BUTTON
, TextView, textColor
textSize, Button.
Button: Dialog,
, DatePickerDialog.
Button,
text,
layout_wtdth layout_height Button
wrap_content,
.
, ... __________________________________________________
Android Button; Button ImageButton. ImageButton , Button, ,
Drawable.
, Button. ,
(
),
background,
drawableTop,
drawableBottom, drawableLeft drawableRight Button
Drawable.
______________________________________
Button Button_DCB,
settings.xml:
1.
background Button, Drawable
@drawable/textured.
2.
drawableTop Button,
Drawable
@drawable/divider.
3.
drawableBottom Button,
Drawable
@drawable/divider. , Button
. !
4.
Button ,
background, drawableTop drawableBottom
Button_DOB.
Button
setOnClickListener(). , onClick()
View.OnClickListener. .
, , Button
Button_DOB, onCreate()
QuizSettingsActivity :
Button pickDate = (Button) findViewById(R.id.Button_DOB);
pickDate.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
});
, ... ______________________________________________________
,
.
. 10.6. ,
, onClick()
Button_DOB, :
Toast.makeText(QuizSettingsActivity.this,
TODO: Launch DatePickerDialog,
Toast.LENGTH_LONG).show();
. 10.6 .
Spinner
Spinner
Android.
(. 10.7, ), Spinner , (. 10.7, ) .
. 10.7. Spinner ()
()
SPINNER
Spinner .
ListView, Spinner , .
Spinner, :
1.
2.
3.
Spinner .
.
setAdapter() Spinner.
Spinner ,
findViewById():
. Spinner
-. . , Android , Spinner, . , android.R.layout.simple_spinner_item
Spinner.
android.R.layout.simple_spinner_dropdown_item .
,
genders ArrayAdapter,
createFromResource():
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this,
R.array.genders, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
, setAdapter() Spinner,
:
spinner.setAdapter(adapter);
SPINNER
, Spinner , ,
, setSelection(). , , ,
, 2 (
). ,
Spinner Female (), :
spinner.setSelection(2);
Spinner .
Spinner ,
setOnItemSelectedListener() Spinner,
. ,
onItemSelected() AdapterView.setOnItemSelectedListener(),
:
spinner.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View
itemSelected,
int selectedItemPosition, long selectedId) {
// TODO: Save item index (selectedItemPosition) as Gender
setting
}
// Other required overrides
});
. 10.8.
Been There, Done That!
___________________________________________________________________
Android SDK
AdapterView.OnItemSelectedListener.
SHAREDPREFERENCES
, SharedPreferences. ,
.
SharedPreferences
QuizActivity :
public static final String GAME_PREFERENCES = GamePrefs;
QuizActivity , :
public static final String GAME_PREFERENCES_NICKNAME = Nickname;
// String
public static final String GAME_PREFERENCES_EMAIL = Email;
// String
public static final String GAME_PREFERENCES_PASSWORD = Password;
// String
public static final String GAME_PREFERENCES_DOB = DOB;
// Long
public static final String GAME_PREFERENCES_GENDER = Gender;
// Int
SharedPreferences
, ,
, . QuizSettingsActivity
-,
SharedPreferences:
SharedPreferences mGameSettings;
onCreate() -
:
mGameSettings =
getSharedPreferences(GAME_PREFERENCES, Context.MODE_PRIVATE);
SharedPreferences
( GAME_PREFERENCES,
QuizActivity). MODE_PRIVATE ,
.
, , - , SharedPreferences.Editor,
. , EditText Nickname (), , getText() EditText:
final EditText nicknameText =
(EditText) findViewById(R.id.EditText_Nickname);
String strNickname = nicknameText.getText().toString();
, String ,
EditText,
SharedPreferences.Editor, putString():
Editor editor = mGameSettings.edit();
editor.putString(GAME_PREFERENCES_NICKNAME, strNickname);
editor.commit();
Nickname (),
Email Gender (). Date of Birth ( ) Password ()
,
DatePickerDialog ( ) Dialog ( ).
QuizSettingsActivity ,
TODO, , .
SharedPreferences
,
( ).
. . ,
, Nickname (), ,
, EditText EditTextNickname.
contains() getString()
SharedPreferences:
final EditText nicknameText =
(EditText) findViewById(R.id.EditText_Nickname);
if (mGameSettings.contains(GAME_PREFERENCES_NICKNAME)) {
nicknameText.setText(mGameSettings.getString(
GAME_PREFERENCES_NICKNAME, ));
}
,
GAME_PREFERENCES_NICKNAME, SharedPreferences, contains(). contains() true,
( String) SharedPreferences, getString().
Nickname (), Email Password () getString().
Date of Birth ( ) getLong(), Gender () getInt().
, ... ______________________________________________________
Android XML-. File Explorer () DDMS Eclipse. ,
SharedPreferences, :
/data/data/< >/shared_prefS/< >.xml.
onDestroy()
QuizSettingsActivity , :
@Override
protected void onDestroy() {
Log.d(DEBUG_TAG, SHARED PREFERENCES);
Log.d(DEBUG_TAG, Nickname is:
+ mGameSettings.getString(GAME_PREFERENCES_NICKNAME, Not set));
Log.d(DEBUG_TAG, Email is:
+ mGameSettings.getString(GAME_PREFERENCES_EMAIL, Not set));
Log.d(DEBUG_TAG, Gender (M=1, F=2, U=0) is:
+ mGameSettings.getInt(GAME_PREFERENCES_GENDER, 0));
// We are not saving the password yet
Log.d(DEBUG_TAG, Password is:
+ mGameSettings.getString(GAME_PREFERENCES_PASSWORD, Not set));
// We are not saving the date of birth yet
Log.d(DEBUG_TAG, DOB is:
+ DateFormat.format(MMMM dd, yyyy, mGameSettings.getLong(
GAME_PREFERENCES_DOB, 0)));
super.onDestroy();
}
,
QuizSettingsActivity (, Back ), LogCat.
- Been There,
Done That!. , ,
EditText, ,
Spinner. , Button, Dialog. , SharedPreferences.
: Save () Cancel (), -?
: , ,
, , .
( , , .).
.
: Spinner ?
: , , Spinner, . , Spinner .
1.
? EditText TextView.
2.
Android?
Button.
TextButton.
ImageButton.
3.
? Calendar
SharedPreferences.
A.
B.
C.
1.
. TextView ,
, getText() setText(),
EditText.
2.
. Android : Button
. ImageButton
Drawabe.
3.
. SharedPreferences
: Boolean, float, int, long String.
long (
).
1.
Button Password ().
Clicked! (!) ,
Button.
2.
EditText ,
(KEYCODE_DPAD_UP)
(KEYCODE_DPAD_DOWN) , Enter
(KEYCODE_ENTER).
3.
Clear (), ,
clear() SharedPreferences.Editor.
commit().
11.
,
, :
;
DatePickerDialog;
;
.
Been There,
Done
That!,
Dialog
QuizSettingsActivity. Dialog
, .
Dialog, DatePickerDialog
, ,
Dialog, .
Dialog
, . ,
, .
Dialog
Activity .
Dialog
Android SDK
Dialog, :
Dialog Dialog (. 11.la).
AlertDialog , Button
(. 11.1 b).
Character PickerDialog ,
, (. 11.1c).
ProgressDialog ProgressBar,
(. 11.1e)
. 11.1. Dialog,
Android
Dialog
, Dialog, . Dialog
.
Dialog ,
. Dialog , . , Dialog, Dialog. ,
Dialog:
showDialog() Dialog.
dismissDialog()
Dialog . Dialog
Dialog .
Dialog showDialog()
.
removeDialog() Dialog
Dialog . Dialog
.
showDialog() Dialog .
, , .
Dialog ( ).
showDialog() Dialog
. onCreateDialog(),
.
onCreateDialog() .
Dialog,
onCreateDialog() switch
Dialog Dialog.
Dialog Dialog ,
, .
onPrepareDialog() .
onCreateDialog()
, onPrepareDialog() showDialoq(), ,
.
, , showDialog()
Dialog ,
onCreateDialog().
Dialog ,
. , , dismissDialog()
Dialog.
Dialog . .
, ,
removeDialog()
Dialog.
DATEPICKERDIALOG
Dialog
QuizSettingsActivity. ,
DatePickerDialog, . DatePickerDialog QuizSettingsActivity
.
1.
.
2.
onCreateDialog() ,
DatePickerDialog
, 1.
3.
onPrepareDialog() ,
DatePickerDialog
.
4.
DatePickerDialog
showDialog(),
Dialog.
DatePickerDialog
QuizSettingsActivity
DatePickerDialog, , ,
:
static final int DATE_DIALOG_ID = 0;
onCreateDialog()
QuizSettingsActivity case
Dialog:
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
// TODO: Return a DatePickerDialog here
Using DatePickerDialog 185
}
return null;
}
,
DatePickerDialog. switch DATE_ DIALOG_ID
DatePickerDialog
. DatePickerDialog
DatePickerDialog.OnDateSetListener, , onDateSet(), ,
,
SharedPreferences:
DatePickerDialog dateDialog =
new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
Time dateOfBirth = new Time();
dateOfBirth.set(dayOfMonth, monthOfYear, year);
long dtDob = dateOfBirth.toMillis(true);
dob.setText(DateFormat
.format(MMMM dd, yyyy, dtDob));
Editor editor = mGameSettings.edit();
editor.putLong(GAME_PREFERENCES_DOB, dtDob);
editor.commit();
}
}, 0, 0, 0);
DatePicker , .
, DatePickerDialog,
. DatePickerDialog
, ,
, onCreateDialog(),
( ). , DatePickerDialog,
switch onCreateDialog():
return dateDialog;
DatePickerDialog
DatePickerDialog ,
, onPrepareDialog(),
DatePicker , , .
! ______________________________________________________________
, Calendar.
Calendar , .
Calendar, DatePickerDialog.
onPrepareDialog()
Dialog, Dialog,
. , , -
DatePickerDialog,
updateDate():
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
super.onPrepareDialog(id, dialog);
switch (id) {
case DATE_DIALOG_ID:
// Handle any DatePickerDialog initialization here
DatePickerDialog dateDialog = (DatePickerDialog) dialog;
int iDay, iMonth, iYear;
// Check for date of birth preference
if (mGameSettings.contains(GAME_PREFERENCES_DOB)) {
// Retrieve Birth date setting from preferences
long msBirthDate =
mGameSettings.getLong(GAME_PREFERENCES_DOB, 0);
Time dateOfBirth = new Time();
dateOfBirth.set(msBirthDate);
iDay = dateOfBirth.monthDay;
iMonth = dateOfBirth.month;
iYear = dateOfBirth.year;
} else {
Calendar cal = Calendar.getInstance();
// Todays date fields
iDay = cal.get(Calendar.DAY_OF_MONTH);
iMonth = cal.get(Calendar.MONTH);
iYear = cal.get(Calendar.YEAR);
}
// Set the date in the DatePicker to the date of birth OR to
the
// current date
dateDialog.updateDate(iYear, iMonth, iDay);
return;
}
}
DatePickerDialog
DatePickerDialog,
, Button
. DatePickerDialog,
Button Button_DOB.
Button_DOB,
Toast.
, showDialog() DatePickerDialog, . 11.2:
Button pickDate = (Button) findViewById(R.id.Button_DOB);
pickDate.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showDialog(DATE_DIALOG_ID);
}
});
. 11.2. DatePickerDialog,
, ______________________________________________________
DateFormat
. DateFormat , Calendar, , long
( ). , , long, January 1,2010, format() DateFormat, :
String strDate = DateFormat.format(MMMM dd, yyyy, dtDob);
Dialog ,
. AlertDialog AlertDialog.Builder . , :
1.
,
AlertDialog.
2.
Dialog.
3.
onCreateDialog() , AlertDialog.
4.
, showDialog().
Been There, Done That! . . 11.3
( ).
, ,
, ,
. ,
. . 11.4
.
, EditText. TextView ,
, .
. 11.3.
. 11.4.
Been There, Done That!
. 11.5. -
Been There, Done That!
. 11.5 - .
Button,
AlertDialog.
-.
,
.
password_dialog.xml. . , :
Eclipse
/res/layout/password_dialog.xml.
- LinearLayout. id root,
orientation vertical. layout_width
layout_height fill_parent. - LinearLayout.
TextView Password (). EditText id EditText_Pwdl, maxLines 1, inputType textPassword.
TextView Password (Again) ( ()). EditText id EditText_Pwd2, maxLines 1,
inputType textPassword.
, TextView id,
TextView_PwdProblem,
. TextView ,
.
password_.dialog.xml.
QUIZSETTINGSACTIVITY
AlertDialog, , ,
:
static final int PASSWORD_DIALOG_ID = 1;
onCreateDialog()
. View (. .
):
LayoutInflater inflater =
(LayoutInflater)
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View layout =
inflater.inflate(R.layout.password_dialog,
(ViewGroup) findViewById(R.id.root));
password_dialog.xml View,
LayoutInflater atop, ,
( - LinearLayout root,
).
, view,
, . .
, EditText_Pwd1 View layout, findViewByid(), :
final EditText
(EditText)
final EditText
(EditText)
p1 =
layout.findViewById(R.id.EditText_Pwd1);
p2 =
layout.findViewById(R.id.EditText_Pwd2);
EditText, , ,
EditText .
, EditText, TextWatcher,
EditText.
TextView
TextView_PwdProblem, :
final TextView error =
(TextView) layout.findViewById(R.id.TextView_PwdProblem);
p2.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
String strPass1 = p1.getText().toString();
String strPass2 = p2.getText().toString();
if (strPass1.equals(strPass2)) {
error.setText(R.string.settings_pwd_equal);
} else {
error.setText(R.string.settings_pwd_not_equal);
});
}
}
// ... other required overrides do nothing
TextWatcher , .
, afterTextChanged().
, View , AlertDialog.
AlertDialog.Builder :
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(layout);
builder.setTitle(R.string.settings_button_pwd);
-
AlertDialog.Builder .
Dialog setTitle().
Button:
() (Cancel). , ,
Button
removeDialog(), :
QuizSettingsActivity.this
.removeDialog(PASSWORD_DIALOG_ID);
() .
,
EditText, , ,
:
builder.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
TextView passwordInfo =
(TextView) findViewById(R.id.TextView_Password_Info);
String strPassword1 = p1.getText().toString();
String strPassword2 = p2.getText().toString();
if (strPassword1.equals(strPassword2)) {
Editor editor = mGameSettings.edit();
editor.putString(GAME_PREFERENCES_PASSWORD,
strPassword1);
editor.commit();
passwordInfo.setText(R.string.settings_pwd_set);
} else {
Log.d(DEBUG_TAG, Passwords do not match.
+ Not saving. Keeping old password (if set).);
}
QuizSettingsActivity.this
.removeDialog(PASSWORD_DIALOG_ID);
}
});
, Cancel,
.
setNegativeButton() Builder:
builder.setNegativeButton(android.R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
QuizSettingsActivity.this
.removeDialog(PASSWORD_DIALOG_ID);
}
});
Builder, create(), AlertDialog:
AlertDialog passwordDialog = builder.create();
return passwordDialog;
, , ,
, , ,
showDialog() .
Been There, Done That!
, Button
Button_Password. ,
Button
:
Button setPassword = (Button) findViewById(R.id.Button_Password);
setPassword.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showDialog(PASSWORD_DIALOG_ID);
}
});
. 11.6 ,
Dialog.
. 11.6.
Been There, Done That!
,
Dialog
Been There, Done That!. . Dialog ,
, Dialog . , Dialog.
: ?
: Dialog,
Dialog .
, showDialog(),
. ,
removeDialog().
: , Dialog?
:
Dialog, getOwneActivity() Dialog.
1.
?
A.
B.
C.
Popup.
ActivityWindow.
Dialog.
2.
?
, .
3.
?
, Alert ContinueOrCancel.
1.
. Dialog
onCreateDialog() showDialog().
2.
. onPrepareDialog().
3.
.
1.
onDataSet() DatePickerDialog
,
TextView .
2.
,
TextView
( ).
12.
, :
; ViewSwitcher;
XML-;
.
Been There, Done Thai! . - .
, - View,
imageSwitcher TextSwitcher, . ,
QuizGameActivity ,
.
( ).
, . ,
, , - .
,
. . . 12.1 .
. 12.1.
Been There, Done That!
, , : , , .
-,
/res/ tayout/game.xml QuizGameActivity.
. 12.2. -
Been There, Done That!
- RelativeLayout . , - RelativeLayout ,
: ImageView, TextView Button
.
12.2 - .
, Button,
ImageView TextView
. ( )
ImageSwitcher
TextSwitcher, ViewSwitcher.
ViewSwitcher
- View: View View,
.
View, View
, , / .
View ViewFactory.
, ImageSwitcher
ViewFactory ImageView
ImageView , Button.
, TextSwitcher - TextView,
.
. 12.3 - ,
ImageSwitcher TextSwitcher.
. 12.3. -
Been There, Done That! ImageSwitcher TextSwitcher
.
game.xml,
- .
:
( string) ,
Button, , ;
( Dimension) ( Color),
;
XML-, .
String,
Dimension Color, ,
.
, Been There, Done That!,
.
,
XML-:
/res/xml/samplequestions.xml /res/xml/smaplequestions2.xml. ,
, XML-
. ,
, , .
-
- XML- . :
<?xml version=1.0 encoding=utf-8?>
<! This is a mock question XML chunk >
<questions>
<question
number=1
text=
Have you ever been on an African safari?
imageUrl=
http://www.perlgurl.org/Android/BeenThereDoneThat/Question
s/q1.png
/>
<question
number=2
text=
Have you ever climbed a mountain?
imageUrl=
http://www.perlgurl.org/Android/BeenThereDoneThat/Question
s/q2.png
/>
<question
number=3
text=
Have you ever milked a cow?
imageUrl=
http://www.perlgurl.org/Android/BeenThereDoneThat/Question
s/q3.png
/>
</questions>
, XML- .
<questions>, <question>. <question> : (number),
(text) URL , (imageUrl).
,
, .
game.xml .
, Eclipse
. , - .
1.
- LinearLayout
background @drawable/bkgrnd.
- LinearLayout;
2.
- RelativeLayout
layout_width layout_height wrap_content.
3.
ImageView -
RelativeLayout .
src
ImageView
@drawable/quizicon. id
ImageView
@+id/ImageView_Header,
@+id/ImageView_Header2,
@+id/ImageView_Header3
@+
id/ImageView_Header4.
4.
ImageView id,
ImageView_Header, layout_alignParentLett
layout_alignParentTop true.
5.
ImageView id,
ImageView_Header2,
layout_
alignParentRight layout_alignParentTop true.
6.
ImageView id,
ImageView_Header3, layout_alignParentLeft
layout_alignParentBottom true.
7.
ImageView id,
ImageView_Header4,
layout_alignParentRight layout_alignParentBottom
true.
8.
- RelativeLayout - RelativeLayout,
ImageView, . -
id @+id/RelativeLayout_Content.
layout_width layout_height wrap_content. ,
gravity center,
layout_margin 45.
9.
- RelativeLayout
ImageSwitcher id,
@+id/ImageSwitcher_QuestionImage.
@+id/TextSwitcher_QuestionText,
wap_content.
layout_alignParentBottom
VIEWSWITCHER
, , View, Android SDK , ViewSwitcher. ViewSwitcher
. ViewSwitcher
-
- -,
. - View
ViewSwitcher
ViewFactory.
ViewSwitcher ;
TextSwitcher. ViewSwitcher,
TextView.
ImageSwitcher. ViewSwitcher,
ImageView.
ViewSwitcher
-,
-
View.
ViewFactory -,
ImageSwitcher TextSwitcher
.
, ... ______________________________________________________
ViewSwitcher.
, ViewSwitcher.
ViewFactory - View ViewSwitcher.
ViewFactory
- View ViewSwitcher
ViewSwitcher
ViewFactory, setFactory(). ViewFactory
makeView(). View . , ViewFactory
TextSwitcher -
TextView, ViewFactory ImageSwitcher
- ImageView.
ViewFactory ImageSwitcher,
:
, , , -
makeView(). ,
- ViewSwitcher,
-.
ViewSwitcher,
VlewFactory setFactory(). ,
ViewFactory ImageSwitcher
MyImageSwitcherFactory, :
ImageSwitcher questionImageSwitcher =
(ImageSwitcher) findViewById(R.id.ImageSwitcher_QuestionImage);
questionImageSwitcher.setFactory(new MyImageSwitcherFactory());
ViewFactory,
- TextView
. MyTextSwitcherFactory,
ViewFactory, , :
private class MyTextSwitcherFactory implements
ViewSwitcher.ViewFactory {
public View makeView() {
TextView textView = new TextView(QuizGameActivity.this);
textView.setGravity(Gravity.CENTER);
Resources res = getResources();
float dimension = res.getDimension(R.dimen.game_question_size);
int titleColor = res.getColor(R.color.title_color);
int shadowColor = res.getColor(R.color.title_glow);
textView.setTextSize(dimension);
textView.setTextColor(titleColor);
textView.setShadowLayer(10, 5, 5, shadowColor);
return textView;
}
}
,
,
MyImageSwitcherFactory, MyTextSwitcherFactory
makeView() TextView ,
.
TextSwitcher
TextSwitcher
- TextView.
TextSwitcher TextSwitcher QuestiorT^x*
.
TEXTSWITCHER
TextSwitcher
ViewFactory
setCurrentText(), :
TextSwitcher questionTextSwitcher = (TextSwitcher)
findViewById(R.id.TextSwitcher_QuestionText);
questionTextSwitcher.setFactory(new MyTextSwitcherFactory());
questionTextSwitcher.setCurrentText(First Text String);
TEXTSWITCHER
TextSwitcher,
- TextView, setText():
TextSwitcher questionTextSwitcher = (TextSwitcher)
findViewById(R.id.TextSwitcher_QuestionText);
questionTextSwitcher.setText(Next Text String);
setText()
MyTextSwitcherFactory
-
TextView String, setText().
ImageSwitcher
ImageSwitcher
- ImageView.
ImageSwitcher ImageSwitcher_QuestionText
, ,
.
IMAGESWITCHER
ImageSwitcher
ViewFactory ,
.
setImageDrawable():
__________________________________________________________________
, setlmageURL()
ImageSwitcher URL , ,
. , URL
Drawable.
getQuestionImageDrawable() , :
getQuestionImageUrl() , - .
Hashtable . (
, , .)
getQuestionlmageUrl() ,
.
URL
PNG, ImageSwitcher.
BitmapDrawable. , ,
android.permission.INTERNET,
Android.
IMAGESWITCHER
ImageSwitcher,
- ImageView, setImageDrawable():
ImageSwitcher questionImageSwitcher =
(ImageSwitcher) findViewById(R.id.ImageSwitcher_QuestionImage);
Drawable image = getQuestionImageDrawable(nextQuestionNumber);
questionImageSwitcher.setImageDrawable(image);
setlmageDrawable()
setInAnimation()
setOutAnimation(). ,
- TextSwitcher,
Android,
:
Animation in = AnimationUtils.loadAnimation(this,
android.R.anim.fade_in);
Animation out = AnimationUtils.loadAnimation(this,
android.R.anim.fade_out);
TextSwitcher questionTextSwitcher =
(TextSwitcher) findViewById(R.id.TextSwitcher_QuestionText);
questionTextSwitcher.setInAnimation(in);
questionTextSwitcher.setOutAnimation(out);
1.
, ,
SharedPreferences.
2.
(
XML) .
3.
Button, ImageSwitcher TextSwitcher,
.
4.
, , ,
.
5.
.
, ,
SHAREDPREFERENCES
,
Integer SharedPreferences :
.
QuizActivity:
public static final String GAME_PREFERENCES_SCORE = Score;
public
static
final
String
GAME_PREFERENCES_CURRENT_QUESTION
CurQuestion;
SharedPreferences -
QuizGameActivity:
SharedPreferences mGameSettings;
- mGameSettings onCreate()
QuizGameActivity:
mGameSettings = getSharedPreferences(GAME_PREFERENCES,
Context.MODE_PRIVATE);
, no , /'.
SharedPreferences ,
. ,
(, getInt()
SharedPreferences, :
int startingQuestionNumber =
mGameSettings.getInt(GAME_PREFERENCES_CURRENT_QUESTION, 0);
, XML-,
, .
, ,
XML- , QuizActivity:
public static final String XML_TAG_QUESTION_BLOCK = questions;
public static final String XML_TAG_QUESTION = question;
public static final String XML_TAG_QUESTION_ATTRIBUTE_NUMBER =
number;
public static final String XML_TAG_QUESTION_ATTRIBUTE_TEXT = text;
public static final String XML_TAG_QUESTION_ATTRIBUTE_IMAGEURL
imageUrl;
, ,
,
XML-:
public static final int QUESTION_BATCH_SIZE = 15;
HASHTABLE
QuizGameActivity
Question,
:
private class Question {
int mNumber;
String mText;
String mImageUrl;
public Question(int questionNum, String questionText, String
questionImageUrl) {
mNumber = questionNum;
mText = questionText;
mImageUrl = questionImageUrl;
}
}
.
( XML-,
). ,
Hashtable
QuizGameActivity, Question
XML-:
Hashtable<Integer, Question> mQuestions;
, ... _______________________________________________
Android SDK ,
Java. , java.util
(, Hashtable)
, android.util .
Hashtable
- onCreate () QuizGameActivity,
:
mQuestions = new Hashtable<Integer, Question>(QUESTION_BATCH_SIZE);
, , XML-,
, XmlResourceParser questionBatch. XmlResourceParser
Question
- Hashtable put(), :
String questionNumber =
questionBatch.getAttributeValue(null,
XML_TAG_QUESTION_ATTRIBUTE_NUMBER);
Integer questionNum =
new Integer(questionNumber);
String questionText =
questionBatch.getAttributeValue(null,
XML_TAG_QUESTION_ATTRIBUTE_TEXT);
String questionImageUrl =
questionBatch.getAttributeValue(null,
XML_TAG_QUESTION_ATTRIBUTE_IMAGEURL);
// Save data to our hashtable
mQuestions.put(questionNum,
new Question(questionNum, questionText, questionImageUrl));
-
Hashtable containsKey().
Question ,
get():
Question curQuestion = (Question) mQuestions.get(questionNumber);
Button
ImageSwitcher TextSwitcher. ,
Button,
ViewSwitcher .
, Button ,
.
Yes ()
No (). OnClickListener.OnClick()
Button, Yes ():
View.onClick.Listener() Button,
No (He), Yes (),
. ,
handleAnswerAndShowNextQuestion() false. ,
, ViewSwitcher.
handleAnswerAndShowNextQuestion(),
boolean bAnswer. - , ,
Button:
private void handleAnswerAndShowNextQuestion(boolean bAnswer) {
// ,
// ,
yes
// , ,
.
,
SharedPreferences:
int curScore =
mGameSettings.getInt(GAME_PREFERENCES_SCORE, 0);
int nextQuestionNumber =
mGameSettings.getInt(GAME_PREFERENCES_CURRENT_QUESTION, 1) + 1;
,
SharedPreferences:
Editor editor = mGameSettings.edit();
editor.putInt(GAME_PREFERENCES_CURRENT_QUESTION, nextQuestionNumber);
Yes (),
SharedPreferences:
if (bAnswer == true) {
editor.putInt(GAME_PREFERENCES_SCORE, curScore + 1);
}
,
SharedPreferences, commit()
Editor:
editor.commit();
, Hashtable .
, :
if (mQuestions.containsKey(nextQuestionNumber) == false) {
//
try {
loadQuestionBatch(nextQuestionNumber);
} catch (Exception e) {
Log.e(DEBUG_TAG, Loading updated question batch
failed, e);
}
}
, TextSwitcher ImageSwitcher,
:
if (mQuestions.containsKey(nextQuestionNumber) == true) {
//
TextSwitcher questionTextSwitcher =
(TextSwitcher) findViewById(R.id.TextSwitcher_QuestionText);
questionTextSwitcher.setText(getQuestionText(nextQuestionNumber));
//
ImageSwitcher questionImageSwitcher =
(ImageSwitcher)
findViewById(R.id.ImageSwitcher_QuestionImage);
Drawable image = getQuestionImageDrawable(nextQuestionNumber);
questionImageSwitcher.setImageDrawable(image);
} else {
handleNoQuestions();
}
. 12.4.
Been There, Done That!
,
, . 12.4.
, ... ____________________________________________________
. ,
SharedPreferences ,
Android . DDMS Eclipse ,
SharedPreferences. , Settings () Android. Been
There, Done That! .
, .
handleNoQuestions()
,
:
TextSwitcher questionTextSwitcher =
(TextSwitcher) findViewById(R.id.TextSwitcher_QuestionText);
questionTextSwitcher.setText(getResources().getText(R.string.no_questi
ons));
ImageSwitcher questionImageSwitcher =
(ImageSwitcher) findViewById(R.id.ImageSwitcher_QuestionImage);
questionImageSwitcher.setImageResource(R.drawable.noquestion);
The Been There,
Done That!
game screen.
:
Button yesButton =
(Button) findViewById(R.id.Button_Yes);
yesButton.setEnabled(false);
Button noButton =
(Button) findViewById(R.id.Button_No);
noButton.setEnabled(false);
. 12.5.
Been There, Done That!,
, ,
. 12.5. ,
Button.
Back .
: . ,
. , setImageURL()
,
ImageSwitcher ( ImageView).
Drawable .
: ViewSwitcher
?
: , ,
- View View. , ,
- View,
- -
- View. ViewSwitcher
- View.
1.
ViewSwitcher?
A.
B.
C.
D.
TextSwitcher;
VideoSwitcher;
ImageSwitcher;
AudioSwitcher.
2.
? TextView,
TextSwitcher,
TextSwitcher.
3.
? , java.io, java.math, java.net
java.util, Android SDK.
1.
. ViewSwitcher ;
TextSwitcher ( Textview)
ImageSwitcher ( ImageView).
2.
. TextView,
TextSwitcher,
ViewFactory.
3.
. Java
Android SDK. ,
Android, android.*.
Android SDK.
1.
, . ,
SharedPreferences,
.
2.
,
Hashtable ,
.
III.
ANDROID
13.
, :
;
ImageButton;
;
;
.
Been There, Done That!
. :
, , ,
.
,
.
.
. :
,
.
Been There, Done That!,
, ,
. . 13.1 ,
, ,
.
,
Been There, Done
That!. :
. Android
ImageButton .
,
/res/layout/settings.xml, , Nickname ().
. 13.1.
Been There, Done That!
Nickname (), ( ImageButton
, TextView Nickname ()
EditText Nickname ()) ,
LibearLayout ( ).
Nickname () - LinearLayout
, . . 13.2
-, .
. 13.2. -
! ,
( ), ,
. .
Button. ImageButton,
,
ImageButton, .
,
settings.xml,
.
, , Been
There, Done That!, ,
String, Dimension, Color Drawable. ,
,
.
settings.xml .
Eclipse :
TextView TextView_Nickname.
- LinearLayout
ScrollView, orientation -
LinearLayout horizontal. layout_width
layout_height fill_parent.
ImageButton ImageButton_Avatar
- LinearLayout.
layout_width layout_height wrap_content.
, adjustViewBounds true,
scaleType fitXY.
maxHeight minHeight ,
(, 75px).
- LinearLyaout
ImageButton. orientation vertical.
layout_width
layout_height
fill_parent.
Nickname () ( TextView TextView_Nickname
EditText EditText_Nickname)
- LinearLayout.
settings.xml.
, ,
. 13.3
IMAGEBUTTON
ImageButton ,
Drawable. . 13.3
ImageButton, ,
.
, ImageButton Button, View,
. Button
TextView ( Button ,
, ), ImageButton
ImageView.
. 13.3. ,
_____________________________________________________________
, ImageButton,
.
Uri , .
ImageButton
ImageView,
,
ImageButton, :
setImageBitmap(). ,
, ImageButton,
Bitmap.
setlImageDrawable(). ,
, ImageButton,
Drawable.
setImageResource(). ,
, ImageButton,
.
setlmageURI(). , ,
ImageButton, Uri.
! _________________________________________________________
ImageButton
, .
- setImageURI(null),
setImageURI()
Uri, ,
ImageButton.
, ,
Drawable, Uri .
setImageURI() ImageButton
, ,
. URI
/ . Uri :
android.resource://[]/[ ]
, Uri
Drawable avatar.png :
Uri /
:
android.resource://[]/[ ]/[ ]
, Uri
Drawable avatar.png /:
Uri path = Uri.parse(
android.resource://com.androidbook.triviaquiz13/drawable/avatar);
Uri Drawable,
setImageURI() ImageButton,
:
ImageButton avatarButton= (ImageButton)
findViewById(R.id.ImageButton_Avatar);
avatarButton.setImageURI(path);
ImageButton
ImageButton, , ,
, - View
. ImageButton,
,
.
SETONCUCKUSTENER
ImageButton,
,
View.OnClickListener:
avatarButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO: Launch the Camera and Save the Photo as the Avatar
}
});
, Button.
SETONLONGCLICKLISTENER
, Android.
,
.
, .
View.OnLongClickListener
setOnLongClickListener()
ImageButton.
OnLongClickListener ,
onLongClick().
OnLongClickListener ImageButton,
:
avatarButton.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO: Launch Image Picker and Save Image as Avatar
return false;
}
});
onLongClick() onClick()
OnClickListener. onLongClick()
, true,
.
_______________________________________________
,
ImageButton:
1.
QuizSettingsActivity.java
ImageButton_
Avatar.
2.
onClick () OnLickListener
Short click.
3.
onLongClick () OnLongClickListener
Long click.
4.
.
ImageButton, , , .
, ImageButton , . ,
( )
.
.
sharePreferences .
QuizActivity, :
public static final String GAME_PREFERENCES_AVATAR = Avatar;
3, ,
, ,
startActivityForResult(),
,
onActivityResult() .
startActivityForResult() :
, .
OuizSettingsActivity.
. ImageButton,
, .
ImageButton,
. ,
QuizSettingsActivity:
static final int TAKE_AVATAR_CAMERA_REQUEST = 1;
static final int TAKE_AVATAR_GALLERY_REQUEST = 2;
startActivityForResult() ,
, QuizSettingsActivity
, . ,
, onActivityResult()
QuizSettingsActivity. ,
switch
, ,
:
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
switch(requestCode) {
case TAKE_AVATAR_CAMERA_REQUEST:
if (resultCode == Activity.RESULT_CANCELED) {
// Avatar camera mode was canceled.
} else if (resultCode == Activity.RESULT_OK) {
// TODO: HANDLE PHOTO TAKEN
}
break;
case TAKE_AVATAR_GALLERY_REQUEST:
if (resultCode == Activity.RESULT_CANCELED) {
// Avatar gallery request mode was canceled.
} else if (resultCode == Activity.RESULT_OK) {
// TODO: HANDLE IMAGE CHOSEN
}
break;
}
,
. resultCode onActivityResult()
Activity.RESULT_CANCELED. resultCode
Activity.RESULT_OK, .
,
,
saveAvatar().
. saveAvatar()
:
private void
{
// TODO:
// TODO:
// TODO:
// TODO:
}
saveAvatar(Bitmap avatar)
Save the Bitmap as a local file called avatar.jpg
Determine the Uri to the local avatar.jpg file
Save the Uri path as a String preference
Update the ImageButton with the new image
.
, .
, _____________________________________________________
android.hardware.Camera,
Camera ,
. android.permission.CAMERA.
ACTION_IMAGE_CAPTURE. ,
onClick() OnClickListener ImageButton, :
Intent pictureIntent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(pictureIntent, TAKE_AVATAR_CAMERA_REQUEST);
Android .
, , ,
, ,
Android. ImageButton
, , .
13.4.
. 13.4.
Android
, _____________________________________________________
, .. ,
, : . ?. . Android .
,
,
ACTION_CHOOSER.
, (
, ?).
, , createChooser(), :
Intent.createChooser(innerIntent,
Choose which application to handle this);
, , , .
ACTION_IMAGE_CAPTURE ,
. , . case onActivityResult TAKE_AVATAR_CAMERA_REQUEST, -
, intent data,
:
Bitmap cameraPic = (Bitmap) data.getExtras().get(data);
saveAvatar().
Android ACTION_ PICK,
.
URI. .
MIME-, , .
, ,
onLongClick() , :
Intent pickPhoto = new Intent(Intent.ACTION_PICK);
pickPhoto.setType(image/*);
startActivityForResult(pickPhoto, TAKE_AVATAR_GALLERY_REQUEST);
ImageButton ,
, , (.
13.5).
. 13.5.
Android
ACTION_PICK ,
, ,
URI, . ,
case onActivityResult()
TAKE_AVATAR_GALLERY_REQUEST UR!
, Intent data, :
Uri photoUri = data.getData();
, Url Bitmap,
, :
Bitmap galleryPic = Media.getBitmap(getContentResolver(), photoUri);
saveAvatar().
,
.
Bitmap (android.graphics.Bitmap) ,
.
! _______________________________________________________________
Bitmap
, PNG JPG.
(image.bmp).
PNG JPG
Android Bitmap.
compress() Bitmap
. , JPG-,
, :
String strAvatarFilename = avatar.jpg;
avatar.compress(CompressFormat.JPEG,
100, openFileOutput(strAvatarFilename, MODE_PRIVATE));
URI,
ImageButton. ,
(
), ImageButton
, . 13.6.
. 13.6.
Been There, Done That!
createScaledBitmap() Bitmap
.
! _______________________________________________________________
, .
( ).
BitmapFactory (android.graphics.BitmapFactory),
, , , .
,
, Matrix(android.graphics.Matrix)
Been There. Done That!. ,
, . ,
startActivityForResult() onActivityResult().
Android SDK,
.
: ACTION_IMAGE_CAPTURE , . ,
, .
?
: , , ( ,
EXTRA_OUTPUT).
: , Bitmap?
: , ( ). ,
, ,
.
1.
, onActivityResult()?
A.
B.
C.
requestCode.
resultCode.
data.
2.
? ImageButton
Button.
3.
? Bitmap
.bmp.
1.
. roqestCode, ,
, (
startActivityForResult())
resultCode , ,
.
2.
. ImageButton
ImageView. , Button
ImageButton, View.
3.
. Bitmap
, PNG
() JPG ().
1.
Bitmap, , . ,
Matrix, (
).
2.
createScaledBitmap() Bitmap, () .
14.
, :
,
;
;
, ;
.
Been There. Done That!
.
: ,
(LBS locationbased services), ,
GPS- Android SDK.
,
, LBS- ,
. Android LBS . LBS-
, .
Been There, Done That! - ,
, LBS-.
,
.
LBS-,
.
,
, , , ,
(, New York City, Iceland,
. 14.1. ,
Favorite Place
, , ,
ScrollView.
. ,
, , Date of Birth
( ) Password ().
/res/layout/settings.xml
Favorite Place ( ),
, Spinner
Gender ().
TextView,
. - LinearLayout
Button, ,
TextView,
Favorite Place ( ).
. 14.2 .
. 14.2.
,
,
AlertDialog.
Favorite Place ( )
:
( String);
( float);
( float).
____________________________________________________________________
, .
,
; (
, GPS- )
EditText, GPS-
Android SDK.
. 14.3.
,
( ). . 14.3 .
,
.
/res/layout/fav_place_dialog.xml.
.
LinearLayout .
TextView,
. EditText,
,
Button, .
EditText Button , RelativeLayout. , TextView:
GPS, GPS- ( Been
There. Done That! , ).
. 14.4 -
Favorite Place ( ).
. 14.4. -
Favorite Place ( )
,
, LBS- Been
There. Done That!, ,
. ,
. , :
1. String, Dimension, Color Drawable,
.
2. /res/layout/settings.xml,
,
. 14.5.
3. /res/layout/fav_place_dialog.xml
TextView, EditText Button,
(. 14.6).
. 14.5. ,
Favorite Place
( )
. 14.6.
4.
String QuizActivity
.
SharedPreferences
( String), (
float) ( float).
5.
QuizSettingsActivity,
.
(, PLACE_DIALOG_ID). onCreateDialog()
onPrepareDialog() , ,
.
,
. ,
:
initFavoritePlacePicker()
( )
Button,
.
initPasswordChooser() initDatePicker().
,
, .
,
Button, .
Dialog
. ,
Dialog
.
. ,
View.OnClickListener Button, ,
,
, Button Clicked.
__________________________________________________________________________
, .
,
, ,
GPS.
, LBS-,
. :
, .
: LBS-
.
Android .
LBS- :
LBS- , ,
, .
,
.
.
,
. , ,
,
.
, , ,
, .
, ,
, , (
) , ,
.
! ______________________________________________________________
, Android,
,
, .
, LBS-, Android SDK,
Google API.
, , Google Maps
Android-.
, Google API, ,
Google, ,
API .
,
,
LBS-
Google API-. , API Google Maps , ,
Intent
, .
AVD- GOOGLE API
, , Android ( ,
AVD- )
. Google Maps
, AVD- Google API.
Been
There, Done That!, AVD-
.
, Android ,
.
. DDMS Eclipse. ,
.
, ... _____________________________________________________________
GPS- Google Maps. , maps.google.com
. ,
, ( ). URL
. 11 . , 11, , 51.845959, 104.908447. 44.427896.110.585632 11 44.427896 -110.585632. , Google Maps
, .
7.
Emulator Control ( )
, Location Controls (
).
8.
.
: 44.427896
110.585632 (. 14.8).
9.
Send ().
. 14.8.
DDMS
, , Google Maps
.
, . 14.9.
. 14.9.
, _____________________________________________________
, geo fix.
LBS- Android
. Android-
,
<uses-permission> Android.
, LBS-
android.permission.ACCESS_FINE_LOCATION
android.permission.
ACCESS_COARSE_LOCATION. GPS- android.permission.ACCESS_FINE_LOCATION.
,
LocationManager, getSystemService(),
:
LocationManager locMgr =
(LocationManager) getSystemService(LOCATION_SERVICE);
LocationManager LBS-,
.
LBS-.
, getProviders()
LocationManager.
(,
). getBestProvider(),
,
.
LBS-. LBS-
getProvider().
LocationProvider,
, , ,
, ,
.
(
) getLastKnownLocation()
LocationManager. ,
,
.
, ;
getLastKnownLocation() Location:
Location recentLoc =
locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Location . LBS-. , ,
.
Location getLatitude() getLongitude().
, ,
,
requestLocationUpdates() LocationManager.
,
(, ,
).
( ) ( )
.
, ,
,
LocationListener (android.location.LocationListener).
,
,
.
! ______________________________________________________________________
. LBS-
, , (
, ). .
- () GPS- (, ).
Google Maps
(maps.google.com), Eiffel Tower, .
,
( ).
,
,
. , ,
, :
, ;
( );
;
(, LAX, LHR, JFK, DME);
.
, , ,
( ).
.
, , ,
. ,
Springfield, ,
, 35 ,
.
East Springfield Springfield by the Sea,
. ,
(,
).
!
, , , . ,
, , , , .
, ,
Android-
Android SDK Geocoder (android.1tion.Geocoder),
,
( ).
Geocoder :
Geocoder coder = new Geocoder(getApplicationContext());
Geocoder,
,
.
:
getFromLocationName() Geooder,
.
: , ,
. , Springfield
, :
String strLocation = Springfield;
List<Address> geocodeResults =
coder.getFromLocationName(strLocation, 1);
, Geocoder,
:
Iterator<Address> locations = geocodeResults.iterator();
while (locations.hasNext()) {
Address loc = locations.next();
double lat = loc.getLatitude();
double lon = loc.getLongitude();
// TODO:
}
Address .
getLatitude() getLongitude()
Address .
getFromLocationName(),
.
:
get.FromLocation() Geocoder
.
, ,
.
Android Google API. , MapView
Google Maps
.
.
, , Maps,
ACTION_VIEW URI,
. URI .
,
Maps ( ,
), URI:
geo:,
, :
String geoURI = String.format(geo:%f,%f?z=10, lat, lon);
, :
String geoURI = String.format(geo:%f,%f?z=10, lat, lon);
URI,
parse(), Uri
ACTION_VIEW, :
Uri geo = Uri.parse(geoURI);
Intent geoMap = new Intent(Intent.ACTION_VIEW, geo);
startActivity(geoMap);
,
URI geo-,
(, Maps) .
, ,
Back .
Geocoder Maps,
, Button it! ( !),
. 14.10.
. 14.10.
Maps
. 14.11. Maps
Menu,
, ,
, ,
, . 14.11.
Android SDK LBS-
android.location. LBS-,
,
Android SDK.
LBS- Android
Android SDK, Google API, Android SDK.
GOOGLE API
Google API. ,
com.google.android.map:
MapView,
;
MapActivity, MapView ;
GeoPoint, :
,
( );
.
Google API
, API-.
, ,
. LBS-
Android,
Android, Android Wireless Application Development
( Addison-Wesley),
Google API.
- Google API,
code.google.com/android/add-ons/googleapis/reference/index.html.
,
, Been There, Done That!.
,
,
. ,
. ,
LBS-,
Android SDK.
: MapView.
Google API?
: -, Google API.
: http://code.google.com/android/add-ons/googleapis/mapkey.html.
Google ( ).
: ,
, ,
?
: .
LocationManager,
,
. ,
LBS-, ,
,
; , AsyncTask
, . ,
, ,
,
.
1.
LBS?
A.
B.
C.
D.
.
.
.
, LBS-cep-
, .
E. .
F. .
2.
? Button,
AlertDialog, Button.
3.
Android SDK?
A.
B.
C.
.
, .
.
4.
? ,
LBS-.
1.
F. , LBS, .
2.
. Button,
.
View.OnClickListener.
,
DialogInterface.OnClickListener,
AlertDialog.
3.
A B. Android SDK LBS-.
, . ,
, .
, Google API,
Android SDK.
4.
. LBS- (
Google API), DDMS
.
1.
, GPS- .
2.
,
.
3.
Been There, Done That! ,
.
15.
, :
;
;
;
.
Been There, Done That!.
. , ,
.
,
, - .
,
, ,
. ,
. Android-
, 3G (
) Wi-Fi. Android -,
HTTP, HTTPS, TCP/IP .
Been There, Done That!
XML-. ,
.
, Android,
, ,
, .
Been There, Done That!
:
QuizScoresActivity ;
QuizGameActivity
.
Been There, Done That! ,
,
Android-.
___________________________________________________________________
,
, .
.
( )
. , ,
.
Been There, Done That! iPhone BlackBerry, .
.
.
Google
Engine
(
HTTP.
, ,
.
,
.
Java Server Pages (JSP)
TT- XML-,
Android-.
___________________________________________________________________
, , //
.
. ,
SQL- MySQL
.
XML-,
. -
Been There, Done That!.
, ,
, ,
XML- ,
- , ,
ProgressBar (. 15.1).
- .
. 15.1.
,
, - ,
,
, .
( ,
),
.
Android ,
. ,
:
, .
,
.
,
. , ,
.
, , ,
. ,
.
, ,
. ,
, ,
( ) , -
(, ).
! _______________________________________________________________
Android- , . ,
Android ,
,
.
.
. -,
, . .
, ,
, .
, ,
Android.
! _______________________________________________________________
, , , ,
.
,
Android. Android
, .
Settings () .
Airplane Mode ( )
.
Wi-Fi Wi-Fi , .
Mobile Networks { ) .
, Settings
() , About phone ( ) (
About device ( )), Status ().
:
(, 888-555-1212);
(, Verizon, T-Mobile);
(, In Service ());
(, Connected ());
, ... ______________________________________________________
, - , ,
.
. , . , .
Android . ,
Java,
java.net. , Android SDK
.
, , SSL HTTPS.
Android- ,
Android.
,
, ,
.
! _______________________________________________________________
. , , ,
, .
Thread Java
AsyncTask Android, .
Android . Android- ,
<uses-permission> Android
.
, :
android.permission.INTERNET;
android.permission.ACCESS_NETWORK_STATE.
, ,
, Wi-Fi
.
,
android.permission.WAKE_LOCK,
.
Android SDK
.
.
,
.
, Android
android.permission.ACCESS_NETWORK STATE.
,
android.permission. CHANG E_NETWORK_STATE.
ConnectivityManager(android.net
.ConnectivityManager)
.
ConnectivityManager
getSystemService() Context :
ConnectivityManager conMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager, () getNetworkInfo():
Networklnfo(android.net.Networklnfo)
, ,
:
boolean isMobileAvail = netInfo.isAvailable();
boolean isMobileConn = netInfo.isConnected();
boolean isRoamingConn = netInfo.isRoaming();
NetworkInfo .
.
, ,
, .
ConnectivityManager
requestRouteToHost(),
IP- (,
Wi-Fi).
HTTP
- Hypertext Transfer Protocol
(HTTP). HTTP
.
,
. Android,
, .
XmlPullParser. setInput() XmlPullParser
InputStream. . ,
, , URL,
:
. 15.2.
,
.
,
(. 15.3).
setProgress() ProgressBar.
. 15.3.
, _____________________________________________________
, , .
,
,
ProgressBar .
ProgressDialog,
Dialog. , ProgressDialog (.
15.4) Been There, Done That!,
, , .
.
. 15.4.
,
,
ProgressDialog :
ProgressDialog pleaseWaitDialog = ProgressDialog.show(
QuizGameActivity.this,
Trivia Quiz,
Downloading trivia questions,
true);
dismiss(),
pleaseWaitDialog, :
pleaseWaitDialog.dismiss();
___________________________________________________________________
pleaseWaitDialog , show() ,
true.
, ,
. ,
, , .
,
ProgressDialog. ,
, ,
.
, -
- .
Android- ,
.
Android .
AsyncTask
,
.
,
.
Thread Handler
, .
,
Android
SDK
AsyncTask
(ancroid.os.AsyncTask), , ,
.
,
AsyncTask,
.
onPreExecute() ,
, , .
dolnBackground() ,
.
publishProgress()
dolnBackground(),
, .
.
onProgressUpdate() ,
, , dolnBackground()
publishProgress().
.
onPostExecute() ,
, .
execute() , AsyncTask,
, ,
.
,
Thread Handler.
: , .
. ,
, , XML-,
.
Thread, ,
XML-, ,
, Handler ,
TextView parsingStatus,
:
import android.os.Handler;
Handler mHandler = new Handler();
// ...
new Thread() {
public void run() {
// Instantiate XML parser
mHandler.post(new Runnable() {
public void run() {
parsingStatus.setText(Began Parsing...);
}
});
// XML Parsing loop here
// Update parsingStatus has needed
mHandler.post(new Runnable() {
public void run() {
parsingStatus.setText(Finished parsing...);
}
});
}
}.start();
- TableLayout
,
ScoreDownloaderTask -.
, ScoreDownloaderTask
ScoreDownloaderTask,
onCreate() QuizScoresActivity, execute()
ScoreDownloaderTask .
execute() : URL ,
(- TableLayout):
public static final String TRIVIA_SERVER_BASE =
http://tqs.mamlambo.com/;
public static final String TRIVIA_SERVER_SCORES =
TRIVIA_SERVER_BASE + scores.jsp;
// ...
allScoresDownloader =
new ScoreDownloaderTask();
allScoresDownloader.execute(TRIVIA_SERVER_SCORES, allScoresTable);
SharedPreferences prefs =
getSharedPreferences(GAME_PREFERENCES, Context.MODE_PRIVATE);
Integer playerId = prefs.getInt(GAME_PREFERENCES_PLAYER_ID, -1);
if (playerId != -1) {
friendScoresDownloader = new ScoreDownloaderTask();
friendScoresDownloader.execute(
TRIVIA_SERVER_SCORES + ?playerId=
+ playerId, friendScoresTable);
}
ScoreDownloaderTask, AsyncTask.
___________________________________________________________________
playerId. .
onPreExecute(),
, ,
.
:
@Override
protected void onPreExecute() {
mProgressCounter++;
QuizScoresActivity.this.setProgressBarIndeterminateVisibility(true);
}
.
, ,
, . ,
mProgressCounter
. , , .
onCreate() ,
:
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView().
, .
XML-.
doInBackground(),
. , doInBackground(),
, . doInBackground(),
:
@Override
protected Boolean doInBackground(Object... params) {
boolean result = false;
String pathToScores = (String) params[0];
table = (TableLayout) params[1];
XmlPullParser scores = null;
URL xmlUrl = new URL(pathToScores);
scores = XmlPullParserFactory.newInstance().newPullParser();
scores.setInput(xmlUrl.openStream(), null);
if (scores != null) {
processScores(scores);
}
return result;
}
URL. URL
, openStream()
.
setInput() XmlPullParser XmlPullParser ,
, .
processScores() ScoreDownloaderTask.
,
XmlPullParser XML-,
publishProgress():
private void processScores(XmlPullParser scores)
throws XmlPullParserException, IOException {
int eventType = -1;
boolean bFoundScores = false;
// score XML-
while (eventType != XmlResourceParser.END_DOCUMENT) {
if (eventType == XmlResourceParser.START_TAG) {
// (, scores score)
String strName = scores.getName();
if (strName.equals(score)) {
bFoundScores = true;
String scoreValue =
scores.getAttributeValue(null, score);
String scoreRank =
scores.getAttributeValue(null, rank);
String scoreUserName =
scores.getAttributeValue(null, username);
publishProgress(scoreValue, scoreRank, scoreUserName);
}
}
eventType = scores.next();
}
// ,
if (bFoundScores == false) {
publishProgress();
}
}
publishProgress()
dolnBackground(),
onProgressUpdate().
, .
,
onProgressUpdate(). ,
, -
TableLayout, .
@Override
protected void onProgressUpdate(String... values) {
if (values.length == 3) {
String scoreValue = values[0];
String scoreRank = values[1];
String scoreUserName = values[2];
insertScoreRow(table, scoreValue, scoreRank, scoreUserName);
} else {
final TableRow newRow =
new TableRow(QuizScoresActivity.this);
TextView noResults =
new TextView(QuizScoresActivity.this);
noResults.setText(
getResources().getString(R.string.no_scores));
newRow.addView(noResults);
table.addView(newRow);
}
insertScoreRow() TableRow
- TableLayout.
. AsyncTask
Java.
onPostExecute(), ,
, ,
. ,
, mProgressCounter,
.
@Override
protected void onPostExecute(Boolean result) {
Log.i(DEBUG_TAG, onPostExecute);
mProgressCounter;
if (mProgressCounter <= 0) {
mProgressCounter = 0;
QuizScoresActivity.this.
setProgressBarIndeterminateVisibility(false);
}
}
,
onCancelled(). onCancelled() .
, , ,
onPostExecute() . ,
onCancelled().
:
@Override
protected void onCancelled() {
Log.i(DEBUG_TAG, onCancelled);
mProgressCounter;
if (mProgressCounter <= 0) {
mProgressCounter = 0;
QuizScoresActivity.this.
setProgressBarIndeterminateVisibility(false);
}
}
onCancelled() ,
cancel() AsyncTask. cancel() . -
, .
,
- . ,
onPause() , :
@Override
protected void onPause() {
if (allScoresDownloader != null &&
allScoresDownloader.getStatus() !=
AsyncTask.Status.FINISHED) {
allScoresDownloader.cancel(true);
}
if (friendScoresDownloader != null &&
friendScoresDownloader.getStatus() !=
AsyncTask.Status.FINISHED) {
friendScoresDownloader.cancel(true);
}
super.onPause();
}
, , ,
AsyncTask
.
.
,
. .
QuizGameActivity
QuizTask, AsyncTask, :
private class QuizTask extends AsyncTask<Object, String, Boolean> {
// TODO: Implement AsyncTask callback methods
}
___________________________________________________________________
- DEBUG_TAG QuizTask.
, .
QuizTask -
ProgressDialog,
:
int startingNumber;
ProgressDialog pleaseWaitDialog;
QuizTask, onCreate()
QuizGameActivity ,
,
onPreExecute().
, ,
. ,
.
, , ,
, ,
:
@Override
protected void onPreExecute() {
pleaseWaitDialog = ProgressDialog.show(
QuizGameActivity.this, Trivia Quiz,
Downloading trivia questions, true, true);
pleaseWaitDialog.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface dialog) {
QuizTask.this.cancel(true);
}
});
}
,
,
,
Back ,
. cancel()
AsyncTask. ,
, ,
.
, .
, , . (
)
doInBackgroun():
@Override
protected Boolean doInBackground(String... params) {
loadQuestionBatch(). QuizTask
.
, URL
,
setlnput() XmlPullParser.
___________________________________________________________________
, .
,
onPostExecute(). ,
, ,
. ,
:
@Override
protected void onPostExecute(Boolean result) {
Log.d(DEBUG_TAG, Download task complete.);
if (result) {
displayCurrentQuestion(startingNumber);
} else {
handleNoQuestions();
}
pleaseWaitDialog.dismiss();
}
_____________________________________________________________
, .
AsyncTask
.
, , .
: ?
: . : ,
, ,
.
,
, , .
: ,
Android?
: Android SDK , : android.net, java.net org.apache.
1.
Android?
A.
.
B.
Settings () Android.
C.
getHandsetNetworkStatus()
NetStatus.
2.
? Android
, ,
Android.
3.
? Android-
Google Engine.
4.
Android?
A.
B.
C.
D.
E.
HTTP.
HTTPS.
TCP.
IP.
(RS Raw Sockets).
A B.
,
Settings ()
Android.
. Android
.
.
, Android-.
Google Engine .
.
Android-. HTTP HTTPS
, -. TCP IP -
, Android, , ,
API Java
.
1.
Been There, Done That!
, . ,
,
.
2.
,
AsyncTask Thread Handler.
3.
,
,
.
16.
, :
;
-;
GET- HTTP;
POST- HTTP;
JAR- ;
MIME-.
Been There, Done That!,
, , ,
. ,
. ,
Android- MIME-.
Been There, Done That! .
.
HTTP- Apache,
Android, , Apache
.
Been There,
Done That!:
QuizSettingsActivity
.
QuizGameActivity
.
QuizSettingsActivity
.
"Been There, Thai!
, .
Android -.
___________________________________________________________________
,
, , .
android.permission.READ_PHONE_STATE
android.permission.MODIFY_PHONE_STATE
TelephonyManager(android.telephony.
TelephonyManager) . TelephonyManager
getSystemService() Context :
TelephonyManager telMgr = (TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
TelephonyManager,
.
TelephonyManager
getCallstate(). , ,
.
, listen(),
.
, .
TelephonyManager
getNetworkType().
, ,
, GPRS, EDGE EVDO.
TelephonyManager (, NETWORK_TYPE_GPRS).
listen().
,
.
: D
GSM
SIM-KAPTE
getPhoneType() TelephonyManager,
, : CDMA GSM.
,
getDeviceId(). IMEI- GSM MEID- CDMA-.
(, IMSI-
GSM-), getSubscriberId().
SIM-
TelephonyManager SIM . :
getSimState() SIM-, ,
SIM- , (. . PIN) .
getSimSerialNumber() SIM.
getSimOperatorName() SIM.
getSimOperator()
, SIM-.
TelephonyManager
. ,
getVoiceMailNumber().
15 , ,
. , ,
isNetworkRoaming() TelephonyManager.
,
, .
,
, ,
: . ?
,
, ... _____________________________________________________
SmsManager (android.telephony.SmsManager)
HttpClient
(org.apache.http), Android SDK.
HTTP .
, HttpGet
, - GET- HTTP.
, HttpPost
, POST- HTTP.
- HTML.
, , Android-,
HTML-.
- , Android-,
,
. , ,
Android, GET- POST , .
Apache HTTP ,
org.apache.http.client.
___________________________________________________________________
, , //
.
! _______________________________________________________________
, ,
. , , , ,
. Thread Java AsyncTask Android. , , , ProgressBar. 15.
GET- HTTP
GET- HTTP
HttpGet.
, URLEncodedUtils
List, BasicNameValuePair,
URL . ,
AsyncTask,
, .
ASYNCTASK,
AccountTask, AsyncTask,
QuizSettingsActivity. AccountTask
execute()
(. 16.1).
,
,
.
( ).
. 16.1
( )
AccountTask
, AsyncTask,
. (
, .)
doInBackground(),
:
@Override
protected Boolean doInBackground(Object... params) {
Boolean succeeded = false;
Integer playerId =
mGameSettings.getInt(GAME_PREFERENCES_PLAYER_ID, -1);
String nickname =
mGameSettings.getString(GAME_PREFERENCES_NICKNAME, );
String email =
mGameSettings.getString(GAME_PREFERENCES_EMAIL, );
String password =
mGameSettings.getString(GAME_PREFERENCES_PASSWORD, );
Integer score =
mGameSettings.getInt(GAME_PREFERENCES_SCORE, -1);
Integer gender =
mGameSettings.getInt(GAME_PREFERENCES_GENDER, -1);
Long birthdate =
mGameSettings.getLong(GAME_PREFERENCES_DOB, 0);
String favePlaceName =
mGameSettings.getString(GAME_PREFERENCES_FAV_PLACE_NAME, );
Vector<NameValuePair> vars = new Vector<NameValuePair>();
if (playerId == -1) {
TelephonyManager telManager =
Using an indeterminate
progress indicator
in the top
right of the
menu bar (faint
circle).
(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String uniqueId = telManager.getDeviceId();
vars.add(new BasicNameValuePair(uniqueId, uniqueId));
} else {
vars.add(
new BasicNameValuePair(updateId, playerId.toString()));
vars.add(
new BasicNameValuePair(score, score.toString()));
}
vars.add(new
vars.add(new
vars.add(new
vars.add(new
vars.add(new
vars.add(new
BasicNameValuePair(nickname, nickname));
BasicNameValuePair(email, email));
BasicNameValuePair(password, password));
BasicNameValuePair(gender, gender.toString()));
BasicNameValuePair(faveplace, favePlaceName));
BasicNameValuePair(dob, birthdate.toString()));
String url =
TRIVIA_SERVER_ACCOUNT_EDIT+ ? + URLEncodedUtils.format(vars, null);
HttpGet request = new HttpGet(url);
ResponseHandler<String> responseHandler =
new BasicResponseHandler();
HttpClient client = new DefaultHttpClient();
String responseBody = client.execute(request, responseHandler);
if (responseBody != null && responseBody.length() > 0) {
Integer resultId = Integer.parseInt(responseBody);
Editor editor = mGameSettings.edit();
editor.putInt(GAME_PREFERENCES_PLAYER_ID, resultId);
editor.commit();
succeeded = true;
}
return succeeded;
}
.
: , /
SharedPreferences), .
,
.
: .
,
.
, , , .
,
.
,
. GET-
URLEncodedUtils.format(). , HttpGet, GET-
HttpClient.
HttpClient
ResponseHandler .
BasicResponseHandler String.
String ,
SharedPreferenees
.
_____________________________________________________________________
. , . , ,
, ,
-, , Secure
Hash Algorithm (SHA), . MessageDigest, java. security,
:
, ,
, .
QuizGameActivity ,
AsyncTask. QuizTask,
, ?
.
, doInBackground() QuizTask.
:
SharedPreferences settings =
getSharedPreferences(GAME_PREFERENCES, Context.MODE_PRIVATE);
Integer playerId = settings.getInt(GAME_PREFERENCES_PLAYER_ID, -1);
if (playerId != -1) {
Log.d(DEBUG_TAG, Updating score);
Integer score = settings.getInt(GAME_PREFERENCES_SCORE, -1);
if (score != -1) {
pathToQuestions +=
&updateScore=yes&updateId=+playerId+&score=+score;
}
}
,
pathToQuestions, URL, ,
, .
, ... ______________________________________________________
List,
BasicNameValuePair, URLEncodeUtils.format().
, , .
POST- HTTP
, , GET-
POST- HTTP.
,
- HTML. POST (. 16.2).
. 16.2.
! _______________________________________________________________
, . ,
SQL-
, ( BLOB).
JAR- ANDROID-
MIME-
HttpClient. ,
Apache HttpClient Android SDK .
Android SDK MIME-,
,
SDK. , MIME-,
Apache JAR- .
, JAR- :
Mime4j (james.apache.org/mime4j/index.html);
HttpMime 4.0 (hc.apache.org/httpcomponents-client-ga/httpmime/index. html);
Apache Commons 10 (commons.apache.org/io/).
___________________________________________________________________
-, , // 15 16/libs.
, ... ______________________________________________________
, MIME-?
Wikipedia: en.wikipedia.org/wiki/MIME#Multipart_messages. ,
MIME- ,
, . MIME HTML- enctype form
multipart/form-data. MIME-
HTTP. , MIME-
.
JAR- ANDROID- ____________________________
JAR- Android-, :
1.
JAR-(), .
2.
/libs .
, /src /res.
3.
JAR-) /libs.
4.
lipse Project=>Properties
( => ), ^ Android-
return null;
MIME-, MIME-,
, MultipartEntity, :
,
, .
HttpPost URL .
MIME- HttpPost, setEntity().
, , ,
HttpClient ResponseHandler.
1.
TelephonyManager?
A.
B.
C.
.
.
.
2.
? Android SDK MIME-.
3.
? ,
,
.
4.
?
A.
B.
C.
D.
BackgroundTask.
AsyncTask.
Thread.
AsyncActivity.
B. TelephonyManager
.
. MIME- .
,
, MIME-.
. , .
. .
',
.
A D. AsyncTask ,
Thread. .
SDK, .
1.
URL http://tqs.mamlambo.com/getplayer, GET-
.
, playerId,
playerId password (
).
2.
,
SMS-co-
.
3.
,
MIME- POST-
http://tqs.mamlambo.com/suggest. playerId
( ), question ( ) questionImage (,
),
,
( ).
17.
, :
;
;
, ;
.
Been There, Done That!,
. ,
, .
Android-,
.
Been There, Done That!
. .
. ,
,
,
.
: , ,
MySpace Facebook, ,
. Been There, Done That!
.
,
, . , ,
:
( ) ?
( , ,
, . .)?
( Facebook Twitter),
?
? ,
?
? SMS- ? ,
?
(, Facebook, Twitter . .)
,
- ?
(
)? ,
( )
?
, ,
.
.
(),
,
.
. ,
.
There Pone That!,
, .
,
.
, ,
:
1.
,
.
2.
,
, .
3.
, ,
Scores of Friends ( ) .
_________________________________________________________________
, , ,
.
Been There, Done That!,
QuizSettingsActivity,
. ,
:
,
.
QuizSettingsActivity
, .
,
.
Been There, Done
That!, . ,
.
,
, , .
. 17.1. ,
(. 17.1).
,
,
:
<TextView
android:id=@+id/TextView_Friend_Email
android:layout_width=wrap_content
android:layout_height=wrap_content
android:text=@string/settings_friend_email_label
android:textSize=@dimen/help_text_size
android:textStyle=bold></TextView>
<LinearLayout
android:id=@+id/LinearLayout_Friend_Email
android:orientation=horizontal
android:layout_height=wrap_content
android:layout_width=fill_parent>
<Button
android:id=@+id/Button_Friend_Email
android:layout_width=wrap_content
android:layout_height=wrap_content
android:text=@string/settings_button_friend_email></Button>
<TextView
android:layout_width=fill_parent
android:layout_height=fill_parent
android:textSize=@dimen/help_text_size
android:textStyle=bold
android:gravity=center
android:id=@+id/TextView_Friend_Email_Tip
android:text=@string/settings_friend_email_tip></TextView>
</LinearLayout>
,
TextView Button
Button_Friend_Email.
. , ,
(. 17.2).
XML-
/res/layout/friend_entry.xml:
<?xml version=1.0 encoding=utf-8?>
<LinearLayout
xmlns:android=http://schemas.android.com/apk/res/android
android:id=@+id/root
android:orientation=vertical
android:layout_width=wrap_content
android:layout_height=wrap_content
android:background=@drawable/bkgrnd>
<TextView
android:id=@+id/TextView_Friend_Email
android:layout_width=wrap_content
android:layout_height=wrap_content
android:textSize=@dimen/help_text_size
android:textStyle=bold
android:text=@string/settings_friend_email></TextView>
<EditText
android:id=@+id/EditText_Friend_Email
android:layout_height=wrap_content
android:maxLength=50
android:layout_width=fill_parent
android:maxLines=1
android:inputType=textEmailAddress></EditText>
</LinearLayout>
. 17.2. ,
. -
LinearLayout : TextView, ,
, EditText,
.
,
Button Button_Friend_Email
,
.
, :
Button addFriend = (Button) findViewById(R.id.Button_Friend_Email);
addFriend.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showDialog(FRIEND_EMAIL_DIALOG_ID);
}
});
onCreateDialog()
QuizSettingsActivity, case
:
case FRIEND_EMAIL_DIALOG_ID:
final View friendDialogLayout = layoutInflater.inflate(
R.layout.friend_entry, (ViewGroup)
findViewById(R.id.root));
AlertDialog.Builder friendDialogBuilder =
new AlertDialog.Builder(this);
friendDialogBuilder.setView(friendDialogLayout);
final TextView emailText = (TextView)
friendDialogLayout.findViewById(R.id.EditText_Friend_Email
);
friendDialogBuilder.setPositiveButton(
android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String friendEmail = emailText.getText().toString();
if (friendEmail != null && friendEmail.length() > 0) {
doFriendRequest(friendEmail);
}
}
});
return friendDialogBuilder.create();
.
, AlertDialog, .
0 (. 17.3),
FriendRequestTask. ( .)
,
.
. 17.3. ,
ASYNCTASK,
FriendRequestTask,
AsyncTask,
QuizSettingsActivity.
FriendRequestTask execute()
,
.
FriendRequestTask
, AsyncTask,
. (
. .)
doInBackground(), :
@Override
protected Boolean doInBackground(String... params) {
Boolean succeeded = false;
String friendEmail = params[0];
SharedPreferences prefs =
getSharedPreferences(GAME_PREFERENCES, Context.MODE_PRIVATE);
Integer playerId = prefs.getInt(GAME_PREFERENCES_PLAYER_ID, -1);
Vector<NameValuePair> vars = new Vector<NameValuePair>();
POST- HTTP,
, HttpClient.
HttpPost
URL ;,
UrlEncodedFormEntity,
POST-.
, execute()
HttpClient, .
, ,
,
ResponseHandler.
, ,
QuizScoresActivity Scores of Friends (
) , . ,
,
.
,
, URL
.
, ,
.
,
ScoreDownloaderTask
Scores of Friends ( ) (. 17.4).
, ,
XML- .
,
, !
, ,
, (, , )
.
.
,
, (
) .
API, -,
REST (Representational State Transfer).
, , Facebook, .
Android-
API,
.
, .
, Android-:
Twitter, ;
,
, Twitter Facebook;
Twitter-.
Twitter Android .
, .
Facebook
Facebook -,
, , .
developers.facebook.com ,
Facebook .
Facebook Platform for Mobile (Facebook Connect, Facebook SMS ..)
wiki.developers.facebook.com/index.php/Mobile.
Twitter
Twitter ,
, .
, 140 , Twitter
. Twitter ,
apiwiki.twitter.com, Twitter API.
OpenSocial
,
API OpenSocial,
wiki.opensocial.org. OpenSocial API ( API,
),
, (
):
friendster (- - );
hi5 ( );
Hyves ( );
Linkedln ( );
Mail.ru ( );
mixi ( );
MySpace ( );
NetLog ( );
orkut ( );
RenRen ( Xiaonei, );
Yahoo! ( );
XING ( ,
).
.
,
. ,
Been There,
Done That!, (
) . ,
, .
:
?
: ,
, .
/ ,
. , ,
. , ,
,
, /.
,
,
API .
: , , ?
: ,
, ,
. ,
: , ,
, , ,
, . ,
, ,
Been There, Done That!, :
, . ( ,
, ,
.) ,
, ,
: ,
, ?
: -
- (, Google,
Amazon, eBay), , API
, - .
,
, ,
. ,
,
, API- .
1.
? Android-
.
2.
Been There, Done That! ?
A.
.
B.
.
C.
.
D.
.
3.
? Android SDK
, Facebook, Twitter MySpace.
1.
.
,
.
,
.
,
, .
2.
B. Been There, Done That!
.
3.
. ,
Android SDK, API,
, Facebook, Twitter MySpace.
1.
Scores of Friends ( ) ,
. (: URL
XML- ,
.)
2.
, ,
,
( , ,
). .
URL,
followers true (, http://tqs.nnamlambo.com/scores.jsp7playerld
s##&followers=true).
3.
API
.
Been There, Done That!,
. ,
Twitter ,
(, X
!).
4.
,
, . .
.
18.
, :
;
, ;
.
Been There, Done That!. ,
,
,
,
.
Android SDK
,
, .
API
, .
.
, ,
,
. ,
. , , ,
,
.
, - ,
.
Been There, Done That!.
:
;
;
;
Been There, Done That!,
.
XML-,
Android. (
.)
, :
. ,
(dp dip),
,
.
, _____________________________________________________
Android ,
74x74 .
, . , .
. ( )
.
. ,
. .
.
.
,
XML- widget_info.xml /res/xml.
:
<?xml version=1.0 encoding=utf-8?>
<appwidget-provider
xmlns:android=http://schemas.android.com/apk/res/android
android:minWidth=146dp
android:minHeight=146dp
android:updatePeriodMillis=10800000
android:initialLayout=@layout/widget>
</appwidget-provider>
,
.
, , , , 146dp,
,
(74dp) . 74dp,
2dp .
74 2 148. 2
146, . ,
.
10.800.000 ,
. ,
, android:
initialLayout="@layout/widget".
.
Android
Android, ,
.
BroadcastReceiver.
, AndroidManifest.xml <receiver>,
,
.
, <receiver>
<application> AndroidManlfastxml:
<receiver
android:name=QuizWidgetProvider>
<intent-filter>
<action
android:name=android.appwidget.action.APPWIDGET_UPDATE />
</intent-filter>
<meta-data
android:name=android.appwidget.provider
android:resource=@xml/widget_info />
</receiver>
<receiver> Android
, . ,
.
. ,
RemoteViews,
,
. , ,
.
RemoteViews , . ,
: - ,
. RemoteViews - .
- -, :
LinearLayout;
FrameLayout;
RelativeLayout;
TextView;
ImageView;
Button;
ImageButton;
ProgressBar;
AnalogClock;
Chronometer.
, , . ,
, ,
,
,
.
. , ,
, ,
RemoteViews.
, widget.xml
:
<?xml version=1.0 encoding=utf-8?>
<RelativeLayout
xmlns:android=http://schemas.android.com/apk/res/android
android:layout_width=wrap_content
android:layout_height=wrap_content
android:id=@+id/widget_view>
<ImageView
android:layout_centerInParent=true
android:layout_height=fill_parent
android:layout_width=fill_parent
android:id=@+id/widget_image></ImageView>
<TextView
android:text=@+id/TextView01
android:layout_width=wrap_content
android:layout_height=wrap_content
android:layout_alignParentTop=true
android:layout_centerHorizontal=true
android:id=@+id/widget_nickname></TextView>
<TextView
android:text=@+id/TextView02
android:layout_width=wrap_content
android:layout_height=wrap_content
android:layout_centerHorizontal=true
android:layout_alignParentBottom=true
android:id=@+id/widget_score></TextView>
</RelativeLayout>
, , .
AppWidgetProvider, ,
:
onUpdate() ,
.
onDeleted() ,
.
onEnabied()
, .
onDisabied() ,
.
onReceive() ;
(
onUpdate(),
onDeleted(), onEnabled() onDisabied()).
, .
onUpdate()
RemoteViews.
, . ,
, AppWidgetProvider:
public class QuizWidgetProvider2 extends AppWidgetProvider {
@Override
public void onUpdate(Context context,
AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
WidgetData widgetData = new WidgetData(Unknown, NA, );
getWidgetData(widgetData);
String packageName = context.getPackageName();
RemoteViews remoteView =
new RemoteViews(context.getPackageName(), R.layout.widget);
remoteView.setTextViewText(
R.id.widget_nickname, widgetData.nickname);
remoteView.setTextViewText(
R.id.widget_score, Score: + widgetData.score);
if (widgetData.avatarUrl.length() > 0) {
URL image;
try {
image = new URL(widgetData.avatarUrl);
Bitmap bitmap =
BitmapFactory.decodeStream(image.openStream());
if (bitmap == null) {
Log.w(DEBUG_TAG, Failed to decode image);
remoteView.setImageViewResource(
R.id.widget_image, R.drawable.avatar);
} else {
remoteView.setImageViewBitmap(
R.id.widget_image, bitmap);
}
} catch (MalformedURLException e) {
Log.e(DEBUG_TAG, Bad url in image, e);
} catch (IOException e) {
Log.e(DEBUG_TAG, IO failure for image, e);
}
} else {
remoteView.setImageViewResource(
R.id.widget_image, R.drawable.avatar);
}
try {
ComponentName quizWidget =
new ComponentName(context, QuizWidgetProvider.class);
AppWidgetManager appWidgetManager =
AppWidgetManager.getInstance(context);
appWidgetManager.updateAppWidget(quizWidget, remoteView);
} catch (Exception e) {
Log.e(DEBUG_TAG, Failed to update widget, e);
}
}
private void getWidgetData(WidgetData widgetData) {
}
}
, .
getWidgetData(),
SharedPreferences .
,
SharedPreferences,
getWidgetData() .
RemoteViews.
, ,
. , RemoteViews
, ,
.
(
),
RemoteViews setTextViewText(),
,
.
RemoteViews ,
URL
. ,
RemoteViews setImageViewBitmap()
setImageViewResource().
.
updateAppWidget() AppWidgetManager.
RemoteViews
ComponentName
QuizWidgetProvider,
ComponentName.
_________________________________________________________________
, , ,
onUpdate() appWidgetManager appWidgetIds - . appWidgetManager ,
, AppWidgetManager
. appWidgetIds ,
, .
appWidgetIds, ,
, .
,
, .
,
. 18.1.
. 18.1.
______________________________________
Android , :
1.
.
2.
. (
Been There, Done That! - ).
3.
(
).
4.
Add to Home Screen ( ),
Widgets ().
5.
Choose widget ( ) ,
( ),
.
, 18.2.
. 18.2.
Been There, Done That!
,
,
. ,
, -
.
, .
RemoteView, ,
. -.
,
. ,
, , . ,
, , - .
__________________________________________________________________
, , , Facebook,
EditText. , ,
, .
, .
,
, .
Android SDK
PendingIntent. , , , .
PendingIntent, Intent.
PendingIntent
, ,
.
. PendingIntent ,
RemoteView, setonClickPendingIntent().
updateAppWidget().
Intent launchAppIntent =
new Intent(context, QuizMenuActivity.class);
PendingIntent launchAppPendingIntent =
PendingIntent.getActivity(context, 0, launchAppIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
remoteView.setOnClickPendingIntent(
R.id.widget_view, launchAppPendingIntent);
-,
PendingIntent setClickpendingIntent(),
- RealativeLayout widget.xml. ,
, QuizmenuActivity;
Been There, Done That!.
( , , ,
, ,
QuizMenuActivity .)
, __________________________________________________
-
PendingIntent. updateAppWidget(),
.
, , , ,
,
. , , , .
BroadcastReceiver,
. .
, ,
, .
. ,
Service,
Android, .
Android :
,
,
.
_________________________________________________________________
Thread ? ,
,
: onUpdate(),
, .
, Service, Android, ,
.
,
Android , Settings ()
, ) Applications ()
Running Services ( ).
. . 18.3 Running Services
( ).
Service Service,
AndroidManifest.xml. Been There, Done That!-
Service OuizWidgetProvider.
onUpdate() onStartCommand()
Service Thread, ,
.
, __________________________________________________
Service Activity. ,
. , ,
onCreate() onStartCommand(),
onBind(), .
, , onDestroy().
QuizWidgetProvider:
public static class WidgetUpdateService extends Service {
Thread widgetUpdateThread = null;
private static final String DEBUG_TAG = WidgetUpdateService;
@Override
public int onStartCommand(Intent intent, int flags, final int
startId) {
widgetUpdateThread = new Thread() {
public void run() {
// code moved from onUpdate() method
}
};
widgetUpdateThread.start();
return START_REDELIVER_INTENT;
}
@Override
public void onDestroy() {
widgetUpdateThread.interrupt();
super.onDestroy();
@Override
public IBinder onBind(Intent intent) {
// no binding; cant from an App Widget
return null;
}
}
, onUpdate()
run() , onStartCommand().
_________________________________________________________________
, .
Android,
. <service> <application>
:
<service
android:name=QuizWidgetProvider$WidgetUpdateService />
, .
onUpdate() .
: Context.
startService(), Context.bindService().
startService() onUpdate()
:
@Override
public void onUpdate(Context context,
AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Intent serviceIntent = new Intent(context,
WidgetUpdateService.class);
context.startService(serviceIntent);
}
,
, .
. , , , , .
run()
Thread, :
if (!WidgetUpdateService.this.stopSelfResult(startId)) {
stopSelfResult()
, .
, stopSelf().
, ,
,
.
, .
, ,
, .
onDeleted()
AppWidgetProvider:
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
Intent serviceIntent = new Intent(context,
WidgetUpdateService.class);
context.stopService(serviceIntent);
super.onDeleted(context, appWidgetIds);
}
StopService onDestroy()
Service, , ,
.
_________________________________________________________________
, , . . , , , ,
.
: . -.
, .
AppWidgetHost AppWidgetHostView.
: ,
, Button?
:
,
,
, PendingIntent
Intent.
, .
Handling User Interaction with Android App Widgets,
www.developer.com/ws/article.php/3837531/Handling-User-lnteraction-withAndroid-App-Widgets.htm.
: ?
: , Been There, Done That!,
.
.
, .
,
, , .
Handling User Interaction with
Android App Widgets (
).
1.
? .
2.
-, :
A.
B.
C.
Button.
WebView.
ProgressBar.
3.
? ,
,
.
4.
A.
B.
C.
.
. .
.
3.
. ,
AppWidgetHost.
4.
B. Button ProgressBar ,
- WebView .
5.
. 74
,
, 2 . ,
(72 2) 2, 146 .
a. ,
. Thread ,
, ,
. ,
.
3.
Been There, Done That!
, . (XML- ,
,
, , URL .)
4.
,
, .
5.
,
, , ,
.
IV. ANDROID
19.
, :
, Android;
;
;
, .
.
Android; ,
.
, Android, Android Market.
_________________________________________________________________
24 ,
Android Market.
,
,
. . ,
, , , , ,
. , ,
, ,
; , ,
, ;
, ,
, . ,
, (), ()
() (. 19.1).
. 19.1. , ,
().
.
. ,
.
, ,
. , ,
(, Name, , Nom, Nombre).
, ,
.
Android .
! ____________________________________________________________
(. . Java). .
ANDROID
, Android
SDK
. /
Android .
, Android-,
:
, Android (
);
, Android (
,
);
, , Android Market (
, Google ;
).
, Android (
), . 19.1.
19.1
(zh)
(cs)
(nl)
(en)
(fr)
(de)
(it)
(jp)
(ko)
(pl)
(ru)
(es)
(zh_CN)
(zn_TW)
(cs_CZ)
(nl_NL)
(nl_BE)
(en_US)
(en_GB)
(en_CA)
(en_AU)
(en_SG)
(en_SG)
(fr_FR)
(fr_BE)
(fr_CA)
(fr_CH)
(de_DE)
(de_AT)
(de_CH)
(de_LI)
(it-IT)
(it_CH)
(jp_JP)
(ko_KR)
(pl_PL)
(ru_RU)
(es_ES)
, __________________________________________________
. ,
Android ,
developer.android.com/sdk/sndroid-2.1.html#locs.
Android
, Android
. ,
. ,
Deutsch (Deutschland) ( ()).
, ,
English (American) ( ()),
Espacol (Estados Unidos) ( ()) ,
.
Settings
(). ,
.
______________________________________
, :
1.
,
Menu Settings ()
2.
Settings ()
Language & Keyboard ( ).
3.
Select Locale ( )
. Android
. ,
Espanol (), Android
.
,
.
, Android. Android- ,
Android
. . ,
, .
,
.
, , ,
, .
,
,
,
ISO 639-1 (
www.loc.gov/standards/iso639-2/php/code_list.php).
,
en, fr, de.
, .
, , Been There, Done That!
, .
:
1.
strings.xml .
,
. ,
, /res/values/strings.xml,
( ).
2.
strings.xml
/res/values-fr/.
3.
strings.xml
/res/values-de/.
Android
. , ,
, /res/values/. ,
( , ,
, ),
( ), .
,
, /res/drawable/,
/res/drawable-de/.
,
( , ,
). !
.
,
,
ISO 639-1 (
www.loc.gov/standanls/iso639-2/php/code_list.php),
, , , ISO 3166-1-alpha-2 (
www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_ele
ments.htm). ,
en-rUS, en-rGB,
en-rAU. ,
.
, Been There, Done That!*
, :
1.
strings.xml . ,
, /res/values/
strings.xml, ( ).
2.
strings.xml
/res/values-en-rGB/.
3.
strings.xml
/res/values-en-rAU/.
. , ,
,
.
, .
, ,
.
! ____________________________________________________________
Android -,
Android,
developer.android.com/guide/topics/resources/resourcesi18n.html#best-match.
Android Market
Android Market ,
Android. Android Market
Google Checkout,
, - .
, Android Market,
market.android.com/support/bin/answer.py?hl=en&answer= 138294.
, Android Market ,
, ,
.
! ____________________________________________________________
Android Merket ,
Android- ( ,
),
market.
android.com/support/bin/answer.py?hl=en&answer=136758.
ANDROID-
, .
. ,
.
, , .
Android- :
;
;
.
.
.
, ,
.
, (, , , .
.), ( ,
, ),
.
. ,
, , ,
, , ,
.
:
.
(
).
:
,
,
.
.
.
.
,
, , .
:
;
(
).
:
-
.
(, ). ,
, ,
,
.
,
, ,
, .
, , ,
,
. ,
,
.
.
, , ,
.
- ,
.
.
:
; .
,
. (
Google.)
:
.
, (
, -
).
! ____________________________________________________________
. .
,
,
. , ,
.
,
Android SDK
. , Locale (java.util.Locale) ,
.
,
Android. getConfiguration()
Context, :
Configuration sysConfig = getResources().getConfiguration();
, Configuration, :
Locale curLocale = sysConfig.locale;
,
.
.
, //
December 8, 1975,
// 8 December, 1975. Android SDK
.
,
DateFormat
(android.text.format.DateFormat) ,
,
, .
... ___________________________________________________
TimeUtils(android.util.TimeUtilsl),
.
,
. Java- Currency
(java.util.Currency) .
NumberFormat (java.text.NumberFormat)
.
,
.
, Android ,
. , Android-
,
.
: Android- ?
: .
; ,
. ,
,
, . , ,
, , ,
. ,
() ,
-.
: Android
, ?
: , Android
,
.
. , ,
,
.
: , ,
?
: , , /,
,
/ , .
, ,
,
. ,
- , , ,
/, ,
( ,
) , ,
, , ( , ).
: . - ?
: , ,
,
, .
1.
? Android-
-.
2.
? ,
Android Android Market, .
3.
,
?
A.
B.
C.
D.
.
.
.
.
1.
.
. Android ,
.
2.
. , Android,
. .
3.
. , ,
, , ,
. ,
,
.
1.
Been There Done
That! .
Android (
/).
2.
Been There, Done That! ,
. ,
, /.
Android
( /).
20.
, :
;
;
Android SDK.
Android .
Android SDK
. , Android .
Android
, Android SDK.
ANDROID
.
:
?
? ? ?
?
?
?
Android SDK ?
Android,
,
.
(. 20 1).
,
/res/values/. ,
, . 20.1.
, .
,
. .
20.1
port, land
keysexposed,
keyshidden, keyssoft
navexposed, navhidden
nonav, dpad, trackball,
whell
ISO 639-1
ISO 3166-1alpha-2,
,
, ,
,
,
,
(
)
,
,
SDK
API Level
SDK (,
v1 Android SDK 1.0,
v7
Android SDK 2.1)
.
:
/res/values-en-rUS-port-finger
/res/drawables-en-rUS-land
/res/values-en-qwerty
/res/values-en-rUS-rGB
/res/values-en-rUS-port-FINGER
/res/values-en-rUS-port-finger-custom
,
( , , ),
-, Android,
developer.android.com/guide/topics/resources/providingresources.html#AlternativeResources.
Android- ,
, .
, ,
, .
Been There, Done That!
. ,
. .
, (
,
, ), ,
(. 20.1), .
,
.
:
.
,
.
/res/ layout-land/.
,
Been There, Done That!
( ) .
. 20.1.
( )
________________________________________________________________
, , , ,
// 20.
,
game.xml . 20.2.
. 20.2.
( , )
ImageView, TextView Button
.
, TextView
ImageView.
.
( );
(. 20.3).
. 20.3.
( )
. 20.4.
( , )
, . 20.4.
! _____________________________________________________________
, , ,
, ,
onRetainNonConfigurationInstance() Activity.
no -,
Android,
developer.
androjd.com/resources/articles/faster-screen-orientation-change.html.
. SensorManager
getSystemServi(). ,
getOrientation() SensorManager.
OrientationEventListener(android.view.OrientationEventListener)
onOrientationChanged(),
.
,
. , /res/layout-land/
/res/layout/
, , ,
, .
, ... ___________________________________________________
, Ctrl+F11
Ctrl+F12.
, ,
. ,
Been There, Done That! ,
-
LinearLayout, , ,
, .
, , , - ,
.
. ,
:
. .
- ,
ScroliView ListView.
(
), .
.
,
- RelativeLayout.
- AbsoluteLayout
.
, , NinePatch.
,
.
! ____________________________________________________________
-, Android, ,
developer.android.com/guide/practices/screens_support.html.
Android , ,
, . ,
, .
.
.
,
.
, ... ___________________________________________________
Android SDK and AVO Manager, AVD-,
.
. 20.5, - .
HVGA- ,
Motorola Droid, WVGA854-
.
. 20.5. -
. .
, ,
, :
(
).
,
.
dp sp
pt.
dp
.
(
).
There, Done
That!, ,
, Motorola Droid.
. 20.1, ,
.
,
.
,
,
.
, .
Android SDK
Android SDK: Android 1.1, Android 1.5, Android 1.6, Android 2.0, Android
2.0.1, Android 2.2 Android 2.3.
( Froyo Gingerbread). Google
Android
SDK :
-,
Android, 4 2011 .
developer.android.com/resources/dashboard/platform-versions.html.
SDK
,
(, 2.1 2.0).
,
,
. , ,
. ,
,
SDK. ,
.
,
, ,
.
,
Android-,
.
?
, , SDK
.
! ____________________________________________________________
SDK Android . ,
SDK .
, ,
Android SDK 1.5,
Android 1.6, Android 2.0. .
SDK
, SDK ,
SDK, ,
Android. ,
SDK,
,
. 20.1.
,
SDK. ,
SDK Android,
SDK. .
. Java
, ,
import. ,
SDK ,
.
-
.
,
, - ,
,
.
, __________________________________________________
Android
SDK
developer.android.com/resources/articles/backward-compatibility.html.
ANDROID SDK
Android ,
Build (android.os.Build). ,
SDK_INT Build.VERSION
android.os.Build.VERSION_CODES.
ANDROID SDK
,
, ,
Android SDK. . 20.1, ,
API Level Android SDK.
,
, .
,
. , ,
Android SDK.
:
. ,
?
: -, ,
Android.
,
.
,
Android SDK,
(Android Open Source Project), ,
( )
, .
,
- - , ,
, , .
. (),
Android SDK,
.
:
,
?
:
. , ,
(
port land). Android
.
, ,
(
,
).
1.
?
: /res/drawables-rUS-en.
2.
?
A.
/.
B.
, ,
.
C.
, .
D.
E.
.
.
. . ,
: /res/drawables-en-rUS.
E. ,
. ,
.
-,
Android,
developer.android.com/guide/topics/resources/providingresources.html#AlternativeResources.
1.
Been There, Done That!
. ,
.
( , -
).
2.
Been There, Done That!
SDK
AVD.
21.
ANDROID
, :
Android;
;
;
;
.
. -
Android SDK.
, ,
, ,
,
.
ANDROID
, , ,
Android
Android SDK.
Been There, Done That!.
Android.
,
,
Android.
<permission>.
Android
-- ,
. .
, , . , ,
, ,
, . 21.!.
.
,
, Android:
;
;
. 20.1.
! ____________________________________________________________
. ,
, .
,
NotificationManager (android.app.NotificationManager).
, Notification
( , ,
) notify() NotificationManager,
.
! ____________________________________________________________
,
. , , ,
Android .
Android
: , .
Android, ,
. Android SDK
, :
;
;
(text-to-speech TTS);
Android SDK
: .
,
.
View,
View. ,
, View ,
TextView EditText, , .
, ,
TextView EditText,
.
- , .
, , TextView,
View,
. View
;
View . ,
setTheme() Activity.
Android.
... ___________________________________________________
Android SDK ,
android.R.style. , android.R.style.Theme , . ,
, .
View ViewGroup
, ,
View, Android SDK.
.
View ( ViewGroup) android.view
,
.
View XML-
.
, TextView
Button.
View
developer.android.com/guide/topics/ul/custom-components.html.
Android (
. 21.2) , . ,
Android SDK
(input method
editors - IME).
. 21.2. Android
, .
, , ,
GestureDetector(android.view.GestureDetector).
GestureDetector onTouchEvent()
.
,
, :
onDown , .
onShowPress ,
, , .
onSignleTapUp , ,
.
onSignleTapConfirmed
.
onDoubleTap , .
onDoubleTapEvent ,
, , .
onLongPress onSingleTapUp, ,
,
, .
onScroll ,
, .
onFling ,
,
, , android.gesture,
, ,
. , ,
,
. SDK
GestureBuilder,
,
.
android.gesture 110
developer.android.com/resources/articles/gestures.html.
Android TTS- (android.speech.tts),
. TTS-
, .
, (Location-Based Services,
LBS) .
, .
TTS- Android , (
), , ,
.
,
.
! ____________________________________________________________
TTS- Android
TTS- ( Android SDK 1.6 ), . ( ,
) .
, Settings ()
Text-to-speech => Install Voice Data ( => ).
. , , .
android.speech.tts.
, (android.speech.
RecognizerIntent). ,
,
,
, .
! ____________________________________________________________
Android SDK 2.1 . ,
- .
.
-
. Android ,
,
. Android SDK
,
( ) .
API android.media.
! ____________________________________________________________
Android . - Android
, . , Android,
, ,
, .
Android SDK
. ,
URI,
. MediaPlayer (android.media.MediaPlayer)
MediaRecorder
(android.media.MediaRecorder) .
android.permission.RECORD_AUDIO.
VideoView
. MediaController
VideoView ,
, (. 21.3).
, MediaRecorder
. ,
android.permission.camera, ,
MediaRecorder,
android.permission.REC0RD_AUDIO, Android.
, ,
Android .
. 21.3.
VideoView MediaController
,
, Android
.
Android
Android SDK android.graphics,
(. 21.4).
graphics Android SDK
. 21.4.
,
Android
.21.5. ,
OpenGL ES
Android
OpenGL ES
Android
OpenGL ES ( 1.0),
OpenGL ES 1.1.
OpenGL ES Android , ,
, -
(. 21.5).
ANDROID
.
, ,
, . Android
.
, , . Android-
. , ,
,
, .
,
RingtoneManager. , Android
(android.permission.WRITE_SETTINGS). ,
, ACTION_RINGTONE_PICKER.
WallpaperManager.
, ,
.
, Android
. , ,
.
. , ,
, , , , - .
, .
Android SDK, android.service.wallpaper.
, Android
.
, JPEG-, ,
Android SDK ( ,
, ).
Android.
, -.
,
.
:
, ;
, - ,
- ,
;
,
;
, , .
_________________________________________________________________
,
, Android (bit.
ly/bngiaP), Cube Live Wallpaper, Android SDK.
,
.
,
SharedPreferences
.
,
:
.
SQLite.
,
-.
,
-.
, SharedPreferences
,
Android- .
Java- java.io,
/, .
Android-
Android. Android Android-
:
/data/data/<a >/
,
.
,
Context .
Context, :
openFileInput() , /files,
.
openFileOutput() , /files,
.
deleteFile () /files,
.
fileList() ,
/files.
getDir() File
.
, ... ___________________________________________________
Android ( ), File Explorer ()
DDMS.
SQLIte
Android-
SQLite. SQLite
.
Android SDK SQLite. ,
SQLite Android,
android.database.sqlite. ,
:
, ;
SQL-;
Cursor;
;
,
.
... ___________________________________________________
Android SDK SQLite.
android.database
.
SQLite ,
sqlite3, ADB.
, Android- ,
, -.
, -.
-
Android ,
,
, - .
, -
. -
, ,
, , , .
-
URf, . ,
,
,
. , .
URI ,
. -{)
-
, ,
.
-
-, Android,
android.provider. -:
MediaStore (,
) ;
CallLog ,
;
Browser -, ;
Contacts ;
UserDictionary .
, ... ___________________________________________________
-
View, ListView. Adapter,
ArrayAdapter CursorAdapter, View, AdapterView, ListView
Spinner.
-
, -.
, -
- Android.
- ,
, -. ,
,
(
Folders
()). , Activity,
- ACTION_CREATE_LIVE_FOLDER,
ContentProvide,
.
android.provider.LiveFolders.
Android
.
Activity,
,
. ,
,
( Quick Search Box ( )).
,
, , ,
Android
.
, ,
, .
________________________________________________________________
, Android, SearchManager
(android.app.SearchManager),
Searchable Dictionary, Android SDK.
Android
. ,
LBS-, Android SDK API
, :
(,
);
Wi-Fi Bluetooth;
! ___________________________________________________________
Android.
, ,
.
,
, .
, Android SDK:
.
(
).
.
, __________________________________________________
Android ,
Openintents
(www.openintents.org/en/node/23). , , , . ,
, .
SensorManager.
SensorManager
getSystemService().
Wi-Fi
, (ACCESS_WIFI_STATE
CHANGE_WIFI_STATE) Wi-Fi ,
WifiManager.
WifiManager getSystemService().
Android SDK API
Wi-Fi,
Wi-Fi. ,
.
! ___________________________________________________________
Android Wi-Fi, API Wi-Fi .
Bluetooth
Android SDK Bluetooth,
android.bluetooth.
Bluetooth ,
.
.
, BATTERY_STATS,
Intent.ACTION_BATTERY_CHANGED
BroadcastIntent, BroadcastReceiver
- .
,
:
, ( ), ;
( ) ;
USB.
,
. , ,
,
, ,
.
Android.
Android-, ,
,
. ,
. ,
Android,
,
,
OpenGL ES. Android-
SQLite,
, , , -. ,
.
: Android?
: Android .
,
.
Android
http://devetoper.android.com/guide/appendlx/medla- formats.html.
:
, ?
: , ,
.
Android Android Wireless
Application Development.
Android SDK , Android,
https//developer.android.com.
1.
? - Android-
Android.
2.
Android?
A.
B.
C.
D.
E.
.
.
.
.
.
3.
? Android SDK
Android.
4.
? Android SDK,
.
1.
. -
. -.
-, ,
.
2.
E. android.media
. ' Android
,
, , ,
.
3.
. Notification Manager
Android.
4.
. Android SDK . , Android
. , ,
http://developer.android.com. ,
http://andraidbook.blogspot.com, ,
, .
1.
SQLite Been There, Done That!.
2.
,
getSystemService().
android.content.Context.
3.
Been There, Done That!
,
View.
?
4.
Android- ,
, .
Been There, Done That!.
Android, , .
22. ANDROID-
, :
;
;
, .
. , -
, . .
, .
, ,
, , -
!
,
, ,
, .
,
.
. , , ,
. ,
,
. ,
, , ,
. ,
, , .
, ,
24 7 (,
, ).
, ,
0,99 , , , -
? . ,
.
, , ,
,
.
,
:
;
;
).
, ... _________________________________________________
, ,
(
, ).
,
.
,
. , :
;
,
, , ;
. ,
.
Android.
,
Android SDK, .
:
.
.
( ), ,
.
,
, ,
.
, Perforce, Subversion CVS
Eclipse.
, ... ___________________________________________________
- ,
.
, .
, ,
.
,
.
,
. ,
. , . .
, ,
.
Android ,
, .
, ,
, .
. ,
,
, ,
, .
.
Android-
. ,
.
, :
, ,
.
,
. ,
,
(,
, , ).
/
, ,
, .
, ,
, .
Android
, . ,
,
, ,
.
, .
, , ,
, , ,
, .
, ,
.
,
. ,
,
.
, Android SDK,
; ,
,
, .
, ,
,
.
,
. ,
, ,
,
. . , .
Exerciser Monkey,
Android SDK, - .
100%- ,
. , ,
, ,
, ,
,
, .
, .
, .
; .
, ... ___________________________________________________
, .
, ( ) .
, . ,
, .
,
,
.
,
. ,
.
! ____________________________________________________________
,
, , .
,
.
,
, Android .
, ,
,
Android SDK
, (. 22.1).
. 22.1.
,
,
, - .
:
(, ,
Android SDK, , ,
);
( ,
, ..);
, .
*
. ,
Android 1
. :
,
( );
, (,
);
,
(, ,
-
)
!
, Android. AVD-, ,
.
,
. .
( , , LBS-, Bluetooth-), .
, ,
: ,
, .
.
: .
. . .
, ;
.
! ____________________________________________________________
, ,
().
. ,
, ,
, . .
, , .
,
, .
, , ,
, .
! ____________________________________________________________
, ,
, ,
. . , .
, . Android SDK
, .
:
;
JUnit.
,
Log
(android.util.Log), ,
.
Eclipse
Android SDK.
! ____________________________________________________________
, , , .
.
JUNIT ECLIPSE
Android SDK JUnit
Android-.
Java, ,
. .
,
, .
JUnit.
-, www.junit.org.
, ... ___________________________________________________
, , ,
. ,
.
Android-
:
1) ;
2) ;
3) .
. 22.2. ,
Eclipse
There,
Done That!.
, 1, pa Eclipse,
.
,
.
,
. Android Eclipse, :
1.
File => New => Project ( => =>
).
2.
New Project ( )
Android Android Test Project (
Android). Next ().
3.
Test Target ( )
An Existing Android Project (
Android) Browse ().
4.
Project Selection ( )
, , .
,
. 22.2.
5.
Finish ().
.
, ,
. ,
Nickname () ,
QuizSettingsActivity. ,
:
src
.
New => JUnlt Test Case ( =>
JUnit).
Superclass
()
androld.test.ActivityInstrumentationTestCase2<QuizSettingsActivity>.
(
Finish ().
import
QuizSettingsActivity ( import)
, :
public QuizSettingsActivityTests() {
super(com.androidbook.triviaquiz22, QuizSettingsActivity.class);
}
, , Nickname () ,
SharedPreferences, .
setup(),
. EditText Nickname (),
. :
@Override
protected void setUp() throws Exception {
super.setUp();
final QuizSettingsActivity settingsActivity = getActivity();
nickname =
(EditText) settingsActivity.findViewById(R.id.EditText_Nickname);
}
getActivity() ,
ActivitylnstrumentationTestCase2,
.
teardown().
, .
JUnit test. ,
,
test . ,
, Nickname (), ,
SharedPreferences.
QuizSettingsActivityTests, :
Android- ,
. Android,
Android- .
. assertTrue() ,
true. ,
. .
.
,
SharedPreferences.
QuizSettingsActivity,
:
private static final String TESTNICK_KEY_PRESSES = T E S T N I C K
ENTER;
// ...
public void testUpdateNickname() {
Log.w(DEBUG_TAG, Warning: +
If nickname was previously testnick this test is
invalid.);
getActivity().runOnUiThread(new Runnable() {
public void run() {
nickname.setText();
nickname.requestFocus();
}
});
sendKeys(TESTNICK_KEY_PRESSES);
SharedPreferences settings =
getActivity().getSharedPreferences(QuizActivity.GAME_PREFER
ENCES,
Context.MODE_PRIVATE);
String fromPrefs =
settings.getString(QuizActivity.GAME_PREFERENCES_NICKNAME,
);
assertTrue(Prefs should be testnick, fromPrefs
.equalsIgnoreCase(testnick));
}
,
Android-, .
, ,
. ;
, ,
.
! ____________________________________________________________
,
, @UiThreadTest
. , , sendKeys()
. ( This method cannot be called from the
main application thread ( ).) , ,
, .
, , .
. .
Eclipse:
Run => Debug As => Android JUnit Test (
=> => JUnit Android). Console ()
Eclipse ,
(. 22.3).
! ____________________________________________________________
, Eclipse
JUnit,
. ,
Package Explorer
( ) Eclipse
Debug As => Android JUnit Test ( => JUnit Android).
Debug Configurations
( ) Android JUnit Test
( Android JUnit), ,
.
LogCat Android, .
,
, ,
.
JUnit.
, ,
. . 22.4 ,
Eclipse.
( ,
, )
LogCat.
Instrumentation ( ) .
AndroidManifest.xml
<instrumentation> :
<instrumentation
android:targetPackage=com.androidbook.triviaquiz22
android:name=android.test.InstrumentationTestRunner
android:label=TriviaQuiz22 Tests />
, Dev Tools
Instrumentation ( ),
( label), .
,
Android SDK
,
, Android. :
ActivityUnitTestCase
, ,
.
, ,
onPause() onFinished(), . .
.
ApplicationTestCase ActivityUnitTestCase,
Application .
ProviderTestCase2 .
ServiceTestCase .
, ,
(. . , ,
, ),
, ,
.
android.test.
Android, ,
.
,
.
. ,
Android-
JUnit. ,
, ,
.
:
?
Android-
: Android- .
, .
,
.
:
JUnit?
: -, JUnit,
www.junit.org , .
1. ?
Android- .
2. ?
A.
.
B.
.
C.
.
D.
, .
E.
.
F.
.
3.
? 1(1-
.
4.
? JUnit,
Android SDK,
. ''
A.
B.
.
C.
,
GPS.
D.
/
.
1.
. Android SDK
.
2.
F. , , , ,
. () ,
, Android .
(B) ,
Android, ;
,
. (C)
, ,
. (D)
. (E) ,
. . - , ,
.
3.
.
Android, .
4.
C D. , JUnit
. ,
.
,
.
1.
Been
There, Done That!.
2.
.
3.
,
Android- (,
Android SDK Google Maps API).
,
.
V.
23.
, :
;
;
.
, ,
: ,
. ,
Android Market.
(. 23.1). : ,
, , ( ,
), .
, ,
. -
, .
- ,
.
__________________________________________________________________
. .
, .
-,
, ,
. 23.1.
1.
:
2.
.
3.
4.
5.
6.
Android-
- -.
.
.
.
.
-
. ,
, .
.
,
,
Android , .
,
Android-:
, ,
.
,
,
.
Android
, Android.
,
, ,
Android Market.
Android :
, (PNG- )
. ,
.
, .
, .
, .
, (
).
________________________________________________________________
Android SDK
android:versionName . Android Market .
. .
, .
, Android
. -,
.
, uses-sdk.
,
Android SDK, .
API level,
Android SDK. , Android SDK 2.1
API level 7.
... ______________________________________________________
Android Market , .
, ,
, uses-sdk.
debuggable.
, .
, ,
uses-permission, ,
,
.
Android- , ,
,
.
(
), .
,
.
-
,
, - .
, , Eclipse
Run () Debug
()
- . . , ,
,
(, Android Market),
.
- - ,
, ,
. ,
,
(. 23.2).
. 23.2 -
, - ,
,
.
Android ( .apk) .
.
Android Eclipse ,
, !
Android- ,
Android .
Eclipse .
,
. .
! _______________________________________________________________
.
.
Android-, .
, ( ) ,
.
___________________________________________________________________
, , Verisign,
Equifax , , ,
, .
Android- . ,
, , ,
( - ) ,
, ,
( Android) ,
.
)
. Android , ,
, . , ,
, ,
.
... _______________________________________________________
Android .
, ,
.
, Android. ,
Eclipse, :
1. Eclipse
Export ().
2. Export ()
Android Export Android Application ( Android).
3. Next ().
4. Next (). (
,
.)
5. Keystore selection ( )
Create New Keystore (
) (,
) Location (),
( Password ()
Confirm ( )). ( ,
Browse (),
, .)
!
_________________________________________________________________
. , . , ,
.
, ,
.
. 23.3. Android-
Eclipse
6.
Next ().
7.
Key Creation ( ) ,
, . 23.3.
! _______________________________________________________________
Android
( Validity ( )) , 25
. , Android Market ,
, 22 2033 ,
, 25 , .
8.
Next ().
9.
Destination and Key/Certificate checks (
/)
.
10.
Finish ().
, .
, ... ______________________________________________________
(.apk)
keytool jarsigner, JDK,
zipalign, Android SDK.
zipalign ,
Android. Eclipse
zipalign .
, , ,
, , .
Eclipse.
,
.
___________________________________________________________________
,
, .
( ), ,
Menu, Settings (),
Applications (),
Manage Applications ( ),
, Uninstall () , . ,
, , ,
. , ,
, .
( ) (.)
adb. adb:
adb install <___.apk>
, . , , ,
. devices
adb, , :
adb devices
, , , .
:
$ adb devices
List of devices attached
emulator-5554 device
HT9CSP801234 device
,
, -s. , BeenThereDoneThat.apk , :
adb -s emulator-5554 install BeenThereDoneThat.apk
adb
-, Android,
developer.android.com/guide/developing/tools/adb.html.
. , ,
:
, .
, .
, , .
, , ,
, ,
.
- , , ,
. ,
,
!
. ,
, ,
,
. , , .
:
, Android?
: , . ,
Android Market. , , .
Android ,
.
: 22 2033 ?
:
.
, ( ) .
: ?
: , getPackageInto()
PackageManager, . -
PackageInfo, , .
1.
?
.
2.
Android, .
?
A.
B.
C.
D.
inviteid:versionCode.
android:versionLabel.
android:versionName.
android:version.
E.
3.
? , ,
.
1.
. , ,
, ,
, , , ,
.
2.
A C. Android ,
.
3.
. Android ,
.
1.
Been There, Done That!,
, ( ). -
.
2.
Been There, Done That!
, adb.
24.
ANDROID MARKET
, :
Android- Android Market;
Android-;
.
! , ,
Android-.
. ,
Android Market, .
Android , .
, .
ANDROID MARKET
Android Market
Android-. . Android Market , Android. ,
,
Android Market.
Android Market
. Google
Google Checkout,
Android Market (
!? ! !) .
Android Market, :
1. http://market.android.com/publish/signup, .24.1.
381
. 24.4.
382
. 24.4. ,
, . 24.4
.
. 24.4 , ,
. ,
, .
, .
.
(), -
,
.
50 ,
, ,
,
.
383
All Locations ( ),
, .
,
Android,
http://market.android.com/support/bin/answer.py?hl=en&answer=138294.
,
, Android Market,
. .
Android Market : . Android
Market ,
. .
. ,
Android Market , 30%
. 0,99 200
, .
Copy Protection
( ) On (),
.
, .
.
.
,
( , )
Android-,
, .
!
_______________________________________________________________
(
Learn More ( )) .
Google
- , , , .
, ,
.
384
,
_____________________________________________________
, ,
. , , , ,
, , Android
Android Market
, Publish (),
Android Market .
, ,
, , , ,
All Android Market Listings ( Android Market)
. ,
, , , .
, .
,
. ,
, .
, . ,
. ( 99 200 .)
,
Android API
.
Android Market Google Checkout.
, .
(, , , ),
. , Android,
, , ,
- API , PayPal, Google Amazon. ,
.
385
!
_______________________________________________________________
, Android Market,
.
,
,
Android Market.
.
. .
Android .
, Google AdSense.
Android Market
, ,
Android Market 24- . , 24 , Android Market . , , ,
24
. 15
.
. ,
.
, , ,
, , ,
.
ANDROID MARKET
,
, Android Market.
,
.
Android- Android Market. ,
,
Android.
386
,
,
, .
ANDROID-
Android , , ,
. ,
Android Market,
. ,
,
, Android
Market, ,
, Android
Market,
.
,
_____________________________________________________
, Android, ARCHOS 5 Internet Tablet. , , ( )
, ,
Android.
Android- . ,
, - ,
Android - .
, ,
, ,
.
-
.
: ,
,
. Application Settings
( ) Settings ( ), . 24.5
387
388
,
Android-:
PocketGear
,
(http://www.pocketgear.com).
SlideME ,
Android,
, (http://slideme.org).
AndAppStore Android-, (http://www.andappstore.com).
SHOP4APPS Motorola,
Android
(http://developer.motorola.com/shop4apps/).
MobiHand
(http://www.mobihand.com).
,
, ,
.
,
, ,
Google Experience (. ., , Google, Android
Market).
,
. , ? ,
.
, .
, ...
_____________________________________________________
Android- . .
, Android-,
. ,
,
-,
, (
389
, ). ,
Android Market
.
, .
Eclipse !
, . ( .)
!
: Android Market?
: Android Market , . , Android Market .
(en_US);
c / Francais (fr_FR) ;
/ Deutsch (de_DE);
/ Italiano (it_IT);
/ (es_ES);
/ Nederlands (nl_NL);
/ Polski (pl_PL);
/ Ceske (cs_CZ);
/ Portugues (pt_PT);
/ (zh_TW)
/ (ja_JP);
/ (ko_KR);
/ (ru_RU).
:
?
: , Android- ,
. Android Dalvik, Java-
. , Android , ProGuard (http://proguard.sourceforge.net/).
Android Market
() ,
.
390
1.
? Android
Market .
2.
A.
Android Market
.
B.
Android Market
.
C.
Android Market -
Android-.
D.
Android Market , 30$
.
E.
.
3.
? Android- -.
4.
, .Android Market,
?
A.
.
B.
,
,
.
C.
,
,
.Android Market.
D.
, .
E.
Word- .
F.
! ,
.
.
1.
.
Google . Android-
Android Market.
2.
A D. Android Market
Android-
, , 30% .
391
3.
. Androtd-
- , ,
.
4.
! , , /
, . ,
. Android Market
. Android Market
!
1.
Market.
Android
2.
, Android Market
( - Android Market).
Android Market.
3.
,
.
392
VI.
.
ANDROID-
, Android- :
Java Development Kit (JDK);
Eclipse (IDE);
Android Software Development Kit (SDK) ;
, Android.
-
. , , .
Android-
.
, . ,
, .
-, Android,
developer.android.com/sdk/requirements.html.
Android- :
Windows XP ;
Mac OS X 10.5.8 ( x86):
Linux.
2 , Android-.
JDK.
Eclipse, Android SDK .
JAVA DEVELOPMENT KIT
393
394
, ... ___________________________________________________
Eclipse, Android- -,
Android, developer.
android.com/guide/developing/other-ide.html.
ANDROID SDK
Android-
Android SDK. Android SDK JAR- Android
( Android-),
Android, .
Android SDK - ,
Android, developed
android.com/sdk/index.html ( Android SD and AVD
Manager, , , Android
SDK, , ). Android .
Android SDK . , .
Android SDK and AVD Manager 25
, 40 .
SDK . ,
Android,
Android SDK, ,
Android SDK and AVD Manager.
Android ( ). , Android,
, , USB- Windows.
Android SDK and AVD Manager.
ANDROID SDK
_________________________________
, Android SDK Android SDK and AVD Manager ,
395
Android SDK .
, , Android SDK,
(Windows, Linux Mac OS),
Android SDK and AVD Manager Android SDK 2.1 ( ). Android
SDK , 1 Windows):
1.
/Windows/Android SDK/androidsdk_r08- windows.zip, , ,
(, C:\Program
Files\AndroidSDK). Android SDK and AVD
Manager.
2.
/Windows/Android SDK/androidsdk_r08- windows.zip platforms,
android-sdk-windows ( , C:\Program
Files\AndroidSDK\ android-sdk-windows\platforms).
Android SDK 2.1.
3.
android-sdk-windows
platform-tools. platform-tools_r01windows
/Windows/Android SDK/platform-tools_r01-windows.zip
.
4.
Google API Android
SDK 2.1, /Common/Android SDK/google_apis7_r01.zip add-ons, android-sdk-windows.
5.
Android SDK
2.1, android-sdk-windows
samples. /Common/Android SDK/samples2.1_r01-linux.zip (
).
, Android SDK and AVD Manager, ,
Android SDK 2.1, Google API
.
Windows
PATH, tools Android SDK, (My
Computer)
(Properties). Vista
(Advanced System Settings).
(Advanced)
(System Properties)
(Environment Variables).
396
URL
https://dlssl.google.com/android/eclipse/. ,
URL http://dl-ssl.google.com/android/eclipse/.
5.
Install ()
Developer Tools. ( ,
397
, Android DDMS,
Android Development Tools Android Hierarchy Viewer.)
6.
Next () ,
.
Finish ().
7.
, Eclipse.
ANDROID
ECLIPSE _____________
Android Eclipse
. (
Eclipse 3.5 (Galileo)):
1.
Eclipse.
2.
Help=>Install New Software ( =>
).
3.
Install ()
Add (). Add Site ( ).
4.
Archive ().
5.
/Common/ADT Plugin for Eclipse/ADT-8.0.1.zip ,
, .
Name ().
6.
.
7.
Install ()
Developer Tools. ( ,
, Android DDMS,
Android Development Tools Android Hierarchy Viewer.)
8.
Next () ,
.
Finish ().
9.
,
Eclipse.
, Android Eclipse,
Eclipse, , Android SDK.
Eclipse Window => Preferences ( =>
) ( Eclipse => Preferences (Eclipse => ) OS X). Preferences ()
Android , Android SDK. , ,
SDK Location ( SDK) Preferences
(), SDK (Android 1.0, 1.5, 1.6, 2.0, 2.01,
2.1 . .).
ANDROID SDK
398
Android SDK ,
, SDK, . Android SDK , ,
.
SDK Google
:
-
SDK.
API -
SDK.
,
SDK.
Android SDK,
Android SDK and AVD Manager ( Eclipse
Window =>
Android SDK and AVD Manager ( => Android SDK and AVD Manager))
, . Android SDK Android (
AVD- ) Eclipse, .
, Android. ,
Android- SDK.
Android . Android
USB.
Android
USB
USB.
Android, Menu,
(Settings),
(Applications), - (Development),
o USB (USB Debugging).
, ,
- USB Archos 5 Internet Tablet,
Device Storage & USB connection (
USB), USB Connection Mode ( USB) ,
, Debug Bridge (ADB) ( (ADB))
399
-/ .. .),! SDK.
API - -
SDK.
,
SDK.
, ... ___________________________________________________
. , ,
.
, ,
(Stay awake)
- .
Android- , , , -Mobile Gl, Motorola Droid Nexus One,
USB.
Windows. Android SDK , USB (Device Manager)
, Android SDK, Eclipse.
WINDOWS
USB- Android. Android SDK and AVD Manager USB Driver Package.
developer.android.com/sdk/win-usb.html. ,
, USB-
, .
MAC OS X
ac , , ac USB- . .
LINUX
Ubuntu Linux rules-,
:
400
1.
(root).
2.
3.
/etc/udev/rules.d/50-android.rules.
:
1.
2.
Dapper (6.06):
4.
a+rx /etc/udev/rules.d/50-android.rules.
401
.
ECLIPSE -
,
Eclipse.
Android, Java-
Eclipse.
_________________________________________________________________
, Android- Eclipse? ,
androidwirelessdev@gmail.com ( !
endroidbook.blogspot.com .
!
,
,
, New => Class (
=> ). New Java Class ( Java)
, , ,
-
.
-, - >
Source => Override/Implement
Methods ( => / ).
Override/Implement Methods (/ )
, ,
-, , .
IMPORT
,
Import _ ( )
(, _' ( )), Eclipse
import.
402
, Organize imports ( ) (
Ctrl+Shift+O Windows Cmd+Shift+O
) Eclipse import. Eclipse import ,
.
, , Log Android, Eclipse
.
, Eclipse ,
import .
,
.
r , .
. ,
:
1.
Properties ().
2.
Java Editor
( Java) Save Actions ( ).
3.
Enable Project Specific Settings (
), Perform the Selected Actions on Save
( ), . , Organize
Imports ( ).
, , ( ,
). Javadoc
,
. Javadoc
, Ctrl+Shift+J (Windows)
Cmd+Alt+J (Mac).
Source=>Generate Element
Comment
(
=> ), Javadoc-, , ,
,
. -
403
, ,
Ctrl+.
,
.
Javadoc- .
, .
, (, , Ctrl+)
.
, .
,
, , . : , . !
Eclipse! , .
? ,
! , ,
. ,
, . , ,
.
? !
New Editor ( ),
. , ,
.
, , ? !
. -,
Close Others ( ),
, . -,
,
. ( , , , , .) ,
Eclipse, :
1.
Preferences ()
Eclipse.
2.
Preferences ()
General (), Editors ()
Close Editors Automatically ( ).
404
3.
Number of Opened Editors Before Closing
( ).
, 8 Number of
Opened Editors Before Closing ( ),
.
, , When All Editors Are
Dirty or Pinned ( )
Open New Editor ( ),
, ,
, Number of Opened
Editors Before Closing ( ).
, ,
,
.
Rename () Eclipse .
, ,
.
, ,
Refactor=>Rename (=>). . w ,
ALT+Shift+R, . ,
,
Eclipse ,
.
Eclipse ,
, ,
. ,
. !
Eclipse Java-.
,
(, ).
,
Ctrl+Shift+F (Windows) Cmd+Shift+F (Mac).
.
, . , ,
.
405
Eclipse
Properties (), Formatter () Java Code Style (
Java).
. ,
.
,
.
, .
Eclipse: , ,
Outline ().
Outline (),
. , ,
. .
,
Outline (), .
,
, , , ?
TextView nameCol = new TextView(this);
nameCol.setTextColor(getResources().getColor(R.color.title_color));
nameCol.setTextSize(getResources().
getDimension(R.dimen.help_text_size));
nameCol.setText(scoreUserName);
table.addView(nameCol);
, .
, . Eclipse
Extract Local Variable ( ) Extract Method
( ) .
Extract Local Variable ( ), :
getResources().getColcr(R.color.titie_ color).
Refactor=>Extract Local Variable (=> ) ( Ctrl+Alt+L).
,
Replace All Occurrenes ( ), , .
406
1-3 , .
:
int textColor = getResources().getColor(R.color.title_color);
float textSize =
getResources().getDimension(R.dimen.help_text_size);
TextView nameCol = new TextView(this);
nameCol.setTextSize(textSize);
nameCol.setText(scoreUserName);
nameCol.setTextColor(textColor);
table.addView(nameCol);
. ,
?
.
, Extract Method ( ):
1.
2.
Refactor=>Extract Method ( => ) (
Ctrl+Alt+M).
3.
. (
.)
. ,
.
, ,
. ., !
Extract Method ( ). ,
, .
:
,
!
,
Eclipse .
, Eclipse
, .
407
Eclipse.
-, :
Refresh (), F5.
, R.java,
gen . ( :
.) Compile
Automatically ( ) ,
. ,
.
, .
Project => Clean ( => ) Clean () , . Eclipse
().
Androici- .
, LogCat.
, LogCat.
, ,
. LogCat ,
, . ,
,
.
, Android- ,
.
, . ,
, . :
public static final String DEBUG_TAG = MyClassName;
, .
, ,
,
.
Eclipse ,
.
, Android-
.
408
, Properties () .
,
. Android .
, Eclipse :
, ( ), , , ,
Eclipse. ,
.
,
. , . , Window => Reset Perspective ( => ).
Eclipse
. Eclipse
, ,
, , , ,
.
CVS, Subversion, Perforce, git .
, .
Android- bin gen,
.
Eclipse, Preferences (), Team ( ; Ignored Resources
( ). Ignore Patterns ( ) *., *. *.dex, Add Pattern ( ).
409