Giới thiệu các View View là lớp cơ bản cho tất cả các thành phần giao diện Gồm các UI control và các layout ViewGroup là lớp mở rộng của View Chứa nhiều View Được dùng để tạo cá
Trang 1Công nghệ mới trong phát triển hệ thống thông tin
Chuyên đề: Phát triển ứng dụng
trên môi trường Android
Bài 4: Giao diện người dùng
TS Trần Minh Triết Khoa Công nghệ Thông tin
Trường ĐH Khoa học Tự nhiên
Trang 2Tham khảo
Nội dung của bài giảng có sử dụng:
Tài liệu, bài giảng của ThS Nguyễn Trung Hiếu, Trung tâm Tin học trường ĐH Khoa học Tự
Trang 4Phát triển UI trong Android
UI trong Java
4
Trang 5Phát triển UI trong Android
UI trong XML
5
Trang 6Giới thiệu các View
View là lớp cơ bản cho tất cả các thành phần giao diện
Gồm các UI control và các layout
ViewGroup là lớp mở rộng của View
Chứa nhiều View
Được dùng để tạo các thành phần giao diện
Hoặc dùng để tạo layout quản lý các View con
6
Trang 7Giới thiệu các View
Sử dụng hàm setContentView() để đặt layout cho Activity
setContentView( R.layout.main );
Sử dụng hàm findViewById() để lấy các View được khai báo trong layout
< ListView android:id =" @+id/myListView "/>
( ListView )findViewById(R.id.myListView );
7
Trang 8Giới thiệu các View
Trang 10 Sử dụng Linkify để mở một trang web/ gọi điện thoại/ gửi email
10
Trang 11 autoText = true | false
capitalize
none | characters | words | sentences
phoneNumber = true | false
password = true | false
singleLine = true | false
11
Trang 12 Xử lý event onKey
12
Trang 1313
Trang 1414
Trang 1616
Trang 1717
Trang 1818
Trang 1919
Trang 2020
Trang 2121
Trang 22List Control
ListView
22
Trang 23List Control
ListActivity
23
Trang 24Grid Control
GridView
24
Trang 25Grid Control
25
Trang 26Date Time Control
26
Trang 27Date Time Control
Analog Clock
Digital Clock
27
Trang 28Các View đáng quan tâm
ViewFlipper
Cho phép định nghĩa một tập hợp các View
Chỉ có 1 View hiển thị tại một thời điểm
Có hiệu ứng chuyển đổi giữa các View
QuickContactBage
Hiển thị hình ảnh gắn liền với một contact
Contact bao gồm số điện thoại, tên, email
Hỗ trợ việc gọi, nhắn tin sms, email hay tin nhắn tức thời (IM – instant message)
28
Trang 29Các View đáng quan tâm
MapView
Là control của package com.google.android.maps được dùng để hiển thị bản đồ
Có thể định nghĩa từ XML file hoặc Java code, Activity được sử dụng phải là MapActivity
Để sử dụng MapView phải chứa apiKey được đăng ký với Google
http://code.google.com/android/toolbox/apis/mapkey.html
29
Trang 30Các View đáng quan tâm
Gallery
Là layout được sử dụng để biểu diễn những Item trong danh sách theo chiều ngang và vị trí
của Item hiện thời luôn ở trung tâm của View
Cơ chế làm việc giống với GridView widget
30
Trang 31Các View đáng quan tâm
WebView
Là View được sử dụng hiển thị trang Web,
là class cơ bản dựa vào nó có thể đưa vào trình duyệt Web, hoặc hiển thị vài nội dụng online trong Activity
Cung cấp quyền sử dụng Internet trong Manifest file
<uses-permission android:name="android.permission.INTERNET" />
XML code:
31
Trang 33Sử dụng Layout
Layout là mở rộng của lớp ViewGroup được dùng để đặt các controls cho giao diện.
Các loại layout trong Android SDK
Trang 3636
Trang 3838
Trang 4040
Trang 4242
Trang 44public boolean onKeyDown (int keyCode, KeyEvent keyEvent) {
// Return true if the event was handled.
return true;
}
Trang 45public boolean onKeyUp (int keyCode, KeyEvent keyEvent) {
// Return true if the event was handled.
return true;
}
Trang 46public boolean onTrackballEvent (MotionEvent event) {
// Get the type of action this event represents
int actionPerformed = event.getAction();
// Return true if the event was handled.
return true;
}
Trang 47public boolean onTouchEvent (MotionEvent event) {
// Get the type of action this event represents
int actionPerformed = event.getAction();
// Return true if the event was handled.
return true;
}
Trang 48Xử lý các Event
Minh họa chương trình TestViewFlipper
48
Trang 49Xử lý các Event
ViewFlipper
Hàm xử lý event onClick
49
Trang 51Giao diện người dùng – Todo List
Trang 52Giao diện người dùng – Todo List
Bước 1:
Tạo lớp TodoListItemView kế thừa TextView
52
Trang 53Giao diện người dùng – Todo List
Bước 2:
Tạo colors.xml trong res/values
Tạo màu cho paper, margin, line và text
53
Trang 54Giao diện người dùng – Todo List
Bước 3:
Tạo file resource dimens.xml
Thêm giá trị mới cho margin
54
Trang 55Giao diện người dùng – Todo List
Bước 4:
Sử dụng đối tượng Paint để vẽ nền và biên
Khởi tạo và gán giá trị cho các biến trong hàm init()
55
Trang 56Giao diện người dùng – Todo List
Bước 5:
Sử dụng các đối tượng Paint để vẽ trong hàm onDraw()
56
Trang 57Giao diện người dùng – Todo List
Bước 6:
Tạo todolist_item.xml trong res/layout để mô tả cách hiển thị các item
57
Trang 58Giao diện người dùng – Todo List
Trang 59Giao diện người dùng – Todo List
59
Trang 61Tạo và sử dụng Menus
Hệ thống menu ba giai đoạn của Android
Icon menu Expanded menu Sub menu
61
Trang 62Tạo và sử dụng Menus
Menu trong xml file
62
Trang 64Nội Dung
Trang 65Menus trong To-do List
65
Trang 66Menu trong To-do List
66
Dialogs
Trang 67Nội Dung
Trang 68Các loại thông báo trong Android
Toast Notification
Thông báo dưới dạng thông điệp ngắn
Status Bar Notification
Thông báo dưới dạng reminder và yêu cầu người dùng phản hồi
Dialog Notification
Thông báo liên quan đến Activity
68
Trang 69Toast Notification
Là Message được hiển thị trên bề mặt của màn hình
Tự động xuất hiện và ẩn đi, không tương tác với người dùng
Toast có thể được tạo từ Background, nên có thể xuất hiện thậm chí ứng dụng không có giao
diện
69
Trang 70Toast Notification
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
Không tạo đối tượng Toast
Toast.makeText(context, text, duration).show();
Vị trí của Toast
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
70
Trang 71Toast Notification
Toast có thể được thay đổi giao diện bằng cách
Tạo layout riêng cho toast
Khởi tạo đối tượng Toast và setView
71
Trang 72Status Bar Notification
Được sử dụng cho trường hợp Service cần thông báo cho người dùng về những sự kiện mà
cần người dùng tương tác
Cần thêm icon và message mở rộng trong cửa sổ notification
Cấu hình notification để thông báo người dùng sử dụng âm thanh, độ rung động, ánh sáng trong
thiết bị
72
Trang 73Status Bar Notification
Đòi hỏi những thành phần sau
Icon cho status bar
Trang 74Status Bar Notification
Trang 75Nội Dung
Trang 76 AlertDialog
Mang tính thông báo (notification)
76
Trang 77 AlertDialog
Mang tính xác nhận (confirmation)
77
Trang 78 Progress Dialog
78
Trang 79 Progress
Dialog
79
Trang 80 DatePickerDialog TimePickerDialog
80
Trang 81 Sử dụng Activity như một Dialog
Quản lý và hiển thị các Dialog
public Dialog onCreateDialog(int id);
public void onPrepareDialog(int id, Dialog dialog) ;
showDialog(int dialog_name);
81
<activity android:name="MyDialogActivity"
android:theme="@android:style/Theme.Dialog">
</activity>
Trang 82 Thay đổi vị trí của Activity dạng Dialog
Thay đổi vị trí hiển thị của Dialog
Trang 8383
Demo TestDialog