1. ANDROID APPLICATION
DEVELOPMENT
Menu, Action Bar, Widget
hoccungdoanhnghiep.com
2. Nội dung
Option menu
Context menu
Action bar (tham khảo)
Gesture detection
hoccungdoanhnghiep.com
3. Option Menu
Menu sẽ hiển thị khi ta nhấn vào nút menu
Với các thiết bị chạy android 2.x trở xuống, menu sẽ
hiển thị ở góc bên dưới và có tối đa 6 items chia làm
2 hàng ngang, nếu nhiều hơn 6 items, các items
cuối sẽ được tự động đưa vào item cuối cùng: More.
Menu được tạo khi người dùng nhấn vào nút Menu
Các thiết bị chạy Android 3.x trở lên, menu được
thay thế bằng Action Bar. Menu được tạo cùng với
activity luôn.
Các menu mới được thêm vào ở các API level 11
trở lên:
ActionBar: nhằm thay thế cho một option menu cũ
Popup Menu: hiển thị list các option lấy view nhận
action làm gốc
hoccungdoanhnghiep.com
4. Cách tạo Option menu
Để tạo menu, override hàm onCreateOptionsMenu()
Java code for menu item
Sử dụng lệnh menu.add(groupid, id, order, text) để
manual add từng item
Sử dụng menu inflater để gán xml layout cho menu
Tạo resource chứa khai báo cho menu
Trong thư mục res, tạo thư mục menu để chứa các define
layout & item cho menu
Trong res/menu/ tạo file my_menu.xml
Mở file my_menu.xml và add vào các menu item tương ứng
Trỏ my_menu.xml cho option menu cần tạo trong hàm
onCreateOptionsMenu:
Gọi menu Inflater có chức năng parse menu xml và gán vào
menu:
MenuInflater mi = getMenuInflater();
mi.inflate(R.menu.my_menu, menu);
hoccungdoanhnghiep.com
5. Xử lý sự kiện ở option menu
Khi có event người dùng click vào một item trên
menu, hệ thống gọi hàm onOptionsItemSelected
trong activity.
Trong hàm này sẽ parse thông tin và lấy ra id
của menu item đã được click: item.getItemId()
id được khai báo khi chúng ta gọi menu.add
id được khai báo trong file my_menu.xml trên mỗi
item
Sử dụng các lệnh rẽ nhánh để xử lý event cho
từng đối tượng trong hàm
onOptionsItemSelected
hoccungdoanhnghiep.com
6. Các chú ý khi sử dụng menu
Trong khi chạy không thể thay đổi cấu trúc của
menu được, mà phải gọi trong hàm
onPrepareOptionMenu
2.x: onPrepareOptionMenu luôn được gọi khi
nhấn nút menu
3.x trở lên: phải gọi vào hàm
invalidateOptionsMenu để hệ thống gọi vào
onPrepareOptionMenu
hoccungdoanhnghiep.com
7. Context menu
Dùng để gán menu cho một item cụ thể trên UI.
Thường được sử dụng với: ListView hoặc
GridView
Long press lên view đã được đăng ký để hiển
thị context menu tương ứng
hoccungdoanhnghiep.com
8. Cách tạo context menu
Với context menu thì:
Trong activity override hàm
onCreateContextMenu()
Đăng ký view nhận event đó bằng cách gọi
registerForContextMenu(view)
Cách tạo layout cho context menu tham khảo
phần Option menu
hoccungdoanhnghiep.com
9. Xử lý sự kiện cho context menu
Khi item trên context menu được nhấn, hệ thống
gọi hàm onContextItemSelected()
hoccungdoanhnghiep.com
11. Gesture Detection
Sử dụng các MotionEvent bắt được để nhận
biết các cử chỉ/hành động của người dùng đã
thực hiện trên activity
Nó chỉ hoạt động với thao tác chạm (touch) của
người dùng vào activity
hoccungdoanhnghiep.com
12. Cách tạo & sử dụng Gesture Detection
Khai báo 1 đối tượng từ lớp GestureDetector
trong activity: GestureDetector gestureDetector
Khởi tạo một lớp xử lý cho gesture bắt được, và
extends từ lớp SimpleOnGestureListener: class
MyGestureDectector extends
SimpleOnGestureListener
Trong class MyGestureDectector, override các
hàm có sẵn để xử lý các sự kiện theo mục đích
Khởi tạo & trỏ listener: gestureDetector = = new
GestureDetector(new MyGestureDectector());
Gán sự kiện onTouch của view muốn bắt
gesture và đẩy sự kiện bắt được đó cho
hoccungdoanhnghiep.com
13. Pass onTouch event thu được cho
gestureDetector
fl.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v,
MotionEvent event) {
gestureDetector.onTouchEvent(event);
return true;
}
}
);
hoccungdoanhnghiep.com