intTypePromotion=3

Hướng dẫn lập trình cơ bản với Android - Bài 1

Chia sẻ: Ha Ngoc Chung | Ngày: | Loại File: PDF | Số trang:12

2
274
lượt xem
134
download

Hướng dẫn lập trình cơ bản với Android - Bài 1

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo và hướng dẫn lập trình cơ bản với Android dành cho các bạn sinh viên công nghệ thông tin và chi cần có kiến thức kiến thức java căn bản là đủ. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Hướng dẫn lập trình cơ bản với Android - Bài 1

  1. Hư ng d n l p trình cơ b n v i Android List tutorial Bài 0 - Cài ñ t và s d ng Android v i Eclipse Bài 1 - Cơ b n Android Bài 2 - Xây d ng giao di n ñơn gi n Bài 3 - ViewGroup và Custom Adapter Bài 4 - Intent và Broadcast Receiver Bài 5 - Service Bài 6 - SQLite Bài 7 - Content Provider Yêu c u ki n th c cho l p trình Android: ð l p trình android, mình nghĩ m i ngư i ch c n ki n th c java căn b n là hoàn toàn ok. Căn b n ñây có nghĩa là hi u ñư c th nào là class, package, bi t ý nghĩa c a các t khóa như public, private, protected,... thành th o các l nh cơ b n như if, for(), switch(), while(), ... bi t sd các l nh như Integer.parseInt() hay String.valueOf()... Nên có thêm ki n th c v gói java.util vì ñây là gói h tr nhi u l p r t m nh ñư c s d ng trên m i n n, ngoài ra các gói như java.io, java.net... cũng ñư c recommended Các ki n th c v các gói l p trình cho desktop như java.awt, java.swing hoàn toàn không c n thi t (b n thân mình cũng chưa sd cái này bao gi , nh y vào h c java là h c J2ME luôn), hay các gói c a J2ME cũng v y L p trình Android tuy cũng là l p trình di ñ ng, nhưng các ñi n tho i s d ng hñh Android có c u hình r t m nh (Nexus One có VXL lên t i 1Ghz), vì v y 2 n n t ng Android và J2ME cũng r t khác nhau. Android có nh ng gói riêng h tr l p trình cho nó và không yêu c u kh t khe v vi c t i ưu code như J2ME. Th t ñáng ti c vì J2ME mình h c ko ng d ng ñư c m y vào l p trình Android (tuy nhiên 1 s k thu t cơ b n cho l p trình game 2D như Sprite, double buffering, Tile... thì v n ko h phí ph m chút nào ) Cài ñ t Android ñ l p trình: ð l p trình Android thì m i b SDK c a Google là không ñ , b n còn c n tích h p nó vào m t IDE như Eclipse. Anh Giáp ñã có 2 bài hư ng d n r t chi ti t v cài ñ t Android trong Eclipse cũng như Netbeans, nhưng theo mình m i ngư i nên s d ng Eclipse hơn vì nó có nhi u tính năng h tr l p trình Google, còn Netbeans thì plugin cho Android v n chưa hoàn thi n Eclipse Netbeans Ti n th mình nói luôn, mình h c Android theo 2 cu n Professional Android Application Development và Unlocking Android. C 2 cu n ñ u dành cho beginner nhưng cu n ñ u code nhi u, gi i thích ít, cu n th 2 gi i thích rõ ràng hơn. N u có ai có ý ñ nh tham kh o thì nên ñ c cu n UA trư c ñ hi u rõ hơn Android, s d ng cu n PAAD trong vi c tham kh o các ño n code cho l p trình. Understanding Android Application: Vi c hi u ñư c các thành ph n (component) t o nên m t ng d ng Android là r t c n thi t cho vi c l p trình. Các thành ph n này ñư c chia làm 6 lo i bao g m: 1.Activity: hi u m t cách ñơn gi n thì Activity là n n c a 1 ng d ng. Khi kh i ñ ng 1 ng d ng Android nào ñó thì bao gi cũng có 1 main Activity ñư c g i, hi n th màn hình giao di n c a ng d ng cho phép ngư i dùng tương tác. 2.Service: thành ph n ch y n trong Android. Service s d ng ñ update d li u, ñưa ra các c nh báo (Notification) và không bao gi hi n th cho ngư i dùng th y. 3.Content Provider: kho d li u chia s . Content Provider ñư c s d ng ñ qu n lý và chia s d li u gi a các ng d ng. www.Beenvn.com - T Sách Online
  2. 4.Intent: n n t ng ñ truy n t i các thông báo. Intent ñư c s d ng ñ g i các thông báo ñi nh m kh i t o 1 Activity hay Service ñ th c hi n công vi c b n mong mu n. VD: khi m 1 trang web, b n g i 1 intent ñi ñ t o 1 activity m i hi n th trang web ñó. 5.Broadcast Receiver: thành ph n thu nh n các Intent bên ngoài g i t i. VD: b n vi t 1 chương trình thay th cho ph n g i ñi n m c ñ nh c a Android, khi ñó b n c n 1 BR ñ nh n bi t các Intent là các cu c g i t i. 6.Notification: ñưa ra các c nh báo mà không làm cho các Activity ph i ng ng ho t ñ ng. Activity, Service, Broadcast Receiver và Content Provider m i là nh ng thành ph n chính c u thành nên ng d ng Android, b t bu c ph i khai báo trong AndroidManifest (tham kh o bài 2 có gi i thi u ñ y ñ v file này). Understanding Android Application Life Cycle: Android có cơ ch qu n lý các process theo ch ñ ưu tiên. Các process có priority th p s b Android gi i phóng mà không h c nh báo nh m ñ m b o tài nguyên. 1.Foreground process: là process c a ng d ng hi n th i ñang ñư c ngư i dùng tương tác. 2.Visible process: là process c a ng d ng mà activity ñang hi n th ñ i v i ngư i dùng (onPaused() c a activity ñư c g i). 3.Service process: là Service ñang running. 4.Background process: là process c a ng d ng mà các activity c a nó ko hi n th v i ngư i dùng (onStoped() c a activity ñư c g i). 5.Empty process: process không có b t c 1 thành ph n nào active. Theo ch ñ ưu tiên thì khi c n tài nguyên, Android s t ñ ng kill process, trư c tiên là các empty process. Android Activity Life Cycle: Như mình ñã gi i thi u trên , Actitvity là thành ph n quan tr ng nh t và ñóng vai trò chính trong xây d ng ng d ng Android. H ñi u hành Android qu n lý Activity theo d ng stack: khi m t Activity m i ñư c kh i t o, nó s ñư c x p lên ñ u c a stack và tr thành running activity, các Activity trư c ñó s b t m d ng và ch ho t ñ ng tr l i khi Activity m i ñư c gi i phóng. Activity bao g m 4 state: - active (running): Activity ñang hi n th trên màn hình (foreground). - paused: Activity v n hi n th (visible) nhưng không th tương tác (lost focus). VD: m t activity m i xu t hi n hi n th giao di n ñè lên trên activity cũ, nhưng giao di n này nh hơn giao di n c a activity cũ, do ñó ta v n th y ñư c 1 ph n giao di n c a activity cũ nhưng l i không th tương tác v i nó. - stop: Activity b thay th hoàn toàn b i Activity m i s ti n ñ n tr ng thái stop - killed: Khi h th ng b thi u b nh , nó s gi i phóng các ti n trình theo nguyên t c ưu tiên. Các Activity tr ng thái stop ho c paused cũng có th b gi i phóng và khi nó ñư c hi n th l i thì các Activity này ph i kh i ñ ng l i hoàn toàn và ph c h i l i tr ng thái trư c ñó. Bi u ñ miêu t Activity state www.Beenvn.com - T Sách Online
  3. Vòng ñ i c a Activity: - Entire lifetime: T phương th c onCreate( ) cho t i onDestroy( ) - Visible liftetime: T phương th c onStart( ) cho t i onStop( ) - Foreground lifetime: T phương th c onResume( ) cho t i onPause( ) Khi xây d ng Actitvity cho ng d ng c n ph i vi t l i phương th c onCreate( ) ñ th c hi n quá trình kh i t o. Các phương th c khác có c n vi t l i hay không tùy vào yêu c u l p trình. www.Beenvn.com - T Sách Online
  4. XML trong Android: Không gi ng như l p trình java thông thư ng, l p trình android ngoài các l p ñư c vi t trong *.java còn s d ng XML ñ thi t k giao di n cho ng d ng. T t nhiên b n hoàn toàn có th thi t k 1 giao di n như ý mu n mà không c n t i b t c 1 dòng XML nào, nhưng sd XML s ñơn gi n công vi c ñi r t nhi u. ð ng th i sd XML s giúp vi c ch nh s a ng d ng sau này tr nên d dàng. V nguyên t c, khi l p trình ng d ng ta thi t k giao di n b ng XML và cài ñ t các x lý khi tương tác v i giao di n trong code. 1 s thành ph n cơ b n trong Android: 1.Các layout: Layout ñư c dùng ñ qu n lý các thành ph n giao di n khác theo 1 tr t t nh t ñ nh. - FrameLayout: Layout ñơn gi n nh t, thêm các thành ph n con vào góc trên bên trái c a màn hình. - LinearLayout: thêm các thành ph n con theo 1 chi u nh t ñ nh (ngang ho c d c). ðây là layout ñư c s d ng nhi u nh t. - RelativeLayout: thêm các thành ph n con d a trên m i quan h v i các thành ph n khác ho c v i biên c a layout. - TableLayout: thêm các thành ph n con d a trên 1 lư i các ô ngang và d c. - AbsoluteLayout: thêm các thành ph n con d a theo t a ñ x, y. Layout ñư c s d ng nh m m c ñích thi t k giao di n cho nhi u ñ phân gi i. Thư ng khi l p trình nên k t h p nhi u layout v i nhau ñ t o ra giao di n b n mong mu n. 2.XML unit: ð hi u ñư c các thành ph n cơ b n c a XML cũng như vi c s d ng XML k t h p v i code, ta s ñi xây d ng th m t chương trình ñơn gi n. Yêu c u: Xây d ng 1 ng d ng cho phép gõ 1 n i dung vào r i hi n th ra n i dung ñó bên dư i. B1: Kh i t o 1 project ( ñây s d ng Eclipse ñ minh h a). Vào th File -> New -> Android Project. N u b n m i l p trình Android l n ñ u thì có l dòng Android Project s không hi n ra, khi ñó xu ng phía cu i ch n Other r i vào Android -> Android Project. B2: ði n thông tin cho project www.Beenvn.com - T Sách Online
  5. Project name: Example 1 Build Target: Ch n Android 1.5 (m i nh t là 2.1 nhưng hi n t i b n chưa c n quan tâm ) Application name: Example 1 Package name: at.exam Create Activity: Example => Kích nút Finish. B3: Bên khung Package Explore bên trái ñi t i thư m c res, b n s th y có 3 thư m c con: www.Beenvn.com - T Sách Online
  6. - drawable: thư m c ch a các hình nh ñ làm icon ho c tài nguyên cho giao di n... - layout: ch a các file xml ñ thi t k giao di n. - values: ch a các giá tr s d ng trong ng d ng ñư c b n ñ nh nghĩa, như các dòng ký t (string), các màu (color), các themes... B4:Vào thư m c layout, ch n file main.xml và gõ ño n code sau vào thay cho toàn b n i dung có s n (Eclipse h tr kéo th cho xml nhưng theo mình không nên s d ng): Mã:
  7. > Trong ño n XML này chúng ta khai báo m t Linear Layout v i 2 thành ph n con c a nó là 1 Edit Text (dùng ñ gõ xâu ký t ) v i 1 Text View (hi n th xâu ký t ). Linear Layout ñư c khai báo v i t khóa orientation nh m ch ra chi u s p x p c a 2 thành ph n con là chi u d c. Còn v i layout_width, layout_height các b n có th cho giá tr b ng "fill_parent" ho c "wrap_content" ñ thông báo thành ph n này s có chi u r ng (dài) ph ñ y thành ph n cha ho c ch v a bao ñ n i dung. Trong Edit Text và Text View các b n có th th y có t khóa id, t khóa này cho phép khai báo id c a các thành ph n ñ l y v trong code (s ñ c p sau). Ngoài ra t khóa hint trong Edit Text cho phép hi n ra ph n n i dung m khi Edit Text v n chưa có ký t nào. "@string/edit_hint" thông báo l y trong file strings.xml xâu có tên là edit_hint. Còn textColor c a Text View thì thông báo ño n ký t s ñư c hi n th v i màu l y trong file colors.xml, textSize ch ra c ch b ng 28 pixel và typeface ch ra ki u ch là monospace B5:V n trong thư m c res, vào values và ch n file strings.xml. B sung thêm dòng ñ nh nghĩa cho edit_hint như sau: Mã: Hello World, Example! Example 1 Enter the work here B6:Trong thư m c values, t o file colors.xml (chu t ph i vào thư m c, ch n New -> Android XML File, và lưu ý ch s, không ph i là color.xml). Gõ n i dung cho file như sau: Mã: #ff3300 OK, v y là b n ñã t o m t màu m i cho dòng ch s ñư c hi n th trong Text View (ff3300 là mã hexa c a màu ñ ). Th c ch t b n hoàn toàn có th gõ th ng Mã: android:textColor="#ff3300" trong file main.xml mà không c n t o m i file colors.xml, nhưng m c ñích c a XML trong Android chính là ñ h tr nâng c p ch nh s a d dàng. N u sau này b n mu n s a màu c a dòng text thì ch c n vào colors.xml thay ñ i thay vì mò m m trong main.xml (có th r t dài n u giao di n www.Beenvn.com - T Sách Online
  8. ph c t p). Các thành ph n trên m i ch là các ph n cơ b n c a XML. Ngoài ra các b n có th khai báo thêm v Animation, Style và Theme (ph c t p hơn nhi u nên mình không gi i thi u trong ph n cơ b n này). __________________ B7: V y là chúng ta ñã hoàn thi n ph n giao di n v i XML, gi ñ n vi t code ñ x lý các s ki n cho các thành ph n: => vào thư m c src (source code c a project) => at.exam => Example.java, gõ n i dung code sau vào: Mã: package at.exam; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnKeyListener; import android.widget.EditText; import android.widget.TextView; public class Example extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Thi t l p giao di n l y t file main.xml setContentView(R.layout.main); //L y v các thành ph n trong main.xml thông qua id final EditText edit = (EditText) findViewById(R.id.edit_text); final TextView text = (TextView) findViewById(R.id.text_view); //Thi t l p x lý cho s ki n nh n nút gi a c a ñi n tho i edit.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { text.setText(edit.getText().toString()); edit.setText(""); return true; } else { return false; } } }); } } www.Beenvn.com - T Sách Online
  9. D o qua m t chút ki n th c cơ b n: Trong Android, các l p s d ng ñ t o giao di n (Edit Text, Text View...) ñ u là l p con c a l p View. M t s l p thư ng xuyên ñư c s d ng ñ t o giao di n: - TextView - EditText - ListView - Spinner - CheckBox - Button - RadioButton Ngoài ra b n còn có th t o 1 View riêng c a mình b ng cách k th a View có s n. Các Listener ñư c s d ng ñ b t 1 s ki n nào ñó. ñây mình s d ng OnKeyListener dùng ñ b t s ki n khi nh n 1 phím c a ñi n tho i. Ngoài ra thư ng s d ng OnClickListener ñ b t s ki n ch m vào 1 View ñang hi n th trên màn hình. M i View ñ u ph i set Listener riêng ñ x lý cho s ki n tương tác v i nó, và m i lo i View cũng l i có nh ng Listener dành riêng cho nó (VD: CheckBox có OnCheckChangedListener) ñây mình s d ng hàm d ng inner ñ ñ nh nghĩa x lý cho OnKeyListener nên có th m i ngư i không quen l m, nhưng nó cũng n m trong ph n cơ b n c a Java ñ y nhé. ð ngh lưu ý thêm ph n R.id.edit_text. ð l y ho c truy nh p các thành ph n ta ñã ñ nh nghĩa trong XML ta ph i s d ng R.* như R.layout.main, R.id.edit_text. L nh findViewById s tr v 1 View có Id thi t l p trong ph n XML. Do View là l p cha c a EditText v i TextView nên ñây ta ph i ép ki u. Ngoài ra các string hay color cũng có th l y v b ng l nh getResource() . Vd: getResource().getColor(R.color.text_color) B8: Ch y chương trình. Ch n Run => Android Application và ch cho emulator kh i ñ ng nhé. Ai có 1 Android th t có th k t n i qua USB và th nghi m luôn. T ch nh s a trong code và trong XML ñ hi u thêm v l p trình Android. VD: Mã: edit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub } }); ho c trong XML thêm vào ph n Text View Mã: android:textSize="50px" ñ xem chương trình thay ñ i như th nào nhé ^_^ www.Beenvn.com - T Sách Online
  10. www.Beenvn.com - T Sách Online
  11. www.Beenvn.com - T Sách Online
  12. K t thúc bài 1 www.Beenvn.com - T Sách Online

CÓ THỂ BẠN MUỐN DOWNLOAD

YOMEDIA
Đồng bộ tài khoản