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
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 nó
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:
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)