b. Giới thiệu một số android View cơ bản
- TextView: là view sử dụng để hiển thị text màn hình. TextView đƣợc định nghĩa bởi thẻ <TextView> trong xml.
- EditText: là view dùng để lấy giá trị từ ngƣời dùng nhập vào. EditText đƣợc định nghĩa bởi thẻ <EditText>trong xml.
- ImageView: là một view sử dụng rất nhiều trong ứng dụng android, ImageView sử dụng để hiển thị hình ảnh.
- Button: là view đƣợc sử dụng khá nhiều trong android, hầu nhƣ sử dụng ở mọi nơi cùng với EditText, TextView. Button có chức năng là làm
nhiệm vụ nào đó khi mà ngƣời dùng click trong phƣơng thức onClick. - ListView: đƣợc tạo từ một danh sách các ListItem. ListItem là một dòng (row) riêng lẻ trong listview nơi mà dữ liệu sẽ đƣợc hiển thị. Bất kỳ dữ liệu nào trong listview chỉ đƣợc hiển thị thơng qua listItem. Có thể coi listview nhƣ là một nhóm cuộn của các ListItem.
c. Bắt và xử lý sự kiện trên giao diện.
Sự kiện là một cách hữu ích để thu thập dữ liệu về sự tƣơng tác của ngƣời dùng với các thành phần tƣơng tác của ứng dụng. Giống nhƣ bấm vào một nút hoặc chạm vào màn hình cảm ứng, vv. Ta có thể nắm bắt những sự kiện trong chƣơng trình và có những xử lý thích hợp theo u cầu. Có hai khái niệm liên quan đến quản lý sự kiện Android:
-Event Listeners là một interface. Event Listeners đƣợc sử dụng để đăng ký sự kiện cho các thành phần trong UI. (Đăng ký sự kiện). Trong các
giao tiếp event listener có những phƣơng thức sau đây:
onClick(): Thuộc View.OnClickListener. Nó đƣợc gọi khi ngƣời dùng
hoặc chạm vào item (khi ở chế độ cảm ứng), hoặc lựa chọn vào item với các phím điều hƣớng và nhấn nút "enter" phù hợp.
onLongClick(): Thuộc View.OnLongClickListener. Nó đƣợc gọi khi
ngƣời dùng chạm và giữ item (khi ở chế độ cảm ứng), hoặc lựa chọn vào item với các phím điều hƣớng sau đó nhấn và giữ phím "enter".
onFocusChange(): Thuộc View.OnFocusChangeListener. Nó đƣợc gọi
khi ngƣời dùng điều hƣớng ra khỏi item, bằng cách sử dụng phím điều hƣớng.
onKey(): Thuộc View.OnKeyListener. Nó đƣợc gọi khi ngƣời dùng
lựa chọn và nhấn lên item.
onTouch(): Thuộc View.OnTouchListener. Nó đƣợc gọi khi ngƣời
dùng thực hiện một hành động xác định đủ điều kiện nhƣ là một sự kiện cảm ứng, bao gồm việc nhấn, thoát ra, hoặc bất kỳ cử chỉ chuyển động vẽ trên màn hình (bên trong phạm vi của item).
onCreateContextMenu():
Thuộc View.OnCreateContextMenuListener. Nó đƣợc gọi khi một menu ngữ cảnh (Context Menu) đang đƣợc xây dựng (là kết quả của một "long click"). Xem thêm thông tin về context menus trong hƣớng dẫn phát triển Menus.
Ví dụ dưới đây cho thấy làm thế nào để đăng ký một bộ bắt sự kiện khi nhấp chuột vào một Button.
Chú ý rằng lời gọi onClick() trong ví dụ trên khơng trả về giá trị, nhƣng
các phƣơng thức của bộ nghe sự kiện khác phải trả lại một biến kiểu boolean. Lý do phụ thuộc vào sự kiện này. Đây là một vài lý do:
onLongClick() - Trả về một giá trị kiểu boolean để cho biết ta đã dùng
sự kiện này và nó khơng cần thực hiện "long click") thêm nữa. Trả về giá trị TRUE để chỉ ra rằng ta đã xử lý sự kiện này và nó nên dừng lại ở đây; trả về FALSE nếu ta khơng xử lý nó và / hoặc sự kiện nên chuyển tới bất kỳ bộ nghe sự kiện on-click nào khác.
onKey() - Trả về một giá trị kiểu boolean để cho biết ta đã dùng sự
kiện này và nó khơng cần đƣợc thực hiện thêm. Trả về giá trị TRUE để chỉ ra rằng ta đã xử lý sự kiện này và nó nên dừng lại ở đây; trả về
FALSE nếu ta khơng xử lý nó và / hoặc sự kiện nên chuyển tới bất kỳ
bộ nghe sự kiện on-key nào khác.
onTouch() - Trả về một giá trị kiểu boolean để cho biết: liệu bộ nghe
của ta đã dùng sự kiện này hay chƣa. Điều quan trọng là sự kiện này có thể có nhiều hành động nối tiếp nhau. Vì vậy, nếu trả về FALSE, ta biết rằng ta đã không sử dụng và cũng không quan tâm đến hành động tiếp theo từ sự kiện này. Nhƣ vậy, ta không đƣợc gọi tới bất kỳ thao tác nào khác bên trong sự kiện này.
- Event Handlers – Là phƣơng thức xử lý khi phát sinh sự kiện. (Xử lý sự kiện)
Nếu ta đang xây dựng một thành phần tùy chỉnh từ View, ta sẽ phải định
nghĩa một số phƣơng thức sử dụng nhƣ của xử lý sự kiện mặc định. Trong tàiliệu về Custom Components, ta sẽ tìm hiểu một số callbacks thƣờng đƣợc sử
dụng để xử lý sự kiện, bao gồm:
onKeyDown(int, KeyEvent) – Đƣợc gọi khi một sự kiện nhấn phìm
mới xảy ra.
onKeyUp(int, KeyEvent) – Đƣợc gọi khi mọt sự kiện thả phím xảy ra. onTrackballEvent(MotionEvent) – Đƣợc gọi khi một sự kiện chuyển
động trackball xảy ra.
onTouchEvent(MotionEvent) – Được gọi khi một sự kiện chuyển động
màn hình cảm ứng xảy ra.
onFocusChanged(boolean, int, Rect) – Đƣợc gọi khi view được chọn
(focus) hoặc bỏ chọn.
Có một số phƣơng thức khác mà ta nên biết, chúng không phải là một phần của lớp View, nhƣng có thể trực tiếp tác động đến cách bạn có thể xử lý các sự kiện. Vì vậy, khi quản lý sự kiện phức tạp hơn bên trong một layout, ta nên xem xét các phƣơng pháp sau:
Activity.dispatchTouchEvent(MotionEvent) –
Điều này cho
phép Activity bắt tất cả các sự kiện chạm màn hình trƣớc khi chúng đƣợc gửi đến cửa sổ.
ViewGroup.onInterceptTouchEvent(MotionEvent) – Điều này cho
phép ViewGroup xem các sự kiện nhờ chúng được gửi đến các View con.
ViewParent.requestDisallowInterceptTouchEvent(boolean) – Gọi điều
này trên View cha để xác định rằng nó khơng nên bắt các sự kiện chạm màn hình với onInterceptTouchEvent(MotionEvent)
2.3.4 Firebase realtimedatabase
Giới thiệu: Có nhiều cách hiểu về Firebase khi đứng trên các quan điểm
khác nhau, sau đây là 2 định nghĩa cơ bản.
Firebase là một nền tảng di động, website giúp bạn nhanh chóng phát triển các ứng dụng chất lượng cao, phát triển ứng dụng cho người dùng quy mô lớn.
Firebase là một dịch vụ hệ thống backend được Google cung cấp sẵn trên nền tảng Android , IOS, website.
2.3.5 Lợi ích khi sử dụng Firebase
Xây dựng ứng dụng nhanh
chóng mà khơng tốn thời gian, nhân lực để quản
Xây dựng ứng dụng nhanh chóng mà khơng tốn thời gian, nhân lực để quản lý hệ thống và cơ sơ sở hạ tầng phía sau: Firebase cung cấp cho bạn chức năng như phân tích, cơ sở dữ liệu, báo cáo hoạt động và báo cáo các sự cố lỗi để bạn có thể dễ dàng phát triển, định hướng ứng dụng của mình vào người sử dụng nhằm đem lại các trải nghiệm tốt nhất cho họ.
2.4 Môi trường phát triển ứng dụng Smartphone:
5 hệ điều hành phổ biến hiện nay:Android,IOS,Windows Phone,Blackberry OS, Firefox OS. Android
Ưu điểm:
+ Có mã nguồn mở, khả năng tuỳ biến cao, có thể tùy ý chỉnh sửa mà khơng có sự can thiệp từ Google.
+ Kho ứng dụng Google Play Store đồ sộ.
+ Khả năng đa nhiệm, chạy cùng lúc nhiều ứng dụng cao. Nhược điểm:
+ Dễ nhiễm phần mềm độc hại và virus.
+ Kho ứng dụng quá nhiều dẫn đến khó kiểm sốt chất lượng => thiếu các ứng dụng thật sự tốt.
+ Sự phân mảnh lớn.
+ Cập nhật không tự động với tất cả thiết bị. IOS
Ưu điểm:
+ Nền tảng ổn định.
+ Ứng dụng trên IOS hoạt động rất mượt mà. + Độ tin cậy và tính bảo mật cao.
Nhược điểm:
+ Trao đổi dữ liệu cần phải qua iTunes nên dễ gây bất tiện, tốn thời gian. + Khả năng tuỳ chỉnh còn hạn chế.
+ iOS chỉ hoạt động trên các thiết bị công nghệ độc quyền của Apple. + Windows Phone
+ Giao diện quen thuộc, dễ sử dụng. + Khả năng đồng bộ danh bạ, email tốt.
+ Có phần mềm bản đồ Here Maps khá tốt, có thể xem offline được.
Nhược điểm:
+ Windows Phone không cho phép thay đổi giao diện, chủ đề (themes) nên dễ gây chán. + Kho ứng dụng nghèo nàn, ứng dụng miễn phí rất ít.
+ Khơng thể đổi DNS (hay IP) để vào 1 số web bị chặn. + Blackberry OS
Ưu điểm:
+ Hoạt động ổn định, giao diện đơn giản.
+ hỗ trợ Push Mail, xử lý cơng việc tốt và tính bảo mật rất cao. + Bàn phím QWERTY giúp soạn thảo nhanh và chính xác.
+ Blackberry OS cho khả năng nén dữ liệu xuống chỉ cịn bằng một nửa kích thước ban đầu, giúp tiết kiệm chi phí băng thơng.
+ Tính bảo mật cao.
Nhược điểm:
- BlackBerry OS khơng thân thiện và khó sử dụng đối với những người không am hiểu công nghệ.
- Firefox OS
Ưu điểm:
+ Giao diện dễ sử dụng, trông giống như một sự kết hợp hài hòa giữa Android và iOS. + Firefox OS có những thư mục rất thơng minh, có thể tự thu thập những ứng dụng, game
theo từng thể loại khác nhau, cũng như tính chất những cơng việc riêng biệt mà bản thân nó được phát triển. --- Nhược điểm:
+ Giao diện Firefox OS đã vay mượn khá nhiều từ iOS, thường gặp nhiều bất cập bởi phụ thuộc nhiều vào nút Home (màn hình chủ).
2.5 Ứng dụng của ngôn ngữ Java
- Các ứng dụng cho hệ điều hành Android
- Các ứng dụng bảo mật cao: Java là ngơn ngữ lập trình có tính bảo mật cao nên nó thường được sử dụng vào trong các dịch vụ tài chính, ngân hàng.
- Các ứng dụng web Java: Lập trình Java khơng chỉ được sử dụng trên thiết bị di động mà còn được biết đến là nền tảng của của các ứng dụng website.
- Các công cụ phần mềm: Hiện nay có rất nhiều các cơng cụ phát triển và phần mềm hữu ích được viết bằng Java, ví dụ: Eclipse, InetelliJ Idea và Netbans IDE.
- Khái niệm về lập trình hướng đối tượng trong java: Lập trình hướng đối tượng (Object Oriented Programing – OOP) là một phương pháp để thiết kế một chương trình bởi sử
- Java là một ngơn ngữ lập trình hướng đối tượng vì vậy nó cũng hỗ trợ các đặc tính của lập trình hướng đối tượng: Đa hình (Polymorphism) Thừa kế (Inheritance) Đóng gói (Encapsulation) Trừu tượng (Abstraction)
- Đối tượng là một thực thể có trạng thái và hành vi. Nó có thể mang tính vật lý hoặc logic.
- Lớp (Class) có thể xem lớp như một khuôn mẫu (template) của đối tượng (Object). - Package: package (gói) trong java là một nhóm các kiểu tương tự của các lớp, giao diện
và các package con .
- Package trong java có thể được phân loại theo hai hình thức, package được dựng sẵn và package do người dùng định nghĩa.
- Có rất nhiều package được dựng sẵn như java, lang, net, io, util, sql, … Package do người dùng tự định nghĩa
- Constructor: constructor trong java là một dạng đặc biệt của phương thức được sử dụng để khởi tạo các đối tượng.
- Java Constructor được gọi tại thời điểm tạo đối tượng. Nó khởi tạo các giá trị để cung cấp dữ liệu cho các đối tượng.
- Khai báo của Constructor giống với khải báo của method (phương thức). Nó phải có cùng tên với class (lớp) và khơng có giá trị trả về.
- Có 2 kiểu của constructor: Constructor mặc định (khơng có tham số truyền vào – default constructors). Constructor tham số (parameterized constructors).
- Phạm vi truy cập (Access modifier) Có hai loại modifier trong java: access modifiers và non-access modifiers.
- Có 4 kiểu của java access modifiers: private (Mặc định) protected public
- Các non-access modifiers: static, abstract, synchronized, native, volatile, transient, v.v..
2.6 Các thành phần ứng dụng của android 2.6.1 Activity:
Activity là một trong 4 thành phần quan trọng của ứng dụng Android gồm: Activity, Service, Content Provider, Broadcast receivers.
- Activity là gì?
Mỗi Activity thường hoạt động độc lập với nhau nhưng có thể tương tác và truyển dữ liệu qua nhau thơng qua Intent.
Chính vì Activity hoạt động độc lập nên sẽ có vịng đời riêng từ lúc được khởi tạo cho đến lúc được huỷ đi.
onCreate(): Được gọi bởi OS khi activity được tạo(chỉ gọi duy nhất một lần). Dùng để khởi
tạo giao diện hoặc dữ liệu để dùng cho sau này.
onStart(): Ngay trước khi activity được chạy và tương tác với người dùng thì hàm được gọi. Thông thường, tại hàm này chúng ta sẽ khởi tạo animation cho UI( nếu có), Audio, hay bất kì đối tượng nào cần thiết để activity có thể hiển thị cho người dùng
onResume(): Hàm này được gọi khi activity chuẩn bị chạy hoặc activity được kích hoạt trở lại
từ trạng thái stop
onPause(): Hàm này được gọi khi ứng dụng chuyển sang chạy nền
onStop(): Hàm này được ngay sau onPause(), khi activity khơng cịn tương tác với người dùng. onRestart(): Được gọi sau khi activity bị tạm dừng và giờ được kích hoạt trở lại
onDestroy(): Đây là hàm cuối cùng trong vòng đời của activity. Có 2 cách để hàm được gọi:
một là bạn gọi hàm finish() để chủ động tắt một activity, hai là được gọi tự động bởi OS khi tài nguyên cạn kiệt để tránh bị lỗi Memory Leak.
2.6.2 Toast Notification
Toast là một message, có dạng như một popup, xuất hiện trên màn hình trong 1 khoảng thời gian ngắn và tự biến mất sau đó.
Toast có thể được tạo và hiển thị trong Activity hoặc trong Servive. Không cho phép người sử dụng tương tác
Khi hiển thị sau khoảng thời gian nào đó sẽ tự đóng lại
Có 2 giá trị mặc định: hằng số Toast.LENGTH_SHORT hiển thị trong 2 giây Toast.LENGTH_LONG hiển thị trong 3.5 giây
2.7 Alert Dialog (Hộp thoại cảnh báo)
Khi yêu cầu người dùng về lựa chọn quyết định yes hoặc no để phản action cụ thể. Sử dụng Alert Dialog.
Cú pháp : AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
Phương thức Mô tả
setIcon(Drawable icon) Phương thức này thiết lập icon của Alert Dialog
setCancelable(boolean cancel able) Phương thức này thiết lập thuộc tính mà Dialog là bị cancel hoặc khơng
setMessage(CharSequence message) Phương thức này thiết lập thông điệp để được hiển thị trong Alert Dialog
setMultiChoiceItems(CharSequence[] items,
boolean[] checkedItems,
DialogInterface.OnMultiChoiceClickListene r listener)
Phương thức này thiết lập danh sách item để được hiển thị trong Dialog. Tùy chọn sẽ được thông báo bởi Listener
setOnCancelListener(DialogInterface.OnC
ancelListener onCancelListener) Phương thức này thiết lập hàm callback sẽđược gọi nếu Dialog bị cancel setTitle(CharSequence title) Phương thức này thiết lập Title xuất hiện
trong Dialog
2.8 Các kiểu lập trình trong android
Xử lý sự kiện (Event Handling) trong Android là sự tương tác của người dùng với các thành
Event Listeners − là một Interface trong lớp View chứa một phương thức callback. Các
phương thức này sẽ có thể được gọi bởi AndroidFramework khi Listener đã đăng ký được kích hoạt bởi tương tác của người dùng với item trong giao diện UI.
Event Listeners Registration − là tiến trình mà bởi đó một Event Handler được đăng ký với
một Event Listener để mà Handler này được gọi khi Event Listener kích hoạt sự kiện.
Event Handlers − Khi một Event xảy ra, và chúng ta đã đăng ký một Event Listener cho sự
CHƯƠNG III:PHÂN TÍCH PHẦN MỀM3.1. Lựa chọn ngôn ngữ, môi trường ứng dụng: 3.1. Lựa chọn ngôn ngữ, môi trường ứng dụng:
Ngôn ngữ lựa chọn: Java.
Môi trường hỗ trợ làm việc: Android Studio.
3.2.1. Giao diện đăng nhập: