không quanmama Tâm是什么意思?

IBM Bluemix
Phát tri?n trên ?ám m?y b?ng m?t cái nh?p chu?t!
C?ng ??ng developerWorks
L?p Activity chính là m?t khung màn hình c?ng vi?c
(workhouse) c?a ?ng d?ng di ??ng, và nó c?ng là n?i b?n có th? tinh ch?nh nh?ng t??ng
tác c?a ?ng d?ng di ??ng v?i ng??i dùng. Giúp m?i th? ho?t ??ng chính xác theo cách mà
b?n mu?n trong vòng ??i ?ng d?ng, sau ?ó s? d?ng các bi?u t??ng (icon) và thanh ho?t
??ng (Action-bar) h??ng d?n ng??i dùng th?ng qua ?i?u h??ng giao di?n ng??i dùng (UI) và
các tính n?ng khác c?a ?ng d?ng.
, CTO, App47
Andrew Glover là nhà phát tri?n, tác gi?, di?n gi? và nhà doanh nghi?p có ni?m ?am mê v? phát tri?n theo hành vi, Tích h?p liên t?c và phát tri?n ph?n m?m Agile. ?ng là ng??i sáng l?p khung c?ng tác BDD (Behavior-Driven Development - Phát tri?n theo hành vi)
và là ??ng tác gi? c?a ba cu?n sách:
(Tích h?p liên t?c),
(Th?c hành Groovy) và
(Các m?u th? nghi?m Java). B?n có th? xem
và theo d?i ?ng trên .
Gi?i thi?uThi?t b? di ??ng ngày nay phát tri?n r?t m?nh, nhi?u h?n c? máy tính ?? bàn mà nhi?u nhà phát
tri?n ?? s? d?ng ?? vi?t ?ng d?ng ??u tiên c?a h?. Vì v?y, th?t d? dàng ?? quên r?ng
thi?t b? di ??ng v?n là m?t m?i tr??ng h?n ch? v? tài nguyên. Khi phát tri?n m?t ?ng
d?ng ?i ??ng, b?n ??ng bao gi? quên nh?ng h?n ch? c?a m?i tr??ng s? ch?y nó. ?i?u
này ??t bi?t quan tr?ng khi b?n xem xét vi?c ?ng d?ng c?a b?n s? ph?i tranh ch?p tài
nguyên v?i ?ng d?ng khác — m?t s? ?ng d?ng c?a h? ???c ng??i dùng s? d?ng cho
các ho?t ??ng hàng ngày nhi?u h?n là c?a b?n.M?t cách ch?c ch?n r?ng ?ng d?ng c?a b?n s? ???c s? d?ng r?ng r?i n?u nó ti?t ki?m tài nguyên h?
th?ng. Trong Android, c? c?u ?? c? hai cùng s? d?ng và ti?t ki?m tài nguyên h? th?ng
chính là l?p Activity. B?n càng hi?u r? v? vòng ??i c?a
workhouse (nó r?t gi?ng v?i m?t Java Servlet), b?n s?
càng có kh? n?ng tinh ch?nh ?? ?ng d?ng c?a b?n s? d?ng tài nguyên h? th?ng m?t cách
hi?u qu? h?n.Chúng ta s? b?t ??u nhanh vào vòng ??i c?a l?p Activity. B?n s? tìm
hi?u v? các ph??ng th?c x? l? t?ng giai ?o?n trong vòng ??i c?a m?t ?ng d?ng Android
th?ng qua vi?c th?c thi các ?ng d?ng Demo. M?t khi b?n hi?u r? cách mà các ph??ng
th?c này làm vi?c v?i nhau, b?n s? có cách s?p x?p t?t cho vi?c s? d?ng tài nguyên
h? th?ng m?t cách kh?n ngoan. Sau ?ó b?n s? chuy?n sang vi?c nh?n ??nh và c?p nh?t
h? th?ng ?i?u h??ng trong ?ng d?ng demo c?a b?n ?? s? d?ng các action icons
(bi?u t??ng ho?t ??ng) c?a b?n h?n là các nút trong menu t??ng tác cho
ng??i dùng. Icon là m?t chu?n trong giao di?n ?ng d?ng di ??ng, và trong phiên b?n
Android m?i (4.2.2 ho?c cao h?n) ?? lo?i b? các tùy ch?n menu trong ?u tiên c?a các
Action-bar. Bi?t làm th? nào ?? tích h?p nh?ng tính n?ng ?? các thi?t b? Android c?a
b?n s? ph?c v? t?t!Vòng ??i c?a l?p ActivityVòng ??i c?a m?t Activity ánh x? (maps) tr?c ti?p t?i vòng ??i c?a ?ng
d?ng di ??ng Android. Gi?ng khi ng??i dùng s? d?ng ?ng d?ng c?a b?n ho?c thi?t b?
l?u tr? nó, n?n t?ng Android s? th?c thi ng??c trên m?t th? hi?n Activity. Khi ng??i dùng kh?i ??ng ?ng d?ng c?a b?n, m?t Activity ??u tiên th?c thi ??nh ngh?a vòng ??i; nó th?c thi
các tr?ng thái khác nhau khi ?ng d?ng ch?y n?n, và nh?ng tr?ng thái khác n?a khi b?
th? hi?n m?i tr?ng thái ?ng v?i t??ng tác trong
vòng ??i c?a Activity. Hình 1. Vòng ??i Activity c?a AndroidVòng ??i c?a ?ng d?ng di ??ng Android g?m 4 tr?ng thái:Kh?i ??ng (Start)T?m ng?ng và ti?p t?c (Pause and resume)D?ng và kh?i ??ng l?i (Stop and restart)H?y b? (Destroy)Tìm hi?u v? t?ng giai ?o?n và ph??ng th?c g?i c?a nó (mà b?n có th? th?c hi?n trong m?t th? hi?n
Activity) trong các ph?n ti?p theo.Giai ?o?n Start trong vòng ??i ActivityTrong , b?n ?? s? d?ng ph??ng th?c g?i l?i t??ng ?ng v?i vi?c b?t
??u m?t Activity, ?ó là onCreate. B?n c?ng có th? làm quen v?i onStart và onResume, hai ph??ng th?c b? sung
???c g?i khi b?t ??u. B?y gi? h?y xem xét các ph??ng th?c trong ph?m vi c?a vòng ??i
Activity.Trong m?i tr??ng phát tri?n Android c?a Eclipse, b?n có th? d? dàng ghi ?è các ph??ng th?c b?ng
cách ch?n tùy ch?n Override/Implement Methods..., nh? .Hình 2. Ghi ?è các ph??ng th?c vòng ??i ActivityTi?p theo, ch?n c? hai ph??ng th?c onStart và onResume:Hình 3. Ch?n m?t ph??ng th?c g?iB?y gi? s? d?ng l?p Log c?a Android ?? t?o ra m?t s? l?i phát bi?u,
gi?ng nh? t?i làm ? .Li?t kê 1. Th?c hi?n các ph??ng th?c g?i Activity
c?a Android@Override
protected void onResume() {
super.onResume();
Log.d("overheardword", "onResume Invoked");
protected void onStart() {
super.onStart();
Log.d("overheardword", "onStart Invoked");
}B?n có th? ki?m tra k?t qu? b?ng cách xu?t ra vài th? hi?n và xem chúng trong Logcat, gi?ng nh?
.Hình 4. Các th?ng tin debug c?a LogCatNh? b?n có th? th?y, onCreate ???c g?i l?n ??u tiên khi ?ng d?ng c?a
b?n ???c n?p, trong khi onStart và onResume ???c s? d?ng trong ph?m vi c?a các giai ?o?n khác, ch?ng h?n
nh? khi m?t ?ng d?ng ???c ch?y n?n và kh?i ??ng l?i.Pause (t?m ng?ng) và resume (ti?p t?c) trong vòng ??i
ActivityB?i vì các thi?t b? di ??ng th??ng ch?a nhi?u ?ng d?ng, các ?ng d?ng này c?nh tranh v?i nhau theo
nhi?u cách ?? thu hút s? chú ? c?a ng??i dùng, ?i?u quan tr?ng là ?ng d?ng c?a b?n
bi?t khi nào ?? m?t ?ng d?ng khác chi?m màn hình và s? d?ng tài nguyên c?a thi?t b?.
??i khi ng??i dùng s? c?n ph?i th?c hi?n m?t cu?c g?i ??n trong khi s? d?ng ?ng d?ng
c?a b?n, ho?c ?ng d?ng c?a b?n có th? ??a ra m?t h?p tho?i pop-up nh? m?t yêu c?u
th?ng tin ho?c th?ng báo l?i. Ho?c hành ??ng s? ph?n nào c?n tr? các Activity hi?n t?i.Khi m?t Activity b? che khu?t m?t ph?n, ph??ng th?c onPause ???c g?i. Khi Activity
t?m ng?ng ?? l?y l?i tiêu ?i?m, ph??ng th?c onResume ???c
g?i. M?i phiên pause-and-resume (t?m-ng?ng-và-ti?p-t?c) có ngh?a là các Activity b?
?nh h??ng ?? ???c che khu?t m?t ph?n nh?ng kh?ng hoàn toàn ?n.Khi ?ng d?ng ???c ?n hoàn toàn, ch?ng h?n, khi ng??i dùng có m?t cu?c g?i ?i?n tho?i, onPause c?ng ???c g?i, nh?ng trong tr??ng h?p này nó ???c
theo sau b?i onStop. Khi ?ng d?ng ???c kh?i ph?c m?t l?n
n?a, onRestart ???c g?i, ti?p theo là onStart, và sau ?ó onResume. H?y xem ?i?u gì s? x?y ra khi b?n th?c hi?n
onPause, onRestart, và onStop. N?u b?n ??
có m?t ?ng d?ng Android trong quá trình làm vi?c theo lo?t bài này, h?y thêm m?t s?
th?ng báo vào m? c?a b?n và sau ?ó ch?y nó. B?m vào nút Home ?? ?n
hoàn toàn ?ng d?ng, và sau ?ó nh?n vào bi?u t??ng c?a ?ng d?ng ?? ??a nó tr? l?i.
??u tiên, b?n s? th?y ph??ng th?c onPause theo sau b?i
onStop. Khi b?n nh?n vào bi?u t??ng ?? g?i l?i ?ng
d?ng, b?n s? th?y ph??ng th?c onRestart theo sau b?i
onStart, và sau ?ó là onResume. Vi?c h?y b? m?t Activity c?ng là m?t ?i?u gì ?ó bình th??ng trong quá
trình ch?y m?t ?ng d?ng. Ví d?, b?n có th? là ch?m d?t m?t th? hi?n Activity b?ng cách g?i ph??ng th?c finish c?a nó. ?i?u quan tr?ng ? ??y là b?i vì m?t Activity ?ang ???c t?t, nó s? theo vòng ??i gi?ng nh? khi nó ???c ?n,
nh?ng l?i g?i cu?i cùng c?a nó là ph??ng th?c onDestroy.Trong , t?i s? d?ng ?ng d?ng Overheard Word (xem bài "" hay
t? Github)
?? làm r? cho quá trình này, b?ng cách g?i ph??ng th?c finish khi vu?t lên.Li?t kê 2. Ví d? h?y b? m?t
Activitypublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
final SwipeDetector detector = new SwipeDetector(e1, e2, velocityX, velocityY);
if (detector.isDownSwipe()) {
}else if (detector.isUpSwipe()) {
}else if (detector.isLeftSwipe()) {
Toast.makeText(getApplicationContext(), "Left Swipe", Toast.LENGTH_SHORT).show();
}else if (detector.isRightSwipe()) {
Toast.makeText(getApplicationContext(), "Right Swipe", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
// nothing
}Các ph??ng th?c vòng ??i Activity mà b?n dùng nhi?u là onCreate, onRestart, và onDestroy. Ví d?, t?i ?? dùng onRestart ?? làm m?i khía c?nh khung nhìn giao di?n ng??i dùng c?a ?ng
d?ng và ph??ng th?c onDestroy ?? phát hành k?t n?i ??n
m?t c? s? d? li?u nh? SQLite ch?y c?c b? trên các thi?t b? Android.Có th? nó ch?a r? ràng, nh?ng m?t khi b?n b?t ??u làm vi?c v?i các m? ngu?n bên ngoài —
ch?ng h?n nh? các d?ch v? web bên ngoài ho?c h? th?ng t?p tin c?a thi?t b? ho?c c?
s? d? li?u — các giai ?o?n vòng ??i này s? tr? nên c?c k? quan tr?ng.Ti?p theo chúng ta h?y xem nh?ng gì s? x?y ra khi chúng ta s? d?ng hai ph??ng th?c móc Activity—onCreateOptionsMenu và onOptionsItemSelected— ?? th?c hi?n hành vi Th?c ??n (Menu) c?a ?ng d?ng. M?t khi chúng ta có ???c
hai ph??ng th?c ??ng b?, chúng ta s? liên k?t tính n?ng c?a nó v?i các bi?u t??ng
giao di?n ng??i dùng pizazz.Chuy?n h??ng v?i Menu và ActionKhi t?i t?o ra d? án Overheard Word trong Eclipse, ph??ng th?c Activity ??u tiên mà t?i ??nh ngh?a là onCreateOptionsMenu. Nh? b?n có th? ?oán, ph??ng th?c này t?o ra m?t
Menu tùy ch?n. Trên các thi?t b? Android c?, Menu tùy ch?n ???c ??i di?n b?i nút
Menu. Trên các thi?t b? m?i h?n, nó ???c bi?u di?n nh? là m?t
lo?t các d?u ch?m theo chi?u d?c, ???c hi?n th? riêng trong nh?ng ?ng d?ng. Các
thi?t b? Android m?i h?n kh?ng c?n ph?i có m?t nút Menu.Trong trình gi? l?p c?a m?t thi?t b? c?, b?n s? th?y m?t nút trên là "Menu". B?ng cách nh?n vào
nó, m?t th? hi?n c?a ?ng d?ng s? hi?n th? m?t Menu tùy ch?n. Trong tr??ng h?p này,
chúng t?i s? xem xét các tùy ch?n cho vi?c ?i?u h??ng. Ví d?, n?u ng??i dùng nh?n
vào nút Home, anh ta s? th?y th?ng tin gi?ng nh? th? hi?n ? .Hình 5. M?t Menu ch?a ???c th?c hi?nTrên máy tính b?ng kh?ng có nút Menu. Thay vì l?a ch?n các m?c t? menu (thanh th?c ??n),
ng??i dùng ???c h?i ?? th?c hi?n các actions (hành ??ng) khác nhau. Giao
di?n ng??i dùng m?i này ???c g?i là Action-bar (thanh hành ??ng), ???c hi?n
th? trong .Hình 6. Action-bar m?i c?a AndroidNút Menu và Action-bar ho?t ??ng nh? nhau, Action-bar ???c dùng trên nhi?u thi?t b? m?i h?n. Vì
m?c tiêu c?a chúng ta là ?ang phát tri?n trên phiên b?n Android c? h?n (h?y nh? l?i
r?ng h?n 50% thi?t b? Android ch?y Gingerbread!), t?i s? s? d?ng nút Menu quen thu?c
cho m?c ?ích minh h?a. Sau ?ó, t?i s? ch? b?n các c?p nh?t m? ??nh h??ng ?? dùng
Action-bar, trong tr??ng h?p b?n mu?n vi?t ?ng d?ng cho các thi?t b? Android phiên
b?n m?i h?n. T?o m?t Menu tùy ch?nB??c ??u tiên ?? trang b? cho Overhead Word m?t giao di?n ng??i dùng t??ng tác hi?u qu? h?n là
vi?c s? d?ng m?t Menu tùy ch?n cho phép ng??i dùng thoát ?ng d?ng. Thoát ?ng d?ng là
m?t giai ?o?n c?a vòng ??i Activity, vì v?y chúng t?i s?
dùng các ph??ng th?c Activity ?? th?c hi?n ch?c n?ng
này.H?y nh? r?ng t?t c? m?i th? liên quan ??n giao di?n ng??i dùng trong m?t ?ng d?ng Android ?ng v?i
m?t t?p tin XML, vì v?y ch?nh s?a t?p tin XML chính là cách b?n t?o ra giao di?n
ng??i dùng. Các t?p tin XML c?a ?ng d?ng Android
n?m trong th? m?c t??ng ?ng trong
th? m?c res c?a d? án (ví d?, t?p tin layout n?m trong
th? m?c layout). M?t bài t?p nhanh, h?y nhìn vào th?c thi m?c ??nh c?a ph??ng th?c onCreateOptionsMenu trong ho?t ??ng chính c?a Overheard Word —
b?n th?y ???c gì t? nh?ng dòng m?? public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.overheard_word, menu);
}N?u b?n ?ang ngh? r?ng b?n s? ph?i tìm m?t t?p tin XML có tên overheard_word.xml trong th? m?c ngu?n menu,
thì b?n ?ang trên ???ng tr? thành m?t chuyên gia Android r?i ??y!I... Quit! (T?i... thoát!)Ti?p theo, h?y ch?nh s?a t?p tin m? ngu?n XML c?a Menu ?? thêm vào m?t m?c quit. B?t ??u b?ng cách tìm t?p tin strings.xml trong th? m?c res/values. Sau ?ó
t?o m?t dòng nh? bên d??i:&string name="quit_menu"&Quit&/string&Dòng này t?o ra t? Quit tham chi?u ??n ??nh danh quit_menu
(b?ng cách này, ta có th? t?o ?i?u ki?n ?? ?a ng?n ng? hóa ?ng d?ng sau này). Ti?p
theo, m? t?p overheard_word.xml trong th? m?c menu. Trong t?p ?ó, ta thay ??i tiêu ?? thành @string/quit_menu, nh? v?y ta ?? liên k?t t? Quit
v?i m?c c?a Menu.B?y gi? h?y kh?i ??ng trình gi? l?p và nh?n vào nút Menu. B?n s? th?y m?t Menu
xu?t hi?n ? d??i cùng c?a màn hình v?i m?t tùy ch?n: Quit. Tuy
nhiên n?u b?n nh?n ch?n nó thì c?ng ch?a có gì x?y ra c? b?i vì ta v?n ch?a làm gì
v?i nó. Chúng ta s? thêm m? th?c thi cho tùy ch?n Quit trong m?t phút. Nh?ng tr??c tiên,
h?y xem xét m?t y?u t?t quan tr?ng khác c?a b?t k? ch?c n?ng c?a ?ng d?ng, ?ó là c?m
giác nhìn nh?n c?a mình. B?n có th? th?y r?t nhi?u giao di?n ng??i dùng di ??ng hi?n
nay (th?m chí c? nh?ng ?ng d?ng Web ngày càng ??u t? vào di?n ng??i dùng) s? d?ng
nh?ng bi?u t??ng ?? ?i?u h??ng. H?y xem nh?ng gì s? x?y ra khi chúng ta thay th? các
nút có tên chung chung sang m?t bi?u t??ng t? do. Các bi?u t??ng (icon) trong thi?t k? giao di?n ng??i
dùngTr??c khi t?i b??c vào l?nh v?c phát tri?n di ??ng, t?i c?ng ?? thi?t k? các bi?u t??ng, nh?ng
hi?m khi s? d?ng chúng trong các ?ng d?ng th??ng m?i c?a t?i. Khi các ?ng d?ng Web
tr? nên t??ng tác h?n thì t?i s? d?ng bi?u t??ng nhi?u h?n. Tuy nhiên ?ó c?ng v?n
ch?a ph?i lúc cho ??n khi t?i b??c vào l?nh v?c di ??ng, ?ó m?i th?t s? là m?i quan
t?m c?a t?i. N?u b?n s? d?ng các bi?u t??ng trong vi?c thi?t k? giao di?n ng??i dùng di ??ng cho Android, b?n
c?n ph?i n?m th?t k? v? ?? ph?n gi?i màn hình c?a thi?t b?. B?i h? sinh thái Android
là v? cùng l?n, ?ng d?ng c?a b?n có th? ch?y trên hàng lo?t các thi?t b?, t? thi?t
b? có màn hình nh? v?i ?? ph?n gi?i th?p ??n nh?ng máy tính b?ng có ?? ph?n gi?i cao
v?i màn hình 7-inch. M?t bi?u t??ng hi?n th? t?t trên m?t thi?t b? c?m tay có th? b?
v? trên máy tính b?ng. Th?t may m?n là b?n có th? ?i?u khi?n hình d?ng c?a các bi?u t??ng ?ng d?ng trong các thi?t b?
khác nhau. H?y xem trong th? m?c res trong ?ng d?ng
Android c?a b?n. B?n s? th?y m?t vài th? m?c có tên là drawable-something-pdi (trong ?ó "something" là m?t lo?t các k? t?). Các
th? m?c này t??ng ?ng v?i các ?? ph?n gi?i màn hình thi?t b?. ??t bi?u t??ng ?úng
kích c? và các t?p tin hình ?nh khác trong các th? m?c này s? ??m b?o r?ng các bi?u
t??ng hi?n th? chính xác trên các lo?i thi?t b? khác nhau.Ví d?, ??i v?i thi?t b? ?? ph?n gi?i siêu cao, Android s? tìm các bi?u t??ng trong th? m?c drawable-xxhdpi. M?t bi?u t??ng trong th? m?c này ph?i có
?? ph?n gi?i là 96 x 96 pixels và ít nh?t là 320 dpi. M?t bi?u t??ng trong th? m?c
drawable-ldpi ph?i là 36 x 26 pixels và 120 dpi. B?n
c?ng có tùy ch?n ?? t?o ra m?t th? m?c drawable m?c ??nh
mà Android s? s? d?ng n?u nó kh?ng tìm th?y t?p tin có ?? ph?n gi?i t??ng ?ng. ?? ??n gi?n, t?i s? t?o ra m?t th? m?c drawable trong ?ng d?ng
Overheard Word. Trong ?ó, t?i s? ??t m?t bi?u t??ng có kích th??c 26 x 26 (a .png)
?? dùng cho tùy ch?n thoát (Quit). Hình 7. Thêm m?t bi?u t??ng vào th? m?c drawableTi?p theo, t?i tham chi?u ??n bi?u t??ng trong Menu tùy ch?n c?a t?i, b?ng cách c?p nh?t các m?c
menu trong t?p tin overheard_word.xml nh? bên d??i:android:icon="@drawable/quit_icon"N?u b?n ?ang cùng làm v?i t?i thì b?n nên c?p nh?t id c?a ph?n t? nh?
bên d??i. Cung c?p cho nó m?t giá tr? chu?i m? t?: android:id="@+id/quit_item"Vi?c có m?t m? t?, m?t chu?i giá tr? d? hi?u s? giúp ích r?t nhi?u cho chúng ta trong các b??c
ti?p theo ?? th?c hi?n hành ??ng thoát bên trong ph??ng th?c onOptionsItemSelected. Chúng ta có th? tham kh?o các m?c Menu trong
tr??ng h?p l?a ch?n, th?ng qua ID c?a quit_item. Ngay b?y
gi?, h?y m? trình gi? l?p c?a b?n lên và nh?n vào Menu. T?i ngh?
b?n s? thích nh?ng gì b?n th?y!Hình 8. Bi?u t??ng tuy?t ??p! (Courtesy c?a
Glyphish)Th?c hi?n các hành vi c?a MenuB?y gi? t?i ?? có m?t bi?u t??ng ??p ?? cho nút Quit (và t?i hy v?ng b?n c?ng có m?t cái t??ng t?
cho ?ng d?ng c?a b?n), tuy nhiên t?i c?n ph?i vi?t thêm m? ?? nói cho ?ng d?ng bi?t
c?n ph?i làm gì khi nút Quit ???c nh?n.Vi?c th?c hiên b?t k? hành vi nào trong Menu tùy ch?n ??u b?t ??u b?ng vi?c n?p ch?ng ph??ng th?c
onOptionsItemSelected. Vì v?y h?y n?p ch?ng ph??ng
th?c ?ó, và c?p nh?t m? c?a b?n gi?ng nh? t?i ? bên d??i (nh?ng nh? ch?nh l?i ID c?a
m?c Menu phù h?p v?i ?ng d?ng c?a b?n):Li?t kê 3. X? l? l?a ch?n các m?c
Menupublic boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.quit_item:
this.finish();
return super.onOptionsItemSelected(item);
}L?u ? r?ng ??y ch? là m?t c?u switch (chuy?n ??i) ??n gi?n. N?u id c?a quit_item ???c ch?n,
ph??ng th?c finish s? ???c g?i, v? c? b?n s? thoát ?ng
d?ng.H?y ch?y th? ?o?n m? m?i trong trình gi? l?p c?a b?n: ch?m vào nút Menu, nh?n
tùy ch?n thoát (X), và xem ?i?u gì x?y ra trong LogCat. B?n s? th?y
m?t vòng ??i Activity ??y ?? ch?y các giai ?o?n: onPause r?i onStop và sau ?ó là
onDestroy. Action-bars trong Android 3.xNh? t?i ?? ?? c?p, các phiên b?n m?i h?n c?a Android (Honeycomb và các b?n sau này) tránh s? d?ng
các tùy ch?n Menu trong Action-bar. Các thi?t b? m?i h?n th?m chí còn kh?ng yêu c?u
ph?i có m?t nút Menu, vì v?y th?t ?áng ?? tìm hi?u cách làm vi?c
c?a ch?c n?ng ?i?u h??ng trong ?ng d?ng c?a b?n (hay các tính n?ng khác) v?i m?t
Action-bar.S? kh?ng m?t nhi?u b??c ?? ki?m tra ch?c ch?n r?ng tính n?ng ?i?u h??ng mà tr??c ??y ???c vi?t
cho m?t Menu tùy ch?n gi? ??y s? làm vi?c v?i m?t Action-bar. B?n ?? th?c hi?n t?t
c? các ph??ng th?c c?n thi?t; nh?ng gì còn l?i là th?c hi?n m?t s? thay ??i m? ngu?n
XML c?a b?n. Tr??c tiên, b?n c?n ph?i t?o ra m?t thi?t b? gi? l?p gi?ng v?i thi?t b? th?t có s? d?ng m?t
Action-bar ch? kh?ng ph?i là m?t nút Menu. Cách d? nh?t ?? làm ?i?u ?ó là t?o ra m?t
thi?t b? gi? l?p máy tính b?ng. M? ?ng d?ng dòng l?nh c?a Android SDK Manager bên
trong th? m?c mà b?n ?? cài ??t Android SDK (c?ng c? dòng l?nh c?a android ???c tìm th?y trong th? m?c tools). Khi SDK Manager ch?y, h?y ch?n tùy ch?n Manage
AVDs... t? Menu Tools. Nó s? hi?n th? cho b?n m?t h?p
tho?i ?? b?n ??nh ngh?a m?t gi? l?p m?i hay Android Virtual Device (AVD). Ch?n
7.0'' WSVGA (Tablet) (1024 x 600: mdpi), sau ?ó thi?t l?p
Target cho trình gi? l?p t? Android 4.2.2 tr? lên. Sau khi thi?t
l?p thì b?n s? có m?t trình gi? l?p kh?ng có các nút Menu, nh? trong .Hình 9. T?o m?t trình gi? l?p cho máy tính b?ngTi?p theo, ch?y ?ng d?ng c?a b?n trên trình gi? l?p ?ó. B?n s? th?y m?t ???ng th?ng ??ng v?i d?u
ba ch?m ? bên góc ph?i. Nhìn ??p ph?i kh?ng? Theo m?c ??nh, Android v?n gi? l?i các
Menu, ngay c? trong phiên b?n hi?n th? m?i h?n. B?ng cách c?p nh?t m? ngu?n XML c?a
?ng d?ng b?n có th? n?ng c?p xu?t hi?n Action-bar và hành vi ?? nó t? nhiên h?n.B?t ??u v?i t?p tin AndroidManifest.xml c?a ?ng d?ng, n?i b?n s? c?p
nh?t Target c?a SDK:&uses-sdk android:minSdkVersion="11" android:targetSdkVersion="17" /&K? ti?p, vào Properties (thu?c tính) c?a d? án trong Eclipse và c?p nh?t Project Build
Target lên b?t k? phiên b?n nào cao h?n Android 4.2.2. Nh?n
OK và ?? d? án c?a b?n t? build (x?y d?ng) l?i. Sau ?ó, tìm t?p
tin XML c?a Menu trong th? m?c menu. C?p nh?t nó nh? bên
d??i mà v?n gi? l?i ??nh ngh?a item cho Quit. android:showAsAction="always"Cu?i cùng, n?u d? án c?a b?n kh?ng có hai th? m?c con trong th? m?c res tên là values-v11 và values-v14, thì h?y t?o các th? m?c ?ó. Sau ?ó, trong th? m?c values-v11, thêm vào t?p XML nh? sau:&resources&
&style name="AppBaseTheme" parent="android:Theme.Holo.Light"&&/style&
&/resources&Trong th? m?c values-v14, thêm vào t?p:&resources&
&style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar"&&/style&
&/resources&B?y gi? h?y kh?i ??ng l?i trình gi? l?p và b?n s? th?y bi?u t??ng c?a b?n n?m ? góc ph?i bên
trên:Hình 10. M?t Action-bar v?i các bi?u t??ngB?y gi? h?y tr? v? t?p tin Menu trong th? m?c menu n?i mà m?c quit item ???c ??nh ngh?a và thay ??i showAsAction thành never. Ch?y l?i ?ng d?ng
và b?n s? th?y d?u ba ch?m ? góc ph?i.??ng quên thi?t l?p l?i nhéL?u ? r?ng n?u b?n mu?n gi? thi?t b? c?a b?n ch?y Gingerbread, b?n c?n ph?i tái thi?t l?p d? án
c?a b?n và nh?ng thay ??i trong t?p XML. Nh?ng thay ??i này kh?ng t??ng thích.Thú v? h?n v?i các bi?u t??ngH?n n?a, khi b?n thêm m?t Menu tùy ch?n vào ?ng d?ng ch?y trên Gingerbread, b?n s? th?y nó chuy?n
??i khá t?t sang các thi?t b? m?i có Action-bar, và h?c cách làm th? nào ?? n?ng c?p
tính n?ng ?ó, n?u b?n ch?n, ch? c?n m?t vài c?p nh?t XML trong ?ng d?ng c?a b?n.B?y gi? chúng ta h?y ?i?m l?i nh?ng gì b?n ?? h?c v? các bi?u t??ng. B?n ?? hoàn thành m?t vi?c
n?ng nh?c là thêm m?t bi?u t??ng vào Menu ?i?u h??ng trong ?ng d?ng, vì th? s? kh?ng
v?t v? ?? c?p nh?t bi?u t??ng chính c?a nó. Bi?u t??ng này ??i di?n cho ?ng
d?ng c?a b?n, vì v?y bi?t cách ?? c?p nh?t và tùy ch?nh nó là r?t quan tr?ng.T?i s? c?p nh?t bi?u t??ng c?a Overheard Word, và b?n có th? cùng làm v?i ?ng d?ng c?a b?n. M?t
l?n n?a, h?y tìm nhanh trong các trang web có ch?a bi?u t??ng. Trong s? ?ó, t?i có
tìm th?y m?t gói bi?u t??ng thú v?, và m?t vài bi?u t??ng c? th? phù h?p v?i s?
thích c?a t?i:Hình 11. M?t bi?u t??ng m?i ti?n l?iH?y nh? l?i r?ng các bi?u t??ng hi?n th? khác nhau trên các thi?t b? khác nhau. T? khi t?i ch?c
r?ng ng??i dùng có ???c ?n t??ng t?t ban ??u v? Overheard Word, thì th?t t?t khi l?y
???c ?? ph?n gi?i c?a bi?u t??ng ?úng v?i thi?t b? ?ích. Th?t may m?n là t?i bi?t có
m?t trang web làm ???c ?i?u ?ó. Android Asset Studio (xem ) là m?t d? án Google Code có nhi?u
ti?n ích h?u ích cho các nhà phát tri?n Android. M?t bi?u t??ng mà t?i dùng nhi?u
nh?t là bi?u t??ng Launcher. T?t c? nh?ng gì t?i làm là nh?n vào ???ng d?n
và c?p nh?t bi?u t??ng c?a t?i. Ti?n ích t?o các
t?p bi?u t??ng v?i các kích th??c chính xác cho các c?u hình thi?t b? khác nhau, sau
?ó t?i t?i v? trong m?t t?p zip. T?p này có b?n th? m?c, m?i th? m?c ch?a m?t phiên
b?n kích th??c và ?? ph?n gi?i c?a t?p tin mà t?i ?? t?i lên.Hình 12. Các bi?u t??ng Launcher v?i kích th??c chính xác
cho AndroidTi?p theo, t?i sao chép các t?p tin ic_launcher.png t? m?i th? m?c vào
các th? m?c con t??ng ?ng trong th? m?c res c?a ?ng d?ng
c?a t?i. L?u ? r?ng trong quá trình này, t?i d??ng nh? thay th? t?p bi?u t??ng g?c
mà Eclipse ?? sinh ra.Cu?i cùng, t?i kh?i ??ng l?i ?ng d?ng và ??i cho ??n khi nó hi?n th? trong trình gi? l?p. T?i
nh?n vào nút Home và ki?m tra k?t qu?: m?t bi?u t??ng ti?n l?i có ?
ngh?a (ít nh?t là ??i v?i t?i) r?ng OverHeard Word là m?t ?ng d?ng thú v? nh?t trên
b?t k? thi?t b? nào!Hình 13. Gi? ??y nó ?? có bi?u t??ng!K?t lu?nTrong bài này, b?n có cái nhìn ? m?c cao h?n v? vòng ??i c?a m?t Activity và h?c ???c cách làm vi?c v?i nó ?? c?i thi?n m?c tài nguyên
c?a thi?t b?. B?n c?ng h?c ???c cách xác ??nh và th?c hi?n các c?u trúc ?i?u h??ng
s? d?ng các Menu và Action-bar, và làm th? nào ?? thay th? các nút b?m v?i các bi?u
t??ng.T?t c? nh?ng gì b?n h?c ???c trong bài vi?t này là t?i quan tr?ng ?? x?y d?ng m?t ?ng d?ng
Android. Phát tri?n ?ng d?ng di ??ng trên n?n Android là m?t l?a ch?n d? dàng, t?t
nhiên c?ng có r?t nhi?u ?i?u thú v?, t?i c?ng hy v?ng ??y là m?t n?n t?ng khác mà
b?n có th? dùng ?? phát tri?n Java. V?i hàng tr?m ngàn ?ng d?ng có s?n trong Google
Play và các kho ?ng d?ng khác, thì các ?ng d?ng ???c x?p h?ng ??u tiên th??ng có
ch?t l??ng, có thi?t k? c?n th?n và vi?t m? t?i ?u. C?ng còn nhi?u ?i?u ph?i h?c
Tài nguyênBài tr??c c?a lo?t bài này: H?y ??c bài
(Andrew Glover, developerWorks, 2013), sau ?ó
(2013) ?? làm hay l?y v? ?ng d?ng
Android c?a b?n."" (Frank Ableson, developerWorks, 2009): Bài vi?t
này gi?i thi?u các tính n?ng và t?ng quan v? ki?n trúc c?a ?ng d?ng
Android.Xem
?? tìm hi?u thêm v? .Bài vi?t "" (Scott
Main, Android Developers Blog, 2012): Ti?p nh?n quan ?i?m c?a các nhà phát tri?n
trong quy?t ??nh thay th? Menu tùy ch?n thành Action-bar trong các thi?t b? Android
m?i h?n."" (MoDevEast, 2012): Andrew Glover ch? trì cu?c th?o lu?n này v?i n?m
nhà phát tri?n ?ng d?ng di ??ng ??y tài n?ng. (Andrew Glover, developerWorks,
2004-current): Tìm hi?u v? Android, ?ám m?y, Twitter, Google, Hadoop, Ajax, và các
c?ng ngh? liên quan ??n Java.: H?y theo d?i developerWorks trên Twitter.Kho Github
ngu?n trong bài này.Tìm hi?u thêm v? : Giúp nh?n d?ng c?
ch? trong Android tr? nên ??n gi?n h?n.Dùng th?
c?a Android ???c dùng trong bài này.Các bi?u t??ng cho ?ng d?ng di ??ng c?a
b?n: Truy c?p trang
?? mua gi?y phép s? d?ng bi?u
t??ng cho ?ng d?ng di ??ng và web, hay tìm hàng ngàn bi?u t??ng mi?n phí v?i .: Android
SDK cung c?p các th? vi?n API và các c?ng c? phát tri?n mà b?n c?n ?? build, ki?m
th? và g? l?i ?ng d?ng Android.: C?p nh?t h? th?ng c?a
b?n b?ng các c?ng ngh? và c?ng c? m?i nh?t t?i ??y.Tham gia vào . K?t n?i v?i các thành viên developerWorks và khám phá các
blog, di?n ?àn, nhóm và th? vi?n wiki.
developerWorks: ??ng nh?p
Các tr??ng ???c ?ánh d?u hoa th? là b?t bu?c (*).
??nh danh IBM:*
M?t kh?u:*
Gi? tr?ng thái ??ng nh?p.
B?ng vi?c nh?n G?i, b?n ?? ??ng ? v?i các ?i?u kho?n s? d?ng developerWorks .
? l?n b?n ??ng nh?p ??u tiên vào trang developerWorks, m?t h? s? cá nh?n c?a b?n ???c t?o ra.
Th?ng tin trong b?n h? s? này (tên b?n, n??c/vùng l?nh th?, và tên c? quan) s? ???c tr?ng ra cho m?i ng??i và s? ?i cùng các n?i dung mà b?n ??ng, tr? khi b?n ch?n vi?c ?n tên c? quan c?a b?n.
B?n có th? c?p nh?t tài kho?n trên trang IBM b?t c? khi nào.
Th?ng tin g?i ?i ???c ??m b?o an toàn.
Ch?n tên hi?n th? c?a b?n
L?n ??u tiên b?n ??ng nh?p vào trang developerWorks, m?t b?n trích ngang ???c t?o ra cho b?n, b?n c?n ph?i ch?n m?t tên ?? hi?n th?.
Tên hi?n th? c?a b?n s? ?i kèm theo các n?i dung mà b?n ??ng t?i trên developerWorks.Tên hi?n th? c?n có t? 3 ??n 30 k? t?.
Tên xu?t hi?n c?a b?n ph?i là duy nh?t trên trang C?ng ??ng developerWorks và vì lí do an ninh nó kh?ng ph?i là ??a ch? email c?a b?n.
Các tr??ng ???c ?ánh d?u hoa th? là b?t bu?c (*).
Tên hi?n th?:*
(Tên hi?n th? c?n có t? 3 ??n 30 k? t?)
B?ng vi?c nh?n G?i, b?n ?? ??ng ? v?i các ?i?u kho?n s? d?ng developerWorks .
Th?ng tin g?i ?i ???c ??m b?o an toàn.
Khám phá các bài vi?t xoay quanh l?nh v?c d? li?u, Qu?n l? h? th?ng th?ng tin
Xem các bài vi?t v? HTML, CSS, JavaScript,...
Tìm hi?u v? ?i?n toán ?ám m?y
static.content.url=/developerworks/js/artrating/SITE_ID=70Zone=C?ng ngh? Java, Ngu?n m?ArticleID=946364ArticleTitle=Di ??ng cho m?i ng??i: Các ho?t ??ng (Activities) và bi?u t??ng (icons) trong vòng ??i ?ng d?ng Android c?a
b?npublish-date=

我要回帖

更多关于 quanm 的文章

 

随机推荐