Tải bản đầy đủ
9 Giao diện người dùng trong Android

9 Giao diện người dùng trong Android

Tải bản đầy đủ

- Khi định kích thước cho các phần tử của giao diện ta có thể sử dụng các đơn
vị đo như:
 dp (Density-independent pixel hay dip): Đây là đơn vị thường được
dùng trong việc định kích thước cho 1 view trong layout. 160dp tương
ứng với 1 inch trên màn hình vật lý.
 sp (Scale-independent pixel): Thường dùng cho việc định kích thước
của font chữ.
 pt (point): 1 pt = 1/72 inch của màn hình.
 px (pixel): Tương ứng với các pixel thực tế trên mành hình. Đơn vị
này không được khuyến khích sử dụng vì nó có thể hiển thị không
chính xác trên các thiết bị với những kích thước màn hình khác nhau.
- Android hỗ trợ 6 loại ViewGroup:
 LinearLayout: LinearLayout sắp xếp các views theo 1 hàng hoặc 1 cột
đơn. Các views con có thể được sắp xếp theo chiều dọc hoặc hiều
ngang.
 AbsoluteLayout: Định vị tuyệt đối, cho phép chúng ta xác định chính
xác vị trí của các view. AbsoluteLayout bị phản đối sử dụng từ phiên
bản Android 1.5 do gặp vấn đề khi hiển thị trên các màn hình có độ
phân giải cao.
 TableLayout: Nhóm các view vào trong các hàng và cột. Dùng phần
tử để chỉ định số hàng cho trong bảng. Mỗi hàng có thể
chứa 1 hoặc nhiều view, mỗi view được đặt trong 1 ô. Chiều rộng của
mỗi cột là chiều rộng nhất của các ô trong cột đó.
 RelativeLayout: Cho phép xác định mỗi view được định vị tương đối
như thế nào với các phần tử khác.
 FrameLayout: Là một khung chứa trên màn hình, dùng để hiển thị một
view đơn lẻ. View đặt trong FrameLayout luôn được cố định tại vị trí
phía trên bên trái của layout. Nếu đặt nhiều view vào FrameLayout

29

chúng sẽ nằm đè lên nhau và kích thước của FramLayout là kích thước
của View lớn nhất. FrameLayout hữu ích trong trường hợp chúng ta
muốn tạo ra 1 ảnh động với 1 ảnh duy nhất được hiển thị tại 1 thời
điểm.
 ScrollView: Là 1 dạng đặc biệt của FrameLayout cho phép chúng ta
cuộn 1 danh sách các View chiếm 1 không gian hiển thị lớn. Nó có thể
chứa duy nhất 1 view hoặc ViewGroup mà thông thường là một
LinearLayout.
1.9.2 Button
- Button là một widget được sử dụng trong hầu hết các ứng dụng Android. Có
thể tạo ra một Button bằng cách khai báo nó trong file XML:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cmdButton1"
android:text="Touch me!"
android:onClick="touchMe"/>
- Cũng có thể tạo ra một Button bằng cách xử dụng mã lệnh, việc này cần
thiết khi ta muốn tạo ra các Button cho mỗi tình huống riêng biệt:
Button cmdButton = new Button(this);
cmdButton.setText(“Touch Me!”);
cmdButon.setOnClickListener(…);
- Ngoải ra còn có một loại Button khác là ImageButton, nó cũng tương tự như
Button chỉ khác ở thuộc tính android:src = “@drawable/icon” để thêm hình ảnh vào
nút và không có thuộc tính android:text.
1.9.3 ListView và GridView
- Một ListView hiển thị dữ liệu một danh sách cuộn theo chiều dọc. Một
GridView hiển thị danh sách theo dạng lưới có thể cuộn theo chiều dọc hoặc ngang

30

với số cột do chúng ta chỉ định, có thể dùng GridView với ImageView để hiện thị
một dãy các ảnh.
- Để hiện thị được ListView và GridView phải cần có 2 yếu tố chính:
 Data Source: Data Source có thể là một ArrayList, HashMap hoặc bất
kỳ một cấu trúc dữ liệu kiểu danh sách nào.
 Adapter: Adapter là một class trung gian giúp ánh xạ dữ liệu trong
Data Source vào đúng vị trí hiển thị trong ListView hoặc GridView.
1.9.4 TextView, EditText
- TextView cho phép hiển thị văn bản, ngoài văn bản thuần nó còn có thể
hiện thị văn bản dạng HTML ngay trong file XML hoặc trong mã lệnh của chương
trình.
Trong XML:


Hello World, Activities1Activity!
Activities1

Trong mã lệnh:
TextView textView = (TextView)findViewById(R.id.textView);
CharSequence styledText =
Html.fromHtml("This is some styled text");
textView.setText(styledText);
- Trong Android EditText được sử dụng như là một TextField hoặc một
TextBox. Các thuộc tính cần chú ý của EditText là:
 Android:inpuType xác định phương thức nhập cho EditText như Email
hay password hoặc một trường số…
 Android:singleLine = “true” thì EditText sẽ là một TextField ngược
lại nếu Android:singleLine = “false” thì nó là một TextBox.

31

1.9.5 Menu
- Menu là 1 thành phần quan trọng trong giao diên người dùng. Nó cung cấp
1 giao diện đáng tin cậy cho thấy chức năng của ứng dụng và các cài đặt của nó.
Menu cũng được cấu trúc bằng cách sử dụng kiến trúc View. Menu cũng xử lý các
sự kiện của riêng nó, do đó chúng ta không cần phải đăng ký bộ lắng nghe sự kiện
cho các mục của Menu. Khi 1 mục trên Menu được chọn thì phương thức
onOptionsItemSelected() hoặc onContextItemSelected() sẽ được gọi
- Trong Android có 2 loại menu là Context menu và Option menu.
 Option menu dùng để hiển thị thông tin liên quan đến Activity hiện tại.
Trong Android chúng ta có thể hiện thị option menu bằng cách nhấn
phím MENU. Các menu items được hiển thị khác nhau tuỳ theo
Activity hiện tại đang hoạt động. Option menu cho phép tạo ra các
shortcut keys và icons cho các items.
 Context menu dùng để hiện thị thông tin liên quan đến một view cụ
thể trong một Activity. Các menu items được hiện thị khác nhau tuỳ
thuộc vào thành phần hoặc view đang được chọn. Để kích hoạt một
Context menu, người sử dụng chọn một item trên màn hình và có thể
nhấp và giữ nó hoặc cách đơn giản hơn là nhấn phím giữa trên bàn
phím. Context menu không hỗ trợ các Shortcut keys và các icon cho
các items.
- Chúng ta có thể tạo ra một menu trong ứng dụng Android bằng 2 cách: Sử
dụng mã lệnh trực tiếp hoặc khai báo trong file xml. Với cả 2 cách này, ta đều phải
ghi đè phương thức onCreateOptionsMenu(Menu m) của Activity.
1.9.6 Bắt sự kiện giao diện người dùng
- Sau khi thêm các View/Widget vào giao diện người dùng chúng ta có thể
muốn biết về tương tác giữa người sử dụng với chúng, để được thông báo về sự kiện
giao diện người dùng, chúng ta phải làm 1 trong 2 việc:

32

 Thiết lập một bộ lắng nghe sự kiện và gắn nó vào các View. Lớp View
chứa tập hợp các giao diện lồng nhau được đặt tên dạng
OnListener, với một callback method được đặt tên dạng
on. Ví dụ: View.onClickListener() chứa sự kiện khi click vào
View, View.onKeyListener() chứa sự kiện 1 phím của thiết bị được nhấn
trong 1 View, View.OnTouchListener () chứa dự kiện với màn hình cảm
ứng trong 1 View.
 Ghi đè các callback method cho mỗi view để xác định các thao tác, hành
vi cần thực hiện với từng sự kiện của giao diện người dùng. Ví dụ:
Button btn = new Button();
btn.setOnClickListener( new View.onClickListener () {
public void onClick(View v) {
Toast.makeText(getBaseContext(),"Clicked",
Toast.LENGTH_SHORT).show();
}
});

1.10 Multimedia trong Android
- Android multimedia framework chụp và chạy Android cung cấp một thư
viện MediaStore cho phép mã hoá và xử lý các định dạng file Media phổ biến,
chúng ta có thể dễ dàng tích hợp audio, video hay ảnh vào ứng dụng. Chúng ta có
thể chạy các file audio, video từ các file media được lưu trữ trong tài nguyên của
ứng dụng hay từ hệ thống file độc lập hoặc nguồn dữ liệu được truyền đến thông qua
các kết nối mạng, tất cả dùng các API của lớp MediaPlayer.
1.11 Network và CSDL SQLite trong Android
- Android hỗ trợ truyền tin dùng Socket và phương thức http để kết nối tới
webServer. Do nó được thừa hưởng toàn bộ thư viện java.net của java nên việc
truyền tìn dùng Socket tương tự như trong java.

33

- Mỗi ứng dụng đều sử dụng dữ liệu, nó có thể là dữ liệu đơn giản hoặc kiểu
dữ liệu có cấu trúc. Trong Android thì hệ cơ sở dữ liệu được sử dụng là SQLite
Database, đây là hệ thống mã nguồn mở được sử dụng rộng rãi trong các ứng dụng (
Mozilla Firefox sử dụng SQLite để lưu trữ các dữ liệu về cấu hình, iPhone cũng sử
dụng cơ sở dữ liệu là SQLite). Trong Android, cơ sở dữ liệu mà bạn tạo cho 1 ứng
dụng thì chỉ ứng dụng đó có quyền truy cập và sử dụng, các ứng dụng khác thì
không. Các thao tác truy xuất dữ liệu trong SQLite cũng sử dụng các hàm SQL
thông thường như trong MSSQL hoặc MySQL. Ngoài ra chúng ta có thể sử dụng
các hàm có sẵn của thư viện Android cung cấp.
- Android cung cấp đủ các hỗ trợ cho database Sqlite. Khi tạo 1 database thì
nó có thể được sử dụng bởi tất cả các class trong application.
- Cách tốt nhất để tạo 1 Sqlite database là tạo 1 lớp helper kế thừa từ
SQLiteOpenHelper và ghi đè phương thức onCreate(), onUpgrade. Theo cách này
chúng ta có thể thực thi 1 lệnh Sqlite và tạo table mong muốn
- Sau khi tạo 1 lớp chúng ta có thể tạo 1 thể hiện SQLiteOpenHelper bằng
hàm

khởi

tạo



ta

định

nghĩa.

Sau

đó

đọc,

ghi

database

bằng

getWritableDatabase() và getReadableDatabase() tương ứng. chúng đều trả về 1 đối
tượng SQLiteDatabase đại diện cho CSDL và cung cấp các thao tác với Sqlite.
- Có thể thực thi 1 query bằng phương thức query() của đối tượng
SQLiteDatabse. Nó chứa 1 số tham cơ bản như bảng, cột, nhóm, lựa chọn… để truy
vấn. nếu muốn có 1 query phức tạp ta có thể dùng lớp SQLiteQueryBuilder, lớp này
cung cấp các phương thức thuận tiện hơn cho việc xây dựng 1 query.
- Tất cả các truy vấn với database đều trả về 1 đối tượng Cursor để chỉ ra tất
cả các hàng dữ liệu được trả về bởi query. Cursor là 1 cơ chế cho phép truy điều
hướng kết quả từ 1 database và đọc các hàng, các cột.
1.12 Các công cụ cần có để xây dựng 1 ứng dụng Android
- Java JDK: Android SDK sử dụng Java SE development Kit (JDK).

34