Android Session 04: Tổng quan một chương trình Android
09/08/2012
FacebookTwitterDeliciousStumbleuponDiggMyspaceLinkedInZingmegovnlinkhay


Bạn nhìn sang cửa sổ bên trái, nơi chứa các package, click vào các dấu cộng để xem bên trong các thư mục. Đầu tiên là thư mục src, nơi chứa file code của project.Cấu trúc của 1 file Android code là 1 file  .java, chỉ khác về các package, class và các method trong class thôi. Vì thế dễ hiểu vì sao các bạn nhìn thấy file Android code có đuôi là .java, và khi click vào đó thì các form, từ khóa giống như trong javava. Nếu bạn nào đã học java thì thấy rất quen thuộc, còn nếu ai chưa học java thì cũng không sao, ta sẽ đi từ đầu, nhìn thoáng qua cái phần code đó là được rồi. Tiếp đến là file R.java trong thư mục gen. Chỉ cần xem code bên trong và để ý đến dòng comment của Android : “Day la file tu dong tao ra. Cam chinh sua duoi moi hinh thuc “. Tiếp đến là thư mục android 1.6 (version Android 1.6 cho dễ tương thích mặc dù có 2.x rồi) fonder này chứa các package hỗ trợ cho việc lập trình của bạn. Bỏ qua thư mục này Cuối cùng là thư mục res. Thư mục này chứa các file tài nguyên, những file mà khi acitvity chạy sẽ gọi đến. Để ý đến thư mục con layout, trong thư mục này có file main.xml. File này gần giống như các file main của ngôn ngữ khác. Để xác nhận những điều trên, chúng ta cùng từng bước trở lại bài 3 để có cái nhìn tổng thể hơn về một ứng dụng Android.

 

Activity: là lớp cơ sở tương tác trực quan với người sử dụng. Có thể hiểu activty là 1 form trong đó gắn các view lên. View thì có thể hiểu là 1 đối tượng có hình dáng cụ thể, nhìn thấy được, và có các dạng là button, text box, check box, scroll bar… Ờ như vậy có thể nói lập trình android có phần na ná như VB, tạo các form rồi gắn mấy cái nút lên trên vậy. Ta sẽ đi tìm hiểu vấn đề này thông qua việc “vọc” code nhé. Đoạn mã sau đây cho thấy khung của 1 lớp Activity cơ sở, nó được mở rộng từ Activity trong đó quan trọng nhất là phương thức onCreate
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.paad. MainActivity;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
}
}
Điều còn thiếu trong ví dụ trên là cách bố trí của giao diện trực quan (tức là khi chạy ta chẳng thấy có gì). Trong Android, thành phần trực quan được gọi là Views, những cái tương tự như các controls trong các Form .Trong ví dụ Hello Aiti phương thức onCreate được thay thế gọi là Set Contentview, đưa ra giao diện người sử dụng bằng cách tạo một mã Layout như mô tả dưới đây :
1
2
3
4
5
6
7
8
9
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
}
Mã nguồn của một Android project được lưu trữ trong thư mục res của hệ thống phân cấp project, hệ thống bao gồm các thư mục con là drawable, layout và values. Giao diện người sử dụng được định nghĩa trong thư mục mail.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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=” Hello, AiTi Education Android”
/>
</LinearLayout>
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 sử dụng XML sẽ đơn giản công việc đi rất nhiều. Đồng thời sử dụng 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. Để có thể truy cập vào code các phần tử trong giao diện người dùng, bạn thêm các thuộc tính định danh cho chúng trong định nghĩa XML. Sau đó bạn có thể sử dụng phương thức findViewById để trả về một tham chiếu cho mỗi hạng mục được đặt tên. Đoạn mã XML sau sẽ ví dụ về thuộc tính giao diện người dùng được thêm vào Text view
1
2
3
4
5
6
7
8
9
10
11
<TextView
android:id=”@+id/myTextView”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=” Hello, AiTi Education Android”
/>
Để truy cập đến chúng trong code ta sử dụng lệnh: TextView myTextView = (TextView)findViewById(R.id.myTextView); Ngoài ra (mặc dù nó không được coi là tối ưu trong thực hành) nếu bạn cần bạn có thể bố trí trực tiếp như đoạn mã dưới đây:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
LinearLayout.LayoutParams lp;
lp = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
LinearLayout.LayoutParams textViewLP;
textViewLP = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
TextView tv = new TextView(this);
myTextView.setText(“Hello, AiTi Education Android”);
ll.addView(tv, textViewLP);
this.addContentView(ll, lp);
}
Tất cả những thuộc tính có sẵn trong đoạn mã có thể được thiết lập với các thuộc tính trong XML layout.cũng như cho phép dễ dàng thay thế các thiết kế layout và các phần tử người dùng cá nhân, giữ cho thiết kế hình ảnh tách rời mã ứng dụng làm cho các đoạn mã ngắn gọn hơn.