1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình di động - Bài 2: Activity (giao diện tương tác)

76 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 76
Dung lượng 2,28 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Lập trình di động - Bài 2: Activity (giao diện tương tác), cung cấp cho người học những kiến thức như: Bắt đầu với một ứng dụng giản đơn; Giao diện phát triển của Android Studio; AndroidManifest.xml; Các bước phát triển ứng dụng android; Các thành phần của một ứng dụng android; Khái niệm activity (giao diện tương tác);...Mời các bạn cùng tham khảo!

Trang 1

LẬP TRÌNH DI ĐỘNG

Bài 2: activity (giao diện tương tác)

Trang 2

Nội dung

1 Bắt đầu với một ứng dụng giản đơn

2 Giao diện phát triển của Android Studio

3 AndroidManifest.xml

4 Các bước phát triển ứng dụng android

5 Các thành phần của một ứng dụng android

6 Khái niệm activity (giao diện tương tác)

7 Vòng đời của một activity

Trang 3

Phần 1

Bắt đầu với một ứng dụng giản đơn

3

Trang 4

Thiết kế giao diện

▪ Hiện thị lời chào

với tên lấy từ nội

dung nhập vào

EditText

Trang 5

Thiết kế giao diện

4

Trang 6

Thiết kế giao diện

ID: thuộc tính định danh công cụ,

dựa vào id này để lấy đúng điều khiển khi cần tham chiếu

Text: nội dung hiển thị trên công cụ

Trang 7

Thiết kế giao diện

4

Button Thoát:

- Id : btnExit

- Text: Thoát Button Hello:

- Id : btnHello

- Text: Hello EditText: Name:

- Id: edtName

Trang 8

Thiết kế giao diện

Mã XML tự sinh từ các công cụ được tạo ra từ giao diện Design

Button Thoát

Button Hello

EditText Name

Trang 9

Viết mã xử lý

Trang 10

Viết mã xử lý

Trang 11

Viết mã xử lý

Khai báo các đối tượng từ những lớp quản lý công cụ điều

khiển từ thư viện có sẵn

Khai báo các điều khiển trên giao diện đã thiết kế

Tại sao?

Trang 12

Viết mã xử lý

Liên kết(ánh xạ) các điều khiển từ giao diện vào mã lệnh

Trang 13

Viết mã xử lý

Gán sự kiện vào điều khiển sau khi được ánh xạ

Trang 14

Viết mã xử lý

Giải thích: gọi phương thức setOnClickListener từ đối tượng

Xử lý sự kiện click của nút Thoát (btnExit)

Trang 15

Viết mã xử lý

False: Thông báo

“Xin chào” giá trị trong editName “đến với android”

Xử lý sự kiện click của nút Hello (btnHello Button).

edtName

là rỗng

True: thông báo

“Xin chào Android”

Trang 16

Viết mã xử lý

Xử lý sự kiện click của nút Hello (btnHello Button).

Trang 17

Viết mã xử lý

- Toast: quản lý hiển thị thông báo (giống như msgBox bên VS C#):

- Phương thức makeText: tạo thông báo (tạm hiểu) gồm các tham số

o getAppicationContext(): tham số ngữ cảnh ứng dụng dành cho

những đối tượng thực thi tách biệt với Activity hiện hành

o Nội dung thông báo

o Toast.LENGTH_SHORT: thời gian hiển thị thông báo (ngắn)

o Phương thức Show(): hiển thị thông báo khi tham chiếu makeText

Xử lý sự kiện click của nút Hello (btnHello Button).

edtName.getText().ToString(): lấy nội dung trong textView (edit

text) và chuyển sang kiểu string

Toast.makeText(getApplicationContext(),

“Nội dung" ,

Toast.LENGTH_SHORT).show();

Trang 18

Chạy thử ứng dụng

▪Hàm “onCreate” khởi chạy sẽ thiết lập giao diện và

xử lý sự kiện

▪Khi bấm nút “THOÁT”: hàm xử lý sự kiện ứng với id

btnExit được kích hoạt

▪Khi bấm nút “HELLO”: hàm xử lý sự kiến ứng với id

btnHello được kích hoạt

Trang 19

Chạy thử ứng dụng

7

Nhập tên vào edtName & bấm HELLO

Bỏ trống edtName & bấm HELLO

Trang 20

Phần 2

Giao diện phát triển của

Android Studio

Trang 21

Giao diện của Android Studio

9

Trang 22

Giao diện của Android Studio

Trang 23

Giao diện của Android Studio

▪Cửa sổ dự án cho phép người

▪ Nhóm “ Gradle Scripts ”: các tham

số điều khiển quá trình dịch và

đóng gói ứng dụng

11

Trang 24

Giao diện của Android Studio

Trang 25

Giao diện của Android Studio

13

Trang 26

Phần 3

AndroidManifest.xml

Trang 27

▪Trước khi chạy, project cần phải được build (dựng),

quá trình này phức tạp, nhưng có 2 bước chính

▪ Dịch mã nguồn thành mã nhị phân

▪ Nén tất cả các file mã nhị phân và các file liên quan

thành một file duy nhất, có phần mở rộng là apk

▪Khi cài đặt ứng dụng, hệ thống giải nén file apk và

đọc file AndroidManifest.xml ở thư mục gốc

▪ “AndroidManifest.xml” chứa các khai báo về ứng dụng

▪ Qua việc phân tích nội dung của file, hệ thống biết ứng dụng có thể dùng vào việc gì

15

Trang 28

▪Các thông tin cơ bản trong “AndroidManifest.xml”

▪ Các thông tin về ứng dụng (tên package, tên ứng dụng, biểu tượng của ứng dụng,…)

▪ Các quyền cần có để chạy ứng dụng (quyền truy xuất

internet, quyền đọc contact, quyền đọc SD card,…)

▪ Phiên bản API tối thiểu có thể chạy ứng dụng

▪ Các tính năng phần cứng cần thiết cho ứng dụng (GPS, camera, bluetooth,…)

▪ Các bộ API liên kết sử dụng trong ứng dụng (Google

Maps API, AdMod,…)

Trang 29

▪Các thông tin cơ bản trong “AndroidManifest.xml”

▪ Mô tả về các activity (màn hình) của ứng dụng

• Thông tin về activity (tên activity, tên class,….)

• Xác định xem activity nào là giao diện khởi động của ứng dụng

▪ Mô tả về các service (dịch vụ) mà ứng dụng cung cấp

• Thông tin về service (tên dịch vụ, class xử lý dịch vụ,…)

▪ Mô tả về các broadcast receiver mà ứng dụng cung cấp

• Thông tin về receiver (tên receiver, class xử lý,…)

• Các loại tín hiệu gửi đến receiver

▪ Mô tả về các content provider mà ứng dụng cung cấp

• Các đối tượng truy xuất content provider

• Các quyền truy xuất content provider

17

Trang 30

AndroidManifest.xml

Trang 31

Phần 4

Các bước phát triển ứng dụng

android

19

Trang 32

Các bước phát triển android apps

1 Nghiên cứu nhu cầu

2 Xây dựng giải pháp

▪ Giải pháp có thể gồm các thành phần ngoài android

(chẳng hạn như web service)

▪ Đôi khi giải pháp không đáp ứng được nhu cầu do hạn

Trang 33

Viết ứng dụng

▪Thiết kế phác họa giao diện (mockup)

▪Chuẩn bị các tài nguyên (file ảnh, file âm thanh,

video, văn bản,…)

▪Thiết kế giao diện

▪ Các activity (mỗi giao diện là một activity)

Trang 34

Phần 5

Các thành phần của một ứng

dụng android

Trang 35

Ứng dụng android

▪Mỗi ứng dụng android đều chạy trên một tiến trình

riêng trong một máy ảo riêng biệt

▪Mỗi ứng dụng android là tập hợp các class, mỗi

class có mục đích cụ thể

▪Hệ điều hành sẽ chủ động gọi thực thi class phù

hợp khi thấy cần thiết

▪ Như vậy ta thấy ứng dụng android hơi có tính “bị động”, các class sẽ được hệ điều hành chủ động gọi ra chạy,

điều này khác với cách viết thông thường (hàm main

chạy trước tiên, hàm main sẽ quyết định quá trình thực thi của ứng dụng)

23

Trang 36

▪Một activity là một màn hình giao diện, một ứng

dụng gồm một hoặc nhiều activity

▪Android OS cung cấp sẵn một số lượng khá lớn các

activity tiêu chuẩn

▪Ví dụ:

▪ Giao diện quay số và gọi điện

▪ Giao diện settings

▪Lập trình viên có thể tự viết activity riêng hoặc sửdụng các activity đã có

Trang 38

▪Service là một tiến trình thực thi một công việc

chạy ngầm (thường không có hoặc rất ít tương tácvới người sử dụng)

▪Ví dụ:

▪ Điều khiển việc chạy file nhạc

▪ Thực hiện việc download/upload dữ liệu

▪ Theo dõi và cảnh báo dung lượng pin

▪ Theo dõi xem có cập nhật MXH hay không?

▪ Ghi nhận ngầm thông tin (GPS chẳng hạn)

Trang 39

Content provider

▪Content provider (còn gọi tắt là provider) dùng

quản lý việc chia sẻ (dùng chung) một nguồn dữ

liệu nào đó Ví dụ:

▪ Danh sách người dùng trên điện thoại

▪ Dữ liệu về các cuộc gọi

▪ Dữ liệu về tin nhắn

▪Bằng cách chia sẻ dữ liệu để dùng chung, Android

OS làm cho các ứng dụng dễ dàng cung cấp trải

nghiệm nhất quán cho người dùng (chẳng hạn cácứng dụng thoại dùng chung danh bạ điện thoại)

27

Trang 40

Broadcast receiver

▪Broadcast receiver (còn gọi tắt là receiver) là một

thành phần hồi đáp những tín hiệu được phát ra

trên toàn hệ thống Ví dụ:

▪ Tín hiệu pin yếu

▪ Tín hiệu mất kết nối mạng

▪ Tín hiệu có cuộc gọi tới

▪Lập trình viên có thể chặn các tín hiệu này và xử lýtheo cách riêng của mình Chẳng hạn:

▪ Ứng dụng ngắt cuộc gọi đến từ số điện thoại quấy rối

Trang 41

▪Intent là cơ chế chuẩn của Android OS để truyền

thông tin giữa các thành phần cho nhau (giữa

activity với nhau, activity cho service, receiver choservice,…)

Trang 42

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

Trang 43

Cách thực thực thi điển hình

Content Providers Services

Broadcast receiver Notification

Intent

31

Trang 44

Phần 6

Khái niệm activity (giao diện

tương tác)

Trang 45

▪Các activity là thành phần cơ bản của bất kỳ một

ứng dụng android nào, chúng cung cấp giao diện

người dùng cho ứng dụng

▪Lớp Activity đảm nhận việc tạo ra một cửa sổ

(window), sau đó ta có thể đặt lên đó một giao

diện bằng lệnh setContentView(View)

▪Thông thường mỗi màn hình sẽ là một activity, mộtứng dụng thường gồm nhiều activity chuyển qua lạilẫn nhau

33

Trang 46

▪Một activity có thể mang nhiều dạng khác nhau:

▪ Cửa sổ chiếm toàn bộ màn hình

▪ Cửa sổ chiếm một phần màn hình

▪ Nằm lồng bên trong một activity khác

▪Để có thể sử dụng, mọi activity đều phải được khai

báo trong AndroidManifest.xml với thẻ <activity>

Trang 47

Tạo Activity

Mỗi activity trình bày một màn hình, class xử lý

activity bao giờ cũng kế thừa lớp Activity của Android

35

Trang 48

Khởi tạo giao diện bên trong

• Có 2 cách đơn giản để tạo giao diện cho activity

• Tự tạo giao diện bằng viết mã

@Override public void onCreate(Bundle icicle) { super.onCreate(icicle);

MyView myView = new MyView(this);

setContentView( myView );}

• Tạo mới bằng công cụ:

File → new → Activity hoặcR_click project → new → Activity

Trang 49

Gọi activity khác

▪Gọi trực tiếp activity đã định nghĩa

Intent i = new Intent(this, MyActivity class); startActivity(i);

▪Gọi gián tiếp activity

Intent i = new Intent(Intent.ACTION_SEND);

i.putExtra(Intent.EXTRA_EMAIL, addList);

startActivity(i);

▪Khi gọi gián tiếp, hệ thống tự chọn activity phù hợp

nhất với yêu cầu (sẽ được thảo luận sau)

37

Trang 50

Thảo luận về intent

- Yêu cầu Khi bấm vào nút gửi:

→Nếu edtName rỗng thì hiển

thị thông báo yêu cầu nhập

→Ngược lại, tiến hành gọi một

activity_two và gửi dữ liệu

nhập từ edtname và hiển thị

trên activity_two

- Bấm vào nút trở về thì quay

lại MainActivity

Trang 51

Một ví dụ về Intent

37

Trở lại ví dụ trên - tiến hành tạo them một activity tên activity_two:

Trang 52

Một ví dụ về Intent

Thiết kế giao diện cho Activity_two như sau:

Trang 53

Một ví dụ về Intent

37

Trên giao diện ActivityMain thêm một nút lệnh như sau:

Trang 55

Một ví dụ về Intent

37

Viết code cho nút gửi btnSend

Trang 56

Một ví dụ về Intent

Giải thích thêm:

Tạo đối tượng intent với mục tiêu là Activity_Two

Dữ liệu gửi kèm theo

Yêu cầu khởi động Activity chỉ định trong Intent

Trang 57

Một ví dụ về Intent

37

Giải thích thêm:

Tạo đối tượng intent với mục tiêu là Activity_Two

Dữ liệu gửi kèm theo

Yêu cầu khởi động Activity chỉ định trong Intent

startActivity(i);

Trang 58

Một ví dụ về Intent

Viết code cho Activity_Two: nhận dữ liệu và hiển thị

Tạo một đối tượng intent để nhận giá trị intent được gửi đến & Lấy

Trang 59

Một ví dụ về Intent

37

Viết code cho Activity_Two: ánh xạ công cụ và sử lý sự kiện cho nút lệnh trở về (btnBack)

Trang 60

Một ví dụ về Intent

Trang 61

Phần 7

Vòng đời của một activity

38

Trang 62

Vòng đời của một activity

▪Các activity được quản lí trong một stack chứa

activity (cơ chế vào trước ra sau):

▪ Khi ứng dụng được mở lên thì activity chính sẽ được

tạo ra, nó sẽ được thêm vào đỉnh của stack

▪ Lúc này chỉ có duy nhất activity trên cùng là hiển thị nội dung đến người dùng

▪ Tất cả các activity còn lại đều chuyển về trạng thái dừng hoạt động

▪ Khi một activity bị đóng nó sẽ bị loại khỏi stack,

activity nằm dưới đó sẽ chuyển từ trạng thái tạm

Trang 63

Các sự kiện trong vòng đời của APP

▪Khi một activity bị chuyển qua chuyển lại giữa cáctrạng thái, nó được cảnh báo việc chuyển này bằnghàm chuyển trạng thái (transition)

▪Có thể viết lại các hàm chuyển này nếu cần làm các

công việc giúp việc chuyển trạng thái suôn sẻ

1 protected void onCreate(Bundle b);

2 protected void onStart();

3 protected void onRestart();

4 protected void onResume();

5 protected void onPause();

6 protected void onStop();

7 protected void onDestroy();

40

Trang 64

Các hàm trong vòng đời activity

▪onCreate( ): gọi khi activity khởi tạo

▪onStart(): gọi khi acivity xuất hiện trên màn hình

▪onResume(): gọi ngay sau onStart hoặc người dùng

focus, hàm này đưa ứng dụng lên top màn hình

▪onPause(): gọi khi hệ thống focus đến activity khác

▪onStop(): gọi khi activity bị che hoàn toàn

▪onRestart(): gọi khi ứng dụng khởi chạy lại

▪onDestroy(): gọi khi ứng dụng chuẩn bị được gỡ

Trang 65

Vòng đời của một activity

▪Một activity có bốn trạng thái:

▪ Active hay Running : activity đang chạy trên màn hình

▪ Paused : khi một activity mất focus nhưng vẫn đang chạy trên màn hình (một activity trong suốt hoặc một activity không chiếm toàn bộ màn hình thiết bị đè lên)

▪ Stopped : khi một activity bị che khuất hoàn toàn bởi

một activity khác

▪ Killed hay Shutdown : khi một activity đang Paused hay Stopped, hệ thống có thể xóa activity ấy nếu cần (chẳng hạn như cần bộ nhớ vào việc khác)

42

Trang 66

Vòng đời của một activity

Trang 67

Ví dụ:Vòng đời của một activity

43

Trở lại ví dụ trên - tiến hành tạo các hàm sau:

protected void onStart() {

super.onStart();

Log.i("lifeactivity","On Start");}

protected void onRestart() {

super.onRestart();

Log.i("lifeactivity","On Restart");}

protected void onStop() {

super.onStop();

Log.i("lifeactivity","On Stop");}

protected void onPause() {

super.onPause();

Log.i("lifeactivity","On Pause");}

protected void onResume() {

super.onResume();

Log.i("lifeactivity","On Resume");}

protected void onDestroy() {

super.onDestroy();

Log.i("lifeactivity","On Destroy");}

Trang 68

Ví dụ:Vòng đời của một activity

Thêm dòng lệnh:

Log.i("lifeactivity","On Create");}

vào hàm onCreate đã được tạo sẵn

Giải thích thêm:

- Logcat là một cơ chế hiển thị các dòng thông tin của hệ thống, gọi là các log,

- Logcat hiển thị tất cả các thông tin một cách tức thời, giúp thuận tiện cho việc

tìm kiếm và gỡ lỗi

- Các hàm cụ thể của lớp Log này như sau.

o v(String, String) in ra log dạng verbose.

o d(String, String) in ra log dạng debug.

o i(String, String) in ra log dạng information.

Trang 69

Ví dụ:Vòng đời của một activity

43

Giải thích thêm:

o i(String1, String2) in ra log dạng information

o String1 : giá trị tag dùng để phân biệt nhóm thông tin dùng để lọc

thông tin

o String2 : giá trị thông tin cần hiển thị

Trang 70

Ví dụ:Vòng đời của một activity

Trạng thái khi chưa thực thi ứng dụng

Trang 71

Ví dụ:Vòng đời của một activity

43

Trạng thái khi ứng dụng được thực thi Đang hiển thị lên màn hình người dùng

Trang 72

Ví dụ:Vòng đời của một activity

Trạng thái khi bấm nút home

Giao diện ứng dụng ẩn đi – trở về màn

hình trước đó

Trang 73

Ví dụ:Vòng đời của một activity

43

Trạng thái khi ứng dụng được

gọi lại

Trang 74

Ví dụ:Vòng đời của một activity

Trạng thái khi bấm nút

Thoát trên ứng dụng

Trang 75

Thảo luận:

43

Yêu cầu khảo sát vòng đời

activity_two

Ngày đăng: 09/12/2021, 10:05

HÌNH ẢNH LIÊN QUAN

Hình tr ư ớc đó - Bài giảng Lập trình di động - Bài 2: Activity (giao diện tương tác)
Hình tr ư ớc đó (Trang 72)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm