Tiểu luận trình bày tổng quan về Android; lập trình cơ bản Android; demo ứng dụng cấu trúc một ứng dụng Android, Activity Life-Cycle, Android Layout... Mời các bạn cùng tham khảo tiểu luận để nắm chi tiết hơn nội dung nghiên cứu.
Trang 3L I NÓI M Đ UỜ Ở Ầ
M ng đi n tho i di đ ng xu t hi n t i Vi t Nam t đ u năm 1990 và theo th i gian sạ ệ ạ ộ ấ ệ ạ ệ ừ ầ ờ ố
lượng các thuê bao cũng nh các nhà cung c p d ch v di đ ng t i Vi t Nam ngày càngư ấ ị ụ ộ ạ ệ tăng.Do nhu c u trao đ i thông tin ngày càng tăng và nhu c u s d ng s n ph m công ầ ổ ầ ử ụ ả ẩngh cao nhi u tính năng,c u hình cao,ch t lệ ề ấ ấ ượng t t,ki u dáng m u mã đ p,phong ố ể ẫ ẹphú nên nhà cung c p ph i luôn luôn c i thi n, nâng cao nh ng s n ph m c a mình.Doấ ả ả ệ ữ ả ẩ ủ
đó vi c xây d ng m i đ y ti m năng và h a h n nhi u s phát tri n vệ ự ớ ầ ề ứ ẹ ề ự ể ượ ậ ủt b c c a ngành khoa h c kĩ thu t.ọ ậ
Cùng v i s phát tri n c a th trớ ự ể ủ ị ường đi n tho i d đ ng là s phát tri n m nh m c aệ ạ ị ộ ự ể ạ ẽ ủ
xu hướng l p trình ph n m m ng d ng cho các thi t b di đ ng.Ph n m m, ng d ng ậ ầ ề ứ ụ ế ị ộ ầ ề ứ ụcho đi n tho i di đ ng hi n nay r t đa d ng và phong phú trên các h đi u hành di ệ ạ ộ ệ ấ ạ ệ ề
đ ng cũng phát tri n m nh m và đang thay đ i t ng ngày. Các h đi u hành J2ME, ộ ể ạ ẽ ổ ừ ệ ềAndroid,IOS,Hybrid,Web dased Mobile Application đã có r t phát tri n trên th trấ ể ị ường truy n th ng di d ngề ố ộ
Trong vài năm tr l i đây, h đi u hành Android ra đ i v i s k th a nh ng u vi t ở ạ ệ ề ờ ớ ự ế ừ ữ ư ệ
c a các h đi u hành ra đ i trủ ệ ề ờ ước và s k t h p c a nhi u công ngh tiên ti n nh t ự ế ợ ủ ề ệ ế ấ
hi n nay,đã đệ ược nhà phát tri n công ngh r t n i ti ng hi n nay là Google .Android ể ệ ấ ổ ế ệ
đã nhanh chóng là đ i th c nh tranh m nh m v i các h đi u hành trố ủ ạ ạ ẽ ớ ệ ề ước đó và đang
là h đi u hành di đ ng c a tệ ề ộ ủ ương lai và được nhi u ngề ườ ưi a chu ng nh t.ộ ấ
Trang 4CHƯƠNG 1:T NG QUAN V ANDROIDỔ Ề
I. Android và l ch s phát tri n:ị ử ể
Adroid là h đi u hành trên đi n tho i di đ ng (và hi n nay là c trên m t sệ ề ệ ạ ộ ệ ả ộ ố
đ u phát HD, HD Player, TV) phát tri n b i Google và d a trên n n t ng Linux. L pầ ể ở ự ề ả ậ trình android là m tộ l p trình ng d ng di đ ngậ ứ ụ ộ ph bi n.ổ ế Trước đây, Android đượ cphát tri n b i công ty liên h p Android ( sau đó để ở ợ ược Google mua l i vào năm 2005).ạ
Các nhà phát tri n vi t ng d ng cho Android d a trên ngôn ng Java. S ra m tể ế ứ ụ ự ữ ự ắ
c a Android vào ngày 5 tháng 11 năm 2007 g n v i s thành l p c a liên minh thi t bủ ắ ớ ự ậ ủ ế ị
c m tay mã ngu n m , bao g m 78 công ty ph n c ng, ph n m m và vi n thông nh mầ ồ ở ồ ầ ứ ầ ề ễ ằ
m c đính t o nên m t chu n m cho đi n tho i di đ ng trong tụ ạ ộ ẩ ở ệ ạ ộ ương lai
II.Các phiên b n HĐH Android:ả
Trang 5Android đã tr i qua m t s các c p nh p k t l n đ u phát hành.Nh ng c p nh p ả ộ ố ậ ậ ể ừ ầ ầ ữ ậ ậnày nhìn chung có nhi m v vá các l h ng và thêm các tính năng m i vào h đi u ệ ụ ỗ ổ ớ ệ ềhành
Android nh ng th h đ u tiên 1.0(9/2008) và 1.1(2/2009) ch a có tên g i chính th cữ ế ệ ầ ư ọ ứ .T th h ti p theo,m i b n nâng c p đ u đừ ế ệ ế ỗ ả ấ ề ược đ t v i nh ng mã tên riêng d a theo ặ ớ ữ ựtên các bánh ng t theo th t b ng ch cái t “CDEFGHI” Hi n nay phiên b n ọ ứ ự ả ữ ừ ệ ả
m i nh t là Android 10.ớ ấ
III. Các thành ph n c a Androidầ ủ :
3.1 Thành ph n c a 1 chầ ủ ương trinh Android:
Trang 6– Đượ ử ục s d ng đ truy n các thông báo nh m kh i t o m t Activity ho c Service đ ể ề ằ ở ạ ộ ặ ể
th c hi n công vi c b n mong mu nự ệ ệ ạ ố
– Ví d : khi m m t trang web, b n s g i m t intent đi đ t o m t Activity m i hi n ụ ở ộ ạ ẽ ử ộ ể ạ ộ ớ ể
th trang web đóị
Dưới đây là vòng ho t đ ng c a 1 ng d ng androidạ ộ ủ ứ ụ :
Trang 7Quá trình ho t đ ng c a Itentạ ộ ủ
3. Broadcast Receiver:
– Thành ph n thu nh n các intent t bên ngoài g i t iầ ậ ừ ử ớ
– Ví d : b n vi t m t chụ ạ ế ộ ương trình thay th cho ph n g i đi n tho i m c đ nh c a ế ầ ọ ệ ạ ặ ị ủAndroid, khi đó, b n c n 1 Broadcast Receiver đ nh n các intent là các cu c g i đ nạ ầ ể ậ ộ ọ ế
Trang 8Trước khi Android có th kh i đ ng m t thành ph n ng d ng, nó ph i ể ở ộ ộ ầ ứ ụ ả
bi t r ng thành ph n đó t n t i. Vì v y, ng d ng khai báo nh ng thành ph n c a ế ằ ầ ồ ạ ậ ứ ụ ữ ầ ủmình trong m t manifest file độ ược g n vào Android package, file.apk này cũng ắ
gi ch a mã c a ng d ng và các tài nguyên. ữ ứ ủ ứ ụ
Nó th c hi n m t s b sung đ khai báo các thành ph n c a ng d ng, nh là ự ệ ộ ố ổ ể ầ ủ ứ ụ ưnêu tên các th vi n ng d ng c n đ n, và xác đ nh các quy n h n c a ng d ng ư ệ ứ ụ ầ ế ị ề ạ ủ ứ ụ
mu n đố ượ ấc c p.
Ví d nh nó khai báo các Activity trong chụ ư ương trình c a chúng ta, khi ủ
kh i đ ng chở ộ ương trình thì Activity nào s đẽ ược th c hi n đ u tiên, các quy n ự ệ ầ ề
truy c p Internet, SDCard, hay các v n đ v g i nh n tin nh n, cu c g i ậ ấ ề ề ử ậ ắ ộ ọ
6. Giao di n ngệ ười dùng trong Android:
Trong m t ng d ng Android, giao di n ngộ ứ ụ ệ ười dùng được xây d ng b ng ự ằ
cách s d ng View và ViewGroup đ i tử ụ ố ượng. Có nhi u lo i quan đi m và các ề ạ ể
nhóm view, m i m t trong s đó là h u du c a l p View. View objects là các ỗ ộ ố ậ ệ ủ ớ
đ n v c b n c a bi u hi n giao di n ngơ ị ơ ả ủ ể ệ ệ ười dùng trên n n t ng Androidề ả
– Ví d : thông tin ngụ ười dùng l u trong contact, d li u l u tr trên SQL Lite, d li u ư ữ ệ ư ữ ữ ệ
l u tr trong các t n tinư ữ ậ
RelativeLayout,TableLayout,GrildLayout và khác
Widget là m t object View ph c v nh m t giao di n đ tộ ụ ụ ư ộ ệ ể ương tác v i ngớ ười
dùng.Android cung c p m t t p các widgets th c hi n đ y đ , gi ng nh các ấ ộ ậ ự ệ ầ ủ ố ư
button,checkbox, và text_entry,do đó b n có th nhanh chóng xây d ng giao di n ngạ ể ự ệ ườ i
Trang 9dùng c a b n. M t s widgets đủ ạ ộ ố ược cung c p b i Android ph c t p h n, gi ng nh ấ ở ứ ạ ơ ố ư
m t date picker,clock,và zoom control.Nh ng nó không gi i h n trong các lo i widgets ộ ư ớ ạ ạ
được cung c p b i các n n t ng Android.ấ ở ề ả
CHƯƠNG II: L P TRÌNH C B N ANDROID.Ậ Ơ Ả
I.C u trúc c a m t ng d ng Android:ấ ủ ộ ứ ụ
Java Source: là t p tin MainActivity k th a class Activity.ậ ế ừ Activity là m t class, ộ
mà l p l i t o ra m t window m c đ nh trên màn hình. đây chúng ta có th đ t ớ ạ ạ ộ ặ ị Ở ể ặ
thêm các thành ph n (components) khác:ầ Button, EditText, TextView, Spinner v.v.
Nó gi ng nhố ư Frame c a Java AWT.Activity có các phủ ương th c t o ra vòng ứ ạ
đ i :ờ onCreate, onStop, OnResume v.v
Trang 10Generated R.java: T p tinậ R.java đượ ạc t o ra m t cách t đ ng, nó ch a cá ID ộ ự ộ ứ
c a t t c các tài nguyên trong th m c res. B t c khi nào b n t o m t componetủ ấ ả ư ụ ấ ứ ạ ạ ộ trong activity_main, thì m t ID độ ượ ạc t o ra trong t p tin R.java. ID này s đậ ẽ ượ ử c s
d ng trong source Java sau này.ụ
Trang 11Contains apk file: t p tin đ c t o t đ ng nh m giúp ng d ng ch y trên thi t ậ ượ ạ ự ộ ằ ứ ụ ạ ế
b ịdi đ ng.ộ
Th m c Resources: ch a t p tin các tài nguyên activity_main, string,styles, Hay ư ụ ứ ậ
c th ch a các giao th c c a ng d ng nh giao di n, hi n th d li u.ụ ể ứ ứ ủ ứ ụ ư ệ ể ị ữ ệ
o drawable: Đây chính là th m c ch a các file hình nh, config xml… trongư ụ ứ ả
d án android.ự
o layout: Đây chính là th m c l u các file xml v giao di n c a các màn ư ụ ư ề ệ ủhình ng d ng c a b n trên ph n s 1 b n có các package l u các ứ ụ ủ ạ Ở ầ ố ạ ưclass, các class này s k t n i v i các file xml trong th m c layout nào ẽ ế ố ớ ư ụ
đ t o nên m t màn hình có giao di n cho ngể ạ ộ ệ ười dùng thao tác
o values: đ l p trình viên đ nh nghĩa ra các thu c tính, giao di n, các ể ậ ị ộ ệ
config… đ s d ng cho đ ng nh t và đ ng th i s giúp ngể ử ụ ồ ấ ồ ờ ẽ ười dùng t i ố
u code khi ch nh s a sau này.T p tin values g m:
color.xml: đây là file đ nh nghĩa các mã màu trong d án android ị ự
c a ban, khi s d ng màu nào b n ch c n g i tên tên mã màu đã ủ ử ụ ạ ỉ ầ ọ
đ nh nghĩa trong đây ra là xong.ị
dimens.xml: đây là file mà b n s đ nh nghĩa ra các kích th c nhạ ẽ ị ướ ư
c ch , chi u cao, chi u r ng các view.ỡ ữ ề ề ộ
Trang 12 strings.xml: đây là file đ nh nghĩa các đo n văn b n trong ng ị ạ ả ứ
d ng Android c a b n ví d nh b n có 1 đo n văn b n mà s ụ ủ ạ ụ ư ạ ạ ả ử
d ng đi s d ng l i trong các màn hình khác nhau, khi b n set c ngụ ử ụ ạ ạ ứ nhi u n i thì khi c n ch nh s a thì ph i tìm h t t t c và s a
l i.Bây gi b n đ nh nghĩa đo n văn b n đó trong đây và khi dùng ạ ờ ạ ị ạ ảthì g i ra s d ng và sau này ch nh s a b n ch c n s a trong đây ọ ử ụ ỉ ữ ạ ỉ ầ ử
là xong, nó s apply t t c m i n i.ẽ ấ ả ọ ơ
styles.xml: đây chính là n i đ nh nghĩa các giao di n c a các file ơ ị ệ ủlayout trong th m c layout mình đã nói phía trên.Ki u nh th nàyư ụ ể ư ế nhé, b n mu n ch nh m t nút Button chi u cao 10dp, chi u r ng ạ ố ỉ ộ ề ề ộ10dp, màu xanh… và b n l i s d ng ki u thi t k này 5 màn ạ ạ ử ụ ể ế ế ởhình khác nhau.B n không th m i màn hình l i đ nh nghĩa l i nhạ ể ỗ ạ ị ạ ư
th s làm duplicate code (l p l i) và s không t i u tí nào ế ẽ ặ ạ ẽ ố ư
c Thay vào đó b n ch c n đ nh nghĩa m t file giao di n nh trên ả ạ ỉ ầ ị ộ ệ ư
và m i màn hình b n ch c n g i là xong.ở ỗ ạ ỉ ầ ọMainfest: là t p tin AndroidManifest.xml ch a thông tin v package c a ng ậ ứ ề ủ ứ
d ng, bao g m các thành ph n c a ng d ng nhụ ồ ầ ủ ứ ụ ư activities, services, broadcast receivers, content providers v.v. Có ch c năng:ứ
o C p quy n m t s ph n trong ng d ng.ấ ề ộ ố ầ ứ ụ
o Khai báo các API mà ng d ng s s d ng.ứ ụ ẽ ử ụ
o Khai báo các thông tin v ng d ng.ề ứ ụ
II.Activity LifeCycle:
Android Project khi được th c hi n thành công s đự ệ ẽ ược đóng gói thành t p tin ậ
*.apk, t p tin này đậ ược g i là Application. M t Application có th có m t ho c nhi u ọ ộ ể ộ ặ ềActivity, m i Activity là m t vòng đ i riêng và đ c l p v i các Activity khác. ỗ ộ ờ ộ ậ ớ
Khi t o m i m t Activity nào đó c n ph i khai báo, và trong nhi u Activity s ạ ớ ộ ầ ả ề ẽ
có m t Activity ch y chính (Activity xu t hi n đ u tiên). Các ph n khai báo này độ ạ ấ ệ ầ ầ ược khai báo trong AndroidMainifest.xml
Trang 13Quá trình x lý các Activity ử
M i Activity đỗ ược kích ho t đạ ược h th ng đ y vào BlackStack. Sau khi kích ệ ố ẩ
ho t l n lạ ầ ượ ọ ết g i đ n các callback onCreate(), onStart(), onResume() s đẽ ược h th ng ệ ố
g i đ n.ọ ế
Sau khi g i đ n các callback trên, thì Activity m i chính th c đọ ế ớ ứ ược xem là đang
ch y (Activity running). S đ vòng đ i m t Activity:ạ ơ ồ ờ ộ
Trang 14Lúc này, n u có b t k Activity nào khác chi m quy n hi n th , thì Activity hi n ế ấ ỳ ế ề ể ị ệ
t i s r i vào tr ng thái onPause(). N u s hi n th c a Activity khác làm cho Activity ạ ẽ ơ ạ ế ự ể ị ủ
mà chúng ta đang nói đ n không còn nhìn th y n a thì onStop() s đế ấ ữ ẽ ược g i ngay sau đóọ
N u Acvitity đã vào onPause() r i, t c là đang b Activity khác đè lên, mà ngế ồ ứ ị ười dùng sau đó quay v l i Activity cũ, thì onResume() đề ạ ược g i. Còn n u Activity đã vào ọ ế
onStop() r i, mà ngồ ười dùng quay v l i Activity cũ thì onRestart() đề ạ ược g i. Trong c ọ ảhai trường h p Activity r i vào onPause() ho c onStop(), nó s r t d b h th ng thu ợ ơ ặ ẽ ấ ễ ị ệ ố
h i (t c là b h y) đ gi i phóng tài ồ ứ ị ủ ể ảnguyên, khi này n u quay l i ế ạ
Activity cũ, onCreate() s đẽ ược g i ọ
ch không ph i onResume() hay ứ ảonRestart(). Và cu i cùng, n u m t ố ế ộActivity b h y m t cách có ch ị ủ ộ ủđích, ch ng h n nh ngẳ ạ ư ười dùng
nh n nút Back System Bar, hay ấ ởhàm finish() được g i,… thì ọonDestroy() s đẽ ược kích ho t và ạActivity k t thúc vòng đ i c a nó.ế ờ ủ
Trang 15x y ra khi mà Activity c a b n v n đang ch y, ngả ủ ạ ẫ ạ ười dùng v n nhìn th y, nh ng ẫ ấ ư
Activity khi này l i b che m t ph n b i m t thành ph n nào đó. Ch ng h n nh khi b ạ ị ộ ầ ở ộ ầ ẳ ạ ư ị
m t dialog đè lên. Cái s che Activity này không ph i hoàn toàn. Chính vì v y mà ộ ự ả ậ
Activity đó tuy được người dùng nhìn th y nh ng không tấ ư ương tác được
*Stop: Tr ng thái này khá gi ng v i tr ng thái t m d ng trên kia. Nh ng khi này ạ ố ớ ạ ạ ừ ư
Activity b che khu t hoàn toàn b i m t thành ph n giao di n nào đó, ho c b i m t ng ị ấ ở ộ ầ ệ ặ ở ộ ứ
d ng khác. Và t t nhiên lúc này ngụ ấ ười dùng không th nhìn th y Activity c a b n để ấ ủ ạ ược
n a.ữ
Hành đ ng mà khi ngộ ười dùng nh n nút Home System Bar đ đ a ng d ng c a b n ấ ở ể ư ứ ụ ủ ạ
v background, cũng khi n Activity đang hi n th trong ng d ng r i vào tr ng thái ề ế ể ị ứ ụ ơ ạ
d ng này.ừ
Dead: N u Activity đế ượ ấc l y ra kh i BackStack, chúng s b h y và r i vào tr ng thái ỏ ẽ ị ủ ơ ạnày. Trường h p này x y ra khi user nh n nút Back System Bar đ thoát m t Activity.ợ ả ấ ở ể ộ
Ho c l i g i hàm finish() t m t Activity đ “kill chính nó”. Cũng có khi ng d ng ặ ờ ọ ừ ộ ể ứ ụ ở
tr ng thái background quá lâu, h th ng có th s thu h i tài nguyên b ng cách d ng ạ ệ ố ể ẽ ồ ằ ừ
h n các Activity trong ng d ng, làm cho t t c các Activity đ u vào tr ng thái này.ẳ ứ ụ ấ ả ề ạKhi vào tr ng thái dead, Activity s k t thúc vòng đ i c a nó.ạ ẽ ế ờ ủ
Nh ng ý trên giúp b n n m đữ ạ ắ ượ ổc t ng quan các tr ng thái mà m t Activity có th tr i ạ ộ ể ảqua
III.Android Layout:
Đ trình bày nên các Activity t o thành các chể ạ ương trình hoàn ch nh thì Android đỉ ược phát ti n m t s giao di n Layout tể ộ ố ệ ương t nh GUI trong Java.ự ư
Android h tr 6 lo i Layout g m: ỗ ợ ạ ồ
RelativeLayout, LinearLayout,GridLayout, TableLayout, FrameLayout, ConstraintLayout1.RelativeLayout: là lo i Layout mà trong Layout v trí c a m i view con s đ c xác ạ ị ủ ỗ ẽ ượ
đ nh so v i view khác ho c so v i thành ph n cha c a chúng thông qua ID. B n có th ị ớ ặ ớ ầ ủ ạ ể
s p x p 1 view bên trái, bên ph i view khác ho c gi a màn hình. ắ ế ở ả ặ ở ữ
xml version="1.0" encoding="utf8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/resauto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.tuandc.project1.project1.MainActivity">
Trang 16android:background="@color/colorAccent" />
android:textAlignment="center"
android:layout_toRightOf="@+id/hop1" android:background="@color/colorPrimary" android:layout_toEndOf="@+id/hop1" />
android:id="@+id/hop3"
android:background="#8e0917"
android:textSize="10pt"
android:textAlignment="center"
android:layout_below="@+id/hop1"
/>
Trang 17android:textAlignment="center"
android:background="#edcb25"
android:layout_below="@+id/hop2"
android:layout_toRightOf="@+id/hop3"
android:layout_toEndOf="@+id/hop3" />
</RelativeLayout>
Ngoài cách bi u th trên ta có th code giao di n ể ị ể ệRelativeLayout b ng Java. T t nhiên nó s khác so v i ằ ấ ẽ ớtrình XML c a Android.ủ
Trang 182.LinearLayout: là lo i layout s s p x p các view theo chi u d c ho c ngang theo ạ ẽ ắ ế ề ọ ặ
th t c a các view.ứ ự ủ
Layout theo chi u d c:ề ọ
<?xml version="1.0" encoding="utf8"?>
<LinearLayout
Trang 20Layout theo chi u ngang:ề
<?xml version="1.0" encoding="utf8"?>
<LinearLayout
xmlns:android1="http://schemas.android.com/apk/res/android" android1:layout_width="match_parent"