Tải bản đầy đủ (.pdf) (77 trang)

LTD dong DH aaaaaaaaa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (18.1 MB, 77 trang )

9/16/2017

LẬP TRÌNH TRÊN
THIẾT BỊ DI ĐỘNG

CHƯƠNG 1

ANDROID VÀ MÔI TRƯỜNG
PHÁT TRIỂN

Khoa: Công nghệ thông tin – ĐHQN
ThS. Nguyễn Thị Loan

1
1

Nội dung

2

Tổng quan về hệ điều hành Android

Tổng quan về hệ điều hành Android
Kiến trúc Android
Môi trường phát triển ứng dụng
Tạo ứng dụng đầu tiên
Các thành phần trong ứng dụng Android
Vòng đời ứng dụng Android

Lịch sử ra đời
Năm 2003, Android Inc. được thành lập bởi Andy


Rubin, Rich Miner, Nick Sears và Chris White tại
California.
Năm 2005, Google sở hữu Android cùng với các vị trí
quản lý.
Năm 2007, Liên minh thiết bị cầm tay mở (Open
Handset Alliance) được thành lập bởi Google cùng với
nhiều nhà sản xuất thiết bị phần cứng, thiết bị không
dây và vi xử lý. Công bố nền tảng phát triển Android.
3

4

1


9/16/2017

Tổng quan về hệ điều hành Android

Tổng quan về hệ điều hành Android

Lịch sử ra đời

Các phiên bản hệ điều hành

Năm 2008, thiết bị HTC Dream là phiên bản thế hệ
đầu tiên hoạt động với hệ điều hành Android 1.0
Năm 2010, Google ra mắt loạt thiết bị Nexus – một
dòng sản phẩm bao gồm điện thoại thông minh và
máy tính bảng chạy hệ điều hành Android, do các đối

tác phần cứng sản xuất. HTC đã hợp tác với Google
trong chiếc điện thoại thông minh Nexus đầu tiên,
Nexus One

5

Tổng quan về hệ điều hành Android

6

Tổng quan về hệ điều hành Android

Các phiên bản hệ điều hành

Các phiên bản hệ điều hành

Phiên bản 1.x:

Phiên bản 3.x:

Android 1.0 (API 1)
Android 1.1 (API 2)
Android 1.5 Cupcake (API 3)
Android 1.6 Donut (API 4)

Android 3.0 Honeycomb (API 11)
Android 3.1 Honeycomb (API 12)
Android 3.2 Honeycomb (API 13)

Phiên bản 4.x:


Phiên bản 2.x:

Android 4.0 – 4.0.2 Ice Cream Sandwich (API 14)
Android 4.0.3 – 4.0.4 Ice Cream Sandwich (API 15)
Android 4.1 Jelly Bean (API 16)
Android 4.2 Jelly Bean (API 17)
Android 4.3 Jelly Bean (API 18)
Android 4.4 Kit Kat (API 19)

Android 2.0 Eclair (API 5) – Android 2.0.1 (API 6) –
Android 2.1 (API 7)
Android 2.2 – 2.2.3 Froyo (API 8)
Android 2.3 – 2.3.2 Gingerbread (API 9)
Android 2.3.3 – 2.3.7 Gingerbread (API 10)
7

8

2


9/16/2017

Tổng quan về hệ điều hành Android

Tổng quan về hệ điều hành Android

Các phiên bản hệ điều hành


Hệ sinh thái

Phiên bản 5.x:
Android 5.0 Lollipop (API 21)
Android 5.1 Lollipop (API 22)

Phiên bản 6.0
Android 6.0 Marshmallow (API 23)
Android 7.0 Nougat (API 24)
Android 7.1.1 Nougat (API 25)
Android 8.0 Oreo (API 26)

9

Tổng quan về hệ điều hành Android

10

Kiến trúc Android
Android được hình thành dựa trên nền tảng
Linux nhân 2.6, từ phiên bản 4.0 sử dụng Linux
nhân 3.x.
Android bao gồm 3 thành phần chính:

Hệ sinh thái

Middleware
Các thư viện và API viết bằng C
Các ứng dụng thực thi viết bằng Java


Sử dụng máy ảo Dalvik để biên dịch mã .dex
(Dalvik Excuteable) sang Java bytecode.

11

12

3


9/16/2017

Kiến trúc Android

Kiến trúc Android

Bao gồm
Nhân Linux
Tập các thư viện C/C++ được truy xuất bởi tầng ứng
dụng để sử dụng các dịch vụ
Các bộ quản lý thực thi và quản lý ứng dụng.
Mỗi tầng đều có chức năng vai trò riêng biệt với nhau

13

Kiến trúc Android

Kiến trúc Android

Linux kernel – lõi chính của toàn hệ thống bao

gồm các điều khiển phần cứng, bộ quản lý xử lý
và bộ nhớ, bảo mật, kết nối mạng, bộ quản lý
năng lượng.
Libraries – thực thi trên tầng nhân Linux, bao
gồm các thư viện lõi khác nhau của C/C++ như
libc và SSL. Có các dạng sau:
Thư viện hỗ trợ phát các tập tin đa truyền thông.
Bộ quản lý hiển thị
Thư viện hỗ trợ đồ họa OpenGL 2D và 3D
SQLite hỗ trợ lưu trữ cơ sở dữ liệu
SSL và WebKit cho phép tương tác với trình duyệt và
bảo mật Internet.

14

Android RunTime – gồm máy ảo Dalvik và thư
viện lõi. Android RunTime ngoài tăng tốc độ cho
ứng dụng còn làm nền cho tầng Application
Framework kết nối đến.
Core Libraries – Các thư viện lõi Android sẽ cung cấp
hầu hết các chức năng chính có thể có trong thư viện
Java cũng như thư viện riêng biệt của Android.
Dalvik VM – máy ảo Dalvik cho phép tối ưu hóa để có
thể chạy được nhiều tiến trình một cách hiệu quả, dựa
trên nhân Linux các máy ảo cho phép quản lý các tiểu
trình và quản lý bộ nhớ ở cấp thấp.
15

16


4


9/16/2017

Kiến trúc Android

Kiến trúc Android
Application Framework – cung cấp các lớp cho
việc xây dựng ứng dụng. Cho phép truy nhập
phần cứng, quản lý giao diện người dùng và tài
nguyên của ứng dụng.
Android Framework gồm các dịch vụ chính sau:

Applications – gồm các ứng dụng được tích
hợp sẵn và các ứng dụng của hãng thứ ba.
Tầng ứng dụng trong Android RunTime sử dụng
các lớp từ tầng Application Framework để thực
thi ứng dụng.

Activitty Manager – Quản lý các Activity.
Content Providers – Cho phép các ứng dụng chia sẻ
dữ liệu với các ứng dụng khác.
Resource Manager – Quản lý tài nguyên
Notifications Manager – Cho phép các ứng dụng hiển
thị cảnh báo và các thông báo cho người dùng.
View System – Tập các thành phần giao diện (view)
được sử dụng để tạo giao diện người dùng.
17


18

Môi trường phát triển ứng dụng Android

Kiến trúc Android
Có thể sử dụng các ngôn ngữ lập trình:

Android Developer Tools Bundle

Java
C/C++
JNI
XML
Render Script

Java Development Kit (JDK)
Android SDK
ADT plugin

Android Studio
là môi trường phát triển tích hợp (Integrated
Development Environment – IDE) chính thức cho việc
phát triển ứng dụng cho nền tảng Android

19

20

5



9/16/2017

Môi trường phát triển ứng dụng Android

Môi trường phát triển ứng dụng Android
Android Studio là công cụ lập trình dựa trên nền
IntelliJ, cung cấp các tính năng mạnh mẽ hơn
ADT, bao gồm:

Android Developer Tools Bundle (ADT) bao
gồm:
Eclipse + ADT plugin
Android SDK Tools
Android Platform Tools
Phiên bản hệ điều hành Android
Tập tin cài đặt hệ điều hành cho máy ảo

Hỗ trợ xây dựng dự án dạng Gradle.
Hỗ trợ sửa lỗi và tái sử dụng cấu trúc phương thức
Cung cấp các công cụ kiểm tra tính khả dụng, khả
năng hoạt động của ứng dụng, tương thích nền
tảng…
Hỗ trợ bảo mật mã nguồn và đóng gói ứng dụng.
Trình biên tập giao diện cung cấp tổng quan giao diện
ứng dụng và các thành phần, cho phép tuỳ chỉnh trên
nhiều cấu hình khác nhau.
Cho phép tương tác với nền Google Cloud.
21


22

Yêu cầu cấu hình máy tính

Môi trường phát triển ứng dụng Android
Android Studio bao gồm các thành phần:

Microsoft Windows 8/7/Vista/2003 (32 or 64-bit)
Tối thiểu 2 GB RAM
400 MB hard disk space + ít nhất 2G cho
Android SDK, emulator system images và
caches
Java Development Kit (JDK) 7 trở lên
Lựa chọn thêm cho accelerated emulator: Intel
processor with support for Intel VT-x, Intel
EM64T (Intel 64), and Execute Disable (XD) Bit
functionality

Android Studio IDE
Android SDK tools
Link: />
23

24

6


9/16/2017


Làm quen với môi trường Android Studio

Tạo ứng dụng đầu tiên
Khởi động Android Studio, chọn Start a new Android Studio
project
Màn hình Create New Project hiển ra, nhập thông tin rồi chọn Next

Cách tạo một Project trong Android Studio
Cấu trúc một Project trong Android Studio
Các chức năng thường dùng trong Android
Studio
Cách tạo và sử dụng Android Emulator trong
Android Studio
Quy trình thực thi một phần mềm lên thiết bị
(thật, emulator) trong Android Studio.

25

Tạo ứng dụng đầu tiên

26

Tạo ứng dụng đầu tiên
Sau khi bấm Next, màn hình tiếp theo hiển thị cho phép chọn loại
Activity mặc định

=> Màn hình cấu hình Target Android Devices

27


28

7


9/16/2017

Tạo ứng dụng đầu tiên

Tạo ứng dụng đầu tiên

Màn hình hiệu chỉnh Activity

Màn hình hiệu chỉnh Activity
Activity Name: Tên class Activity (java) để viết mã
lệnh
Layout Name: Tên file XML làm giao diện cho Activity
Name.
Title: Tiêu đề hiển thị khi kích hoạt Activity trên thiết
bị.
Menu Resource Name: Tên file xml để tạo menu cho
ứng dụng.
Sau khi cấu hình xong, ta bấm Finish, Màn hình Build
Gradle project hiển thị

29

Cấu trúc một Project trong Android Studio

30


Cấu trúc một Project trong Android Studio
Vùng 1: thể hiện cấu trúc của ứng dụng, ta có thể thay
đổi cấu trúc hiển thị (thường để mặc định là Android)

Tiến hành mở Project mặc, định activity_main.xml sẽ được chọn ta
có màn hình như sau:

31

32

8


9/16/2017

Cấu trúc một Project trong Android Studio

Cấu trúc một Project trong Android Studio
Vùng 2: chứa các Control mà Android hỗ trợ, cho phép
kéo thả để tạo giao diện

Vùng 1:
AndroidManifest.xml là file quan trọng trong việc cấu hình ứng
dụng.
Các thư mục Resource (res): drawable, layout, menu…

33


Cấu trúc một Project trong Android Studio

34

Cấu trúc một Project trong Android Studio

Vùng 2: có 2 tab Design và Text ở góc trái dưới cùng.

Vùng 3: là vùng giao diện thiết bị, cho phép kéo thả các
control vào và hiệu chỉnh chúng.

Design là tab cho phép thiết kế giao diện bằng cách kéo thả.
Text là tab cho phép thiết kế giao diện bằng viết Tag XML

35

36

9


9/16/2017

Cấu trúc một Project trong Android Studio

Cấu trúc một Project trong Android Studio

Vùng 4: là vùng hiển thị giao diện theo dạng cấu trúc cây
=> dễ quan sát và lựa chọn control khi chúng bị chồng
lấp trên giao diện


Vùng 5: cho phép thiết lập trạng thái hay thuộc tính của
các control trên giao diện.

37

Các chức năng thường dùng trong AS

38

Các chức năng thường dùng trong AS

Chạy ứng dụng và Debug ứng dụng

Quản lý Android SDK Manager (dùng để cập nhật)

Quản lý máy ảo (AVD Manager)

39

40

10


9/16/2017

Các chức năng thường dùng trong AS

Tạo và sử dụng Android Emulator trong AS


Quản lý Android Device Manager

Chạy ứng dụng Android Studio, có nhiều cách:
Nhấn biểu tượng Run trên thanh Toolbar
Vào menu Run/Run ‘App’ (nhấn Shift + F10)
Vào menu Run/Run (nhấn Alt + Shift + F10)

41

Tạo và sử dụng Android Emulator trong AS

42

Tạo và sử dụng Android Emulator trong AS

Chạy ứng dụng Android Studio:

Chạy ứng dụng Android Studio:
Nếu chạy trên thiết bị ảo thì kích hoạt máy ảo và phải
tạo máy ảo

Trường hợp có kết nối tới thiết bị thật, Android Studio
sẽ hiển thị ngay thiết bị thật để chọn

43

44

11



9/16/2017

Quy trình thực thi phần mềm

Tạo và sử dụng Android Emulator trong AS
Màn hình Android Virtual Device Manager xuất hiện:

B1: Biên dịch và đóng gói ứng dụng thành file APK.
B2: Hệ thống tiến hành tìm thiết bị (thật, ảo)
B3: Nếu tìm được thiết bị, tiến hành tải APK ở bước 1
vào Remote Path
/data/local/tmp/com.tranduythanh.helloandroidstudio
B4: Tiến hành cài đặt ứng dụng vào thiết bị nếu bước 3
tải thành công, hệ thống dùng lệnh sau để cài đặt:
DEVICE SHELL COMMAND: pm install –r
“/data/local/tmp/com.tranduythanh.helloandroidstudio”
pkg: /data/local/tmp/com.tranduythanh.helloandroidstudio

B5: Kích hoạt ứng dụng để chạy
Tìm trong AndroidManifest, Activity nào được thiết lập ACTION
MAIN sẽ được thực hiện.
45

Các thành phần ứng dụng Android

46

Activity

Trong ứng dụng Android, Activity là một màn
hình, nơi người dùng có thể tương tác với ứng
dụng, ví dụ: chụp hình, xem bản đồ, gửi mail…
Một ứng dụng có thể có một hoặc nhiều Activity,
Activity được khởi chạy đầu tiên khi ứng dụng
hoạt động được gọi là “MainActivity”.
Activity có thể hiển thị ở chế độ toàn màn hình,
hoặc ở dạng cửa sổ với kích thước nhất định.
Các Activity có thể gọi đến các Activity khác,
Activity được gọi sẽ nhận được tương tác ở thời
điểm đó.

Activity
View
Service
Broadcast Receiver
Intent
Content Provider
Notification

47

48

12


9/16/2017

View


Service

View được sử dụng để tạo ra các điều khiển trên
màn hình cho phép nhận các tương tác từ người
dùng cũng như hiển thị các thông tin cần thiết.
View bao gồm hai dạng:

Service được sử dụng để thực thi các tác vụ ở
chế độ ngầm và thường không cần giao diện
hiển thị.
Service có thể được khởi chạy và hoạt động
xuyên suốt ngay cả khi ứng dụng không hoạt
động.
Một số tác vụ cần thực hiện bằng Service:

View: các điều khiển đơn lẻ
ViewGroup: tập hợp nhiều điều khiển đơn lẻ

Trình diễn các tập tin đa truyền thông như nhạc,
phim…
Kết nối và thực hiện tải các nội dung thông qua
Internet
Truy xuất đọc ghi tập tin
49

Broadcast Receiver

50


Intent

Thành phần ứng dụng cho phép truyền tải các
thông báo trên phạm vi toàn hệ thống. Không có
giao diện nhưng có thể thực hiện thông báo qua
thanh trạng thái.
Broadcast Receiver truyền thông báo ở hai
dạng:

Intent là đối tượng mang thông điệp, cho phép
tạo ra các yêu cầu hành động giữa các thành
phần trong ứng dụng, hoặc giữa các ứng dụng
với nhau.
Được sử dụng nhiều trong 3 trường hợp sau:
Khởi động Activity
Khởi động Service
Chuyển phát thông tin cho Broadcast Receiver

Hệ thống: các thông báo được truyền trực tiếp từ hệ
thống như: tắt màn hình, pin yếu, thay đổi kết nối…
Ứng dụng: xây dựng các truyền thông báo đến các
thành phần trong ứng dụng như: khởi động Service,
tải nội dung đến ứng dụng…

51

52

13



9/16/2017

Content Provider

Notification
Notification được xây dựng cho mục đích gửi
các thông báo đến người dùng thông qua thanh
trạng thái.
Giao diện Notification không thuộc giao diện ứng
dụng, nhưng có thể tuỳ chỉnh giao diện
Notification thông qua các phương thức có sẵn.

Content Provider xây dựng cách thức truy xuất
tập hợp các dữ liệu ứng dụng, dữ liệu có thể lưu
trữ ở nhiều dạng như: SQLite, tập tin, tài nguyên
Web hoặc bất kì thư mục lưu trữ nào.
Có thể sử dụng Content Provider để xây dựng
các ứng dụng sử dụng chung nguồn tài nguyên
hoặc sử dụng riêng.
Trong Android, một số Content Provider được
xây dựng sẵn:
Danh bạ
Tài nguyên đa truyền thông
Lịch
53

Ứng dụng Android và cơ chế hoạt động

54


Ứng dụng Android và cơ chế hoạt động

Đóng gói và thực thi ứng dụng
Ứng dụng Android được viết bằng ngôn ngữ Java và
biên dịch, đóng gói cùng các tập tin tài nguyên thành
tập tin *.apk
Cài đặt trên thiết bị theo đường dẫn data/app/đóng gói>:
Mỗi ứng dụng được cấp một ID, chỉ duy nhất ứng dụng mới có
thể truy xuất các tập tin liên quan đến ứng dụng đó.
Ứng dụng thực thi riêng biệt trên từng máy ảo.
Tiến trình Linux được cấp phát khi bất cứ thành phần ứng dụng
được gọi thực thi, và thu hồi khi chấm dứt hoạt động.
Các ứng dụng có cùng ID và chứng chỉ (Cerfiticate) có thể truy
xuất tài nguyên của nhau, hoặc xin quyền nếu truy xuất hệ
thống.
55

Tính tương thích ứng dụng với thiết bị bao gồm:
Trang bị tính năng của thiết bị
Phiên bản hệ điều hành
Kích thước màn hình

Trang bị tính năng của thiết bị:
Mỗi tính năng phần cứng và phần mềm trên thiết bị
Android được cung cấp một ID, quy định thiết bị đó có
được trang bị tính năng đó hay không.
Ví dụ:
FEATURE_SENSOR_COMPASS: tính năng la bàn

FEATURE_APP_WIDGET: tính năng gắn Widget

56

14


9/16/2017

Activity và độ ưu tiên ứng dụng

Ứng dụng Android và cơ chế hoạt động
Tính tương thích ứng dụng với thiết bị bao gồm:

Activity là thành phần quan trọng nhất và đóng
vai trò chính trong xây dựng ứng dụng Android.
Hệ điều hành Android quản lý Activity theo dạng
stack:

Phiên bản hệ điều hành:
Mỗi phiên bản kế tiếp được bổ sung hoặc lược bỏ các
hàm API, cần thực thi khai báo các thông tin phiên bản
để sử dụng đầy đủ các tính năng cho ứng dụng.
Ví dụ:

Khi một Activity mới được khởi tạo, nó sẽ được xếp
lên đầu của stack và trở thành running activity
Các Activity trước đó sẽ bị tạm dừng và chỉ hoạt động
trở lại khi Activity mới được giải phóng.


Android ICS 4.0: bổ sung API cho Calendar
Android Kit Kat 4.4: bổ sung API cho WirelessPrint

Kích thước màn hình:
Ứng dụng Android cần tương thích với nhiều kích cỡ
thiết bị, được phân chia thành hai thuộc tính:
Kích thước vật lý màn hình.
Độ phân giải (mật độ điểm ảnh)
57

Activity và độ ưu tiên ứng dụng

58

Activity và độ ưu tiên ứng dụng

Activity Stack là gì?

Một Activity cơ bản có 4 trạng thái:

Activity Stack hoạt động theo cơ chế LIFO (LAST IN
FIRST OUT)
Mỗi một Activity mới được mở lên nó sẽ ở bên trên
Activity cũ, để trở về Activity chỉ cần nhấn nút “Back”
để trở về hoặc viết lệnh. Tuy nhiên nếu nhấn nút
Home thì không thể dùng nút “Back” để quay lại màn
hình cũ được.

Active: Activity đang hiển thị trên màn hình
(foreground).

Paused: Activity vẫn hiển thị (visible) nhưng không thể
tương tác (lost focus).
Stopped: Activity bị thay thế hoàn toàn bởi Activity
mới sẽ tiến đến trạng thái stopped.
Inactive: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải
phóng các tiến trình theo nguyên tắc ưu tiên. Các
Activity ở trạng thái stopped hoặc paused cũng có thể
bị giải phóng và khi nó được hiển thị lại thì các Activity
này phải khởi động lại hoàn toàn và phục hồi lại trạng
thái trước đó.
59

60

15


9/16/2017

Activity và độ ưu tiên ứng dụng

Activity và độ ưu tiên ứng dụng
Thực hiện gọi các hàm quản lý trạng thái:

Mỗi Activity thường vòng đời có 3 trạng thái sau:

onStart
onRestart
onCreate
onPause

onResume
onStop
onDestroys

1- Running (đang kích hoạt)
2- Paused (tạm dừng)
3- Stopped (dừng – không phải
Destroyed)

61

Activity và độ ưu tiên ứng dụng

62

Activity và độ ưu tiên ứng dụng
Visible Lifetime và Foreground Lifetime

63

64

16


9/16/2017

Activity và độ ưu tiên ứng dụng

Activity và độ ưu tiên ứng dụng


Visible Lifetime và Foreground Lifetime

Cơ chế quản lý bộ nhớ:

Visible Lifetime:
Xảy ra từ sau khi gọi onStart –> cho tới lúc gọi
onStop : trong trường hợp này ta vẫn có thể thấy
màn hình Activity (có thể tương tác khi nó là
foreground, không tương tác được khi nó không
phải foreground)
Foreground Lifetime:
Xảy ra từ khi gọi onResume –> cho tới lúc gọi
onPause : trong suốt thời gian này Activity luôn
nằm ở trên cùng và Ta có thể tương tác được với


Android quản lý các ứng dụng dựa trên độ ưu tiên.
Nếu hai ứng dụng có cùng trạng thái thì ứng dụng nào
đã chạy lâu hơn sẽ có độ ưu tiên thấp hơn.
Nếu ứng dụng đang chạy một Service hay Content
Provider do một ứng dụng khác hỗ trợ thì sẽ có cùng
độ ưu tiên với ứng dụng đó.
Các ứng dụng sẽ bị đóng mà không có sự báo trước.

65

66

Activity và độ ưu tiên ứng dụng

Độ ưu tiên:

CHƯƠNG 2

GIAO DIỆN NGƯỜI DÙNG

67

68

17


9/16/2017

Nội dung

View & ViewGroup
View được sử dụng để tạo ra các điều khiển trên
màn hình cho phép nhận các tương tác từ người
dùng cũng như hiển thị các thông tin cần thiết.
View bao gồm hai dạng:

View & GroupView
Layouts trong Android
Các widgets cơ bản
Notification và Dialogs
Làm việc với Menus

View: các điều khiển đơn lẻ

ViewGroup: tập hợp nhiều điều khiển đơn lẻ

69

View & ViewGroup

70

View & ViewGroup

Thể hiện

Thao tác: có 4 thao tác chính:

Các View được thể hiện trên màn hình giao diện như
một hình chữ nhật tuỳ thuộc vị trí, kích thước, màu sắc
và nhận vào cũng như xử lý các tương tác có liên
quan.
Một số thể hiện của lớp View: TextView, ImageView,
SurfaceView…
ViewGroup cũng là một thể hiện của View.

Hiển thị nội dung thông qua phương thức settính>(Tham số)
Vd: TextView hiển thị văn bản, ImageView hiển thị hình ảnh…

Yêu cầu tương tác
Vd: dùng requestFocus để yêu cầu tương tác với điều khiển.

Thiết lập chế độ hiển thị thông qua phương thức

setVibility (hoặc thuộc tính visibility: trong XML)

Có thể xây dựng đối tượng View theo 2 cách

VISIBLE
INVISIBLE

Kéo thả và tuỳ chỉnh thuộc tính trong XML.
Thiết lập thông số và truy xuất trực tiếp trong Java
Code.

GONE

Xây dựng phương thức “lắng nghe”
Vd: bắt các sự kiện xảy ra trên điều khiển.
71

72

18


9/16/2017

View & ViewGroup

View & ViewGroup

Thuộc tính


Thuộc tính Id được đi kèm với đối tượng View
khi khai báo trong XML cho phép truy xuất trong
Java Code khi cần.
Ví dụ:

Id:
Khai báo kiểu số nguyên int, đánh dấu vùng nhớ của đối
tượng View.
Id có thể giống nhau cho các điều khiển khác nhau trong
cùng một tập tin giao diện.
Phương thức thiết lập: setId
Phương thức truy xuất: getId

Khai báo id trong XML
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="my_button_text"/>

Truy xuất trong JavaCode
Button myBtn =
(Button)findViewById(R.id.my_button);
73

View & ViewGroup

74

View & ViewGroup


Vị trí: cho biết tọa độ hiển thị View trên giao diện.

Kích thước: chiều ngang và chiều cao của một
đối tượng View.

Phương thức thiết lập/ truy xuấy
setLeft / getLeft
setTop / getTop
setRight / getRight
setBottom / getBottom
Vị trí của View tuỳ thuộc vào thuộc tính của đối tượng
Layout.

Kích thước của đối tượng View có thể thiết lập qua 3
thông số:
WRAP_CONTENT
MATCH_PARENT (API 8 trở lên)
FILL_PARENT
Một con số bất kỳ (tính theo dp/px/dip).

75

76

19


9/16/2017


View & ViewGroup

View & ViewGroup
Kích thước: chiều ngang và chiều cao của một
đối tượng View.

Canh lề nội dung trong JavaCode:
Phương thức thiết lập:

Phương thức thiết lập trong Java Code:

setPadding

Thiết lập thông qua đối tượng LayoutParams

Phương thức truy xuất:

Thuộc tính thiết lập trong XML:

getPaddingTop
getPaddingLeft
getPaddingRight
getPaddingBottom

layout_width
layout_height

Phương thức truy xuất:
getWidth
getHeight

getMeasuredWidth
getMeasureHeight
77

78

Layouts

Layouts
Trong Android, dùng Activity để hiển thị màn
hình. Layout định nghĩa một cấu trúc trực quan
cho giao di
ện người dùng
Mỗi activity sẽ chứa các View theo dạng cấu trúc
cây, nghĩa là một Layout gốc chứa các
view/layout con bên trong. (lưu ý Layout cũng là
một view)
Có hai cách để khai báo một layout:

Một số thuộc tính cơ bản
Layout_width, layout_height: chiều rộng của view
(fill_parent là to bằng kích thước của layout chứa view
này, wrap_content là vừa đủ nội dung cần hiển thị của
view)
Orientation: với LinearLayout, việc sắp xếp các view là
nằm kề nhau theo hàng ngang hoặc hàng dọc, ta khai

Khai báo trong file XML
Khởi tạo layout lúc chạy (runtime)


báo

orientation

để

chọn

sắp

theo

kiểu

nào

(horizontal/vertical)

79

80

20


9/16/2017

Layouts

Layouts

Giả sử cần thiết kế một màn hình như sau:

Một số thuộc tính cơ bản
Gravity: quy định các view nằm bên trong layout sẽ
đặt theo vị trí nào so với layout (trung tâm, trái, phải,
trên dưới…)
Weight: để các view phân chia tỉ lệ diện tích hiển thị
trên màn hình (tỉ lệ tính theo weight của từng view trên
tổng số weight, các view không khai báo weight thì sẽ
xem qua width và height)

81

Layouts

82

Cách tạo Layout và kết nối Layout vào Activity

Với LinearLayout, các view bên trong được đặt
kề nhau theo hàng ngang hoặc hàng dọc

Khi tạo một Android Project thì mặc nhiên sẽ có 1 Activity
được chỉ định chạy đầu tiên khi thực thi ứng dụng

Với ví dụ trên, ta phân tích như sau:
Nguyên tắc là phân nhóm các View liên tiếp kề nhau (như 3
TextView kề nhau theo hàng dọc hoặc hàng ngang) vào trong
một LL, phân rã từ lớn đến nhỏ.
Như vậy màn hình gồm 1 LL lớn bao bên ngoài, bên trong chia

thành 2 phần trên dưới rõ ràng vậy thuộc tính của LL này là dạng
dọc, sau đó chia đôi ra và phân tích tiếp.
Phần bên trên lại chia 2 theo hàng ngang
một LL dạng ngang,
lại chia đôi: một bên là 1 ImageView, một bên là 1 LL chứa 3
TextView theo hàng dọc.
Nửa bên dưới chứa 3 TextView kề nhau theo hàng ngang
vào 1 LL dạng ngang

cho
83

84

21


9/16/2017

Cách tạo Layout và kết nối Layout vào Activity

Cách tạo Layout và kết nối Layout vào Activity
Mở tập tin MainActivity.java

Đổi Layout mặc định bằng một Layout khác
Bước 1: Tạo một Layout: click chuột phải vào app/ chọn New/
chọn XML/ chọn Layout XML File

Dòng lệnh: setContentView(R.layout.activity_main);
dùng để kết nối Layout vào Activity.


85

86

Cách tạo Layout và kết nối Layout vào Activity

Cách tạo Layout và kết nối Layout vào Activity

Đổi Layout mặc định bằng một Layout khác

Đổi Layout mặc định bằng một Layout khác
Bước 3: quan sát Android Project. Nhắp đúp vào file
my_new_layout.xml và kéo thả một số control vào
giao diện

Bước 2: Đặt tên cho Layout, rồi nhấn nút Finish

87

88

22


9/16/2017

Cách tạo Layout và kết nối Layout vào Activity

Cách tạo Layout và kết nối Layout vào Activity

Đổi Layout mặc định bằng một Layout khác

Khởi động chương trình và ứng dụng sẽ chạy
Layout mới này:

Bước 4: vào lại MainActivity.java. Sửa lại dòng lệnh
setContentView thành:

89

Layouts

90

LinearLayout
Là đối tượng ViewGroup, cho phép trình bày các
thành phần giao di
ện theo chi
ều ngang hoặc
chi
ều dọc
Hướng của layout được chỉ định bởi thuộc tính:
android:orientation, nhận gi
á trị vertical hoặc
horizontal.

Các Layout thông dụng:
LinearLayout
FrameLayout
TableLayout

RelativeLayout
AbsoluteLayout

91

92

23


9/16/2017

LinearLayout

LinearLayout
Có thể dùng margin, gravity, weight để hỗ trợ
cho việc thiết kế.
Dùng Properties để thiết lập các thuộc tính cho
control
Vd: để căn lề các control
trên giao diện ta dùng
layout_gravity

LinearLayout cho phép chỉ định trọng số
(layout_weight) cho các thành phần bên trong
nó.
Gi
á trị trọng số xác định mức độ quan trọng của
thành phần giao di
ện.

Thành phần giao di
ện nào (View) có trọng số
càng cao, thì càng được cấp phát khoảng trống
nhi
ều trong phần khoảng trống dư còn lại của
layout.
Trọng số mặc định của View là 0.

93

RelativeLayout

94

RelativeLayout
Một số thuộc tính cho phép định vị View:

RelativeLayout là một ViewGroup cho phép hi
ển thị các

android:layout_alignTop: cạnh trên của view này kết
nối với cạnh trên của view được tham chiếu đến
android:layout_alignBottom: cạnh dưới của view này
kết nối với cạnh dưới của view được tham chiếu đến
android:layout_alignLeft: cạnh trái của view này kết
nối với cạnh trái của view được tham chiếu đến
android:layout_alignRight: cạnh phải của view này kết
nối với cạnh phải của view được tham chiếu đến
android:layout_above: cạnh dưới của view này ở trên
view được chỉ định trong thuộc tính.

android:layout_below: view này nằm bên dưới view
được chỉ định trong thuộc tính.

thành phần giao di
ện bên trong nó một cách linh động
theo vị trí tương đối.
Vị trí của mỗi View có thể được chỉ định tương đối so với
các thành phần xung quanh (bên trái, bên phải, phía
trên, phía dưới) hoặc so với cha của nó (canh bên lề trái,
phải, trên, dưới, gi
ữa).

95

96

24


9/16/2017

RelativeLayout

RelativeLayout
Một số thuộc tính cho phép định vị View:

Ví dụ: sử dụng RelativeLayout

android:layout_alignParentTop: Nếu bằng “true”, view
này canh lề trên với view cha của nó, nghĩa là cạnh

trên của view này trùng với cạnh trên của view cha.
android:layout_alignParentBottom: Nếu true, làm cạnh
dưới của view này kết nối với cạnh dưới của view cha.
Phải là một giá trị Boolean, hoặc "true" hoặc "false"
android:layout_centerVertical: Nếu bằng “true”, view
này được canh ở gi
ữa theo chi
ều dọc so với view cha
của nó.
android:layout_toRightOf: định vị view này nằm bên
phải so với view được chỉ định trong thuộc tính.
android:layout_toLeftOf: định vị view này nằm bên trái
so với view được chỉ định trong thuộc tính
97

RelativeLayout

98

FrameLayout

Có thể sử dụng công cụ để thiết kế

Đặc điểm: khi gắn các control lên giao diện thì
các control này sẽ luôn được “Neo” ở góc trái
trên cùng màn hình, không cho phép thay đổi vị
trí của các control
Các control đưa vào sau nó sẽ đè lên trên và
che khuất control trước đó (trừ khi ta thiết lập
transparent cho control sau)


99

100

25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×