intTypePromotion=1
ADSENSE

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

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

239
lượt xem
118
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Trong khung Package Explorer, ở phía dưới thư mục res, bạn sẽ thấy 1 file có tên là AndroidManifest.xml. Mỗi ứng dụng đều cần có AndroidManifest.xml để mô tả những thông tin quan trọng của nó cho hệ thống Android biết.

Chủ đề:
Lưu

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

  1. Hư ng d n l p trình cơ b n v i Android - Bài 2 http://diendan.vietandroid.com/cac-bai-hoc-co-kem-ma-nguon/409-huong- Reflink: dan-lap-trinh-co-ban-voi-android-bai-2-a.html 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 Hi all, Trong bài 1 mình ñã gi i thi u sơ lư c v các thành ph n cơ b n c a Android cũng như vi c s d ng XML ñ l p trình ng d ng Android. Trong bài này mình s gi i thi u thêm v Android Manifest và ñi sâu hơn v v n ñ làm vi c v i View. Android Manifest Trong khung Package Explorer, phía dư i thư m c res, b n s th y 1 file có tên là AndroidManifest.xml. M i ng d ng ñ u c n có AndroidManifest.xml ñ mô t nh ng thông tin quan tr ng c a nó cho h th ng Android bi t. Let's look closer: Mã: C th nh ng công vi c mà AndroidManifest.xml th c hi n: - ð t tên cho Java package c a ng d ng. - Mô t các thành ph n (component) c a ng d ng: activity, service, broadcast receiver ho c content provider. - Thông báo nh ng permission mà ng d ng c n có ñ truy nh p các protected API và tương tác v i các ng d ng khác. - Thông báo nh ng permission mà các ng d ng khác c n có ñ tương tác v i ng d ng hi n th i. - Thông báo level th p nh t c a Android API mà ng d ng c n ñ ch y. (Android 1.0 là level 1, 1.1 là level 2, 1.5 level 3, 1.6 level 4 và 2.0 là level 5). ... Hãy xem th file AndroidManifest.xml c a chương trình TooDo mình ñang xây d ng: www.Beenvn.com - T Sách Online
  2. Mã: Main Activity c a chương trình Too Do này là activity TooDo. Ngoài ra mình còn có 1 Activity khác có tên là WorkEnter ñ cho phép nh p vào th i gian và n i dung công vi c. 1 Broadcast Receiver có tên là AlarmReceiver ñ nh n alarm g i t i trong intent. Khi alarm ñư c nh n s có âm thanh và rung (vibration). T t c công vi c s ñư c vi t trong code, nhưng b t bu c b n ph i khai báo các thành ph n có trong ng d ng vào AndroidManifest n u mu n chương trình ho t ñ ng. Tương t , set permission ñ truy nh p camera, internet, ñ c contact... cũng ñ u ph i khai báo trong AM. T khóa screenOrientation cho phép thi t l p giao di n khi vào ng d ng theo chi u d c (portrait - m c ñ nh) hay ngang (landscape), theme cho phép s d ng style có s n c a android là full-screen (ko có thanh status bar n a). Intent filter là b l c dùng ñ gi i h n các intent ñư c s d ng trong activity hay receiver... Mã: B l c trên ch cho phép intent m internet v i ñư ng d n ñ nh nghĩa s n (http://www.google.com/m/products/scan) Ok, hi v ng m i ngư i ñã n m ñư c ch c năng cơ b n cũng như cách s d ng Android Manifest Working with View Trong bài 1 mình ñã gi i thi u qua cách s d ng Edit Text và Text View. Th c ch t các View còn l i cũng có cách s d ng tương t , b n s k t h p nhi u View khác nhau ñ cho ra giao di n mình mong mu n. ñây mình s ñ c p nhi u t i List View (theo ý ki n mình là View khó s www.Beenvn.com - T Sách Online
  3. d ng nh t). Yêu c u: Xây d ng m t chương trình cho phép nh p n i dung công vi c và th i gian r i list ra B1: V n b t ñ u b ng cách kh i t o m t Project m i: File -> New -> Android Project. Project name: Example 2 Build Target: Ch n Android 1.5 Application name: Example 2 Package name: at.exam Create Activity: Example => Kích nút Finish. B2: ði t i res/main.xml ñ xây d ng giao di n cho chương trình: Mã:
  4. android:layout_width="65px" android:layout_height="wrap_content" android:text="@string/minute_edit" android:typeface="normal" android:textSize="15px" android:textStyle="bold" android:padding="5px" /> Giao di n ta thi t k ñây có 1 Linear Layout làm thành ph n chính, các thành ph n con c a nó g m 1 Edit Text (dùng ñ nh p n i dung công vi c), 1 Linear Layout (l i g m các thành ph n con ñ nh p gi và phút th c hi n công vi c), 1 Button (ñ thêm n i dung công vi c vào List View) và 1 List View dùng ñ list các công vi c b n ñã nh p. T khóa lines ñư c dùng ñ c ñ nh s dòng và nên s d ng v i Edit Text thay vì dùng m i wrap_content vì n u sd wrap_content thì Edit Text s t giãn ra n u dòng nh p vào vư t gi i h n ñư ng bao (làm h ng giao di n b n thi t k ). T khóa gravity thông báo các thành ph n con s ñư c s p x p ntn thành ph n cha. ñây mình dùng "center" nghĩa là thành ph n con n m trung tâm. Hãy th thêm vào 1 Edit Text: Mã: android:gravity="center" B n s th y dòng ch nh p vào s b t ñ u t gi a c a Edit Text ch không b t ñ u t bên trái như trư c n a. T khóa padding dùng ñ cách 1 kho ng cách cho thành ph n. N u không có padding thì 2 thành ph n con thu c cùng 1 LinearLayout s ñư c x p sát nhau, nhưng n u 1 thành ph n con s d ng padding thì s t o ñư c kho ng cách v i thành ph n còn l i theo mong mu n. Ngoài ra còn có paddingLeft, paddingRight,paddingTop, paddingBottom. T khóa numeric dùng ñ gi i h n d ng ký t nh p vào. ñây mình mu n ch nh p vào ch s nên dùng "integer" T khóa maxLength dùng ñ gi i h n s ký t nh p vào. Do Edit Text này dùng ñ nh p gi nên www.Beenvn.com - T Sách Online
  5. maxLength="2". Ok, gi ñ n 1 chút ki n th c v các ñơn v c a dimenson: - px (pixel): ñi m ch m trên màn hình. - in (inch) - mm (milimet) - pt (point) = 1/72 m - dp (density - independent pixel): cái này hơi khó gi i thích. Nói chung dp ñư c s d ng cho nhi u ñ phân gi i, và v i ñ phân gi i 160 px/inch thì 1 dp = 1 px. - sp: g n gi ng dp, nên s d ng cho text size. Nói chung nên s d ng dp và sp ñ ñ nh nghĩa size cho các thành ph n, vì nó có t l c ñ nh v i ñ phân gi i c a màn hình. Còn n u b n ch tâm xây d ng cho 1 ñ phân gi i nh t ñ nh thì dùng px cho chính xác và ch c ch n. B3: T i values/strings.xml ch nh s a như sau: Mã: Example 2 Enter the work here Hour Minute Add work B4: T o m i colors.xml trong values v i n i dung: Mã: #cccccc OK, v y là ñã hoàn thi n ph n giao di n. Các b n có th cho ch y th ngay ñ ki m tra xem giao di n ñã như ý mu n chưa ch không c n ñ i hoàn thành c code (Run as -> Android Application). B5: Time to coding. T i thư m c src/Example.java và thay ñ i n i dung file như sau: Mã: package at.exam; import java.util.ArrayList; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; public class Example extends Activity { /** Called when the activity is first created. */ @Override www.Beenvn.com - T Sách Online
  6. public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //T o m ng ñ ch a String n i dung công vi c và gi final ArrayList arrayWork = new ArrayList(); //Adapter dùng ñ k t n i m ng v i List View final ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, arrayWork); //Các EditText ñ vào n i dung công vi c ñư c l y v t XML final EditText workEnter = (EditText) findViewById(R.id.work_enter); final EditText hourEdit = (EditText) findViewById(R.id.hour_edit); final EditText minuteEdit = (EditText) findViewById(R.id.minute_edit); //Button khi nh n s thêm công vi c vào ListView final Button button = (Button) findViewById(R.id.button); //ListView ch a danh sách công vi c final ListView list = (ListView) findViewById(R.id.list); //C n set Adapter cho list ñ bi t s l y n i dung t m ng arrayWork list.setAdapter(arrayAdapter); //ð nh nghĩa Listener x lý s ki n nh n vào button OnClickListener add = new OnClickListener() { @Override public void onClick(View v) { //N u 1 trong 3 Edit Text không có n i dung thì hi n lên thông báo if (workEnter.getText().toString().equals("") || hourEdit.getText().toString().equals("") || minuteEdit.getText().toString().equals("")) { AlertDialog.Builder builder = new AlertDialog.Builder(Example.this); builder.setTitle("Info missing"); builder.setMessage("Please enter all information of the work"); builder.setPositiveButton("Continue", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); builder.show(); } //L y n i dung công vi c và th i gian ra t Edit Text và ñưa vào list else { String str = workEnter.getText().toString() + " - " www.Beenvn.com - T Sách Online
  7. + hourEdit.getText().toString() + ":" + minuteEdit.getText().toString(); arrayWork.add(0,str); arrayAdapter.notifyDataSetChanged(); workEnter.setText(""); hourEdit.setText(""); minuteEdit.setText(""); } } }; //set Listener cho button button.setOnClickListener(add); } } Mình ñã chú thích ñ y ñ và ño n code cũng khá d hi u. Tuy nhiên c n lưu ý 2 v n ñ ñây. - Kh i t o ñ i tư ng ArrayAdapter: Các b n th y ñ i s truy n vào là (this, android.R.layout.simple_list_item_1, arrayWork). This là ñ i s c a l p Context ( ñây chính là activity Example). B n s g p Context trong r t nhi u kh i t o các l p và nên hi u Context có ý nghĩa gì. Mình xin ñưa ra gi i thích c a anh Giáp (thank mr giaplv): Quote: Context thu c android.content (android.content.Context). Là m t Interface (l p giao ti p) ch a h u h t thông tin v môi trư ng ng d ng c a android, có nghĩa là m i thao tác, tương tác v i h ñi u hành ñi u ph i qua l p này. Nó là m t l p abstract (tr u tư ng) cung c p cho nh ng l p khác các phương th c ñ tương tác v i h th ng Android. Nó cho phép truy c p t i các ngu n tài nguyên (resources) ñã ñư c ñ nh nghĩa và các l p khác. Ví d như nó có th kh i t o và ch y các activities, các broadcast và các intents,... Chúng ta coi như Contex là m t l p m c ng d ng (Application level- liên quan t i h th ng). Tóm l i context giúp chúng ta d dàng truy c p và tương tác t i các tài nguyên c a h th ng, các thông tin, các d ch v (services), các thông s c u hình, database, wallpaper, danh b , cu c g i, k t n i, ch ñ rung (vibrator),... ***s dĩ h u h t các l p có liên quan t i UI (layout, button, textview, imageview, listview,...) ñ u p i super t i Context vì b n thân nó ñ m nhi m vi c truy c p resource (R.id, R.layout,....). N u chúng ta không tham chi u t i Context class thì ñương nhiên không th dùng t i các resources mà chúng ta ñã t o ra. Ti p theo là android.R.layout.simple_list_item_1, ñ i này ñ nh nghĩa cách th hi n item ( ñây là String) trong List View. Các b n hãy ghi nh android.R.* là các tài nguyên (resource) có s n c a Android cho phép b n truy c p và s d ng. Sau này khi hư ng d n t o custom View cho List View mình s ñ c p l i v n ñ này. Cu i cùng arrayWork chính là m ng c n ñư c bind c a adapter. - AlertDialog là l p cho phép ñưa ra 1 h p tho i, thư ng dùng ñ ñưa ra thông tin ho c c nh báo ñơn gi n. Trong code mình t o 1 builder, t o tiêu ñ (title) cho nó, ñưa ra thông báo (message) và cu i cùng là t o 1 positive button (nhưng không ñ nh nghĩa x lý khi nh n nút này, vì v y n u b n nh n nút thì dialog s ch ñơn gi n th c hi n vi c ñóng l i). B6: Ti n hành ch y th chương trình. Run as -> Android Application. Enjoy yourself www.Beenvn.com - T Sách Online
  8. www.Beenvn.com - T Sách Online
  9. www.Beenvn.com - T Sách Online
  10. D ñ nh bài ti p theo s hư ng d n m i ngư i cách t o custom view trong list view và option menu. www.Beenvn.com - T Sách Online
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2