Tải bản đầy đủ (.docx) (30 trang)

Tiểu luận môn lập trình hướng đối tượng cơ bản về lập trình ANDROID và ứng dụng

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 (2.37 MB, 30 trang )

BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG
---------------------------------------

Đề tài: “Cơ bản về lập trình ANDROID và ứng dụng”

Mơn:Lập trình hướng đối tượng
Thầy:Nguyễn Mạnh Sơn

1


MỤC LỤC
LỜI NÓI MỞ ĐẦU
CHƯƠNG 1:TỔNG QUAN VỀ ANDROID
I.Android và lịch sử phát triển
II.Các phiên bản của Android
III.Các thành phần của Android
3.1.Thành phần của 1 chương trinh Android
3.2. Thành phần giao diện một Widget.
CHƯƠNG 2: LẬP TRÌNH CƠ BẢN ANDROID
I.Cấu trúc một ứng dụng Android
II.Activity Life-Cycle
III.Android Layout
1.RelativeLayout
2. LinearLayout
3.GridLayout
4.TableLayout
5. FrameLayout
6.ConstraintLayout
CHƯƠNG 3:DEMO ỨNG DỤNG


I.Phân tích chương trình
II.Nội dung chương trình
TÀI LIỆU THAM KHẢO

2


LỜI NÓI MỞ ĐẦU
Mạng điện thoại di động xuất hiện tại Việt Nam từ đầu năm 1990 và theo thời gian số
lượng các thuê bao cũng như các nhà cung cấp dịch vụ di động tại Việt Nam ngày càng
tăng.Do nhu cầu trao đổi thông tin ngày càng tăng và nhu cầu sử dụng sản phẩm cơng
nghệ cao nhiều tính năng,cấu hình cao,chất lượng tốt,kiểu dáng mẫu mã đẹp,phong phú
nên nhà cung cấp phải luôn luôn cải thiện, nâng cao những sản phẩm của mình.Do đó
việc xây dựng mới đầy tiềm năng và hứa hẹn nhiều sự phát triển vượt bậc của ngành khoa
học kĩ thuật.
Cùng với sự phát triển của thị trường điện thoại dị động là sự phát triển mạnh mẽ của xu
hướng lập trình phần mềm ứng dụng cho các thiết bị di động.Phần mềm,ứng dụng cho
điện thoại di động hiện nay rất đa dạng và phong phú trên các hệ điều hành di động cũng
phát triển mạnh mẽ và đang thay đổi từng ngày. Các hệ điều hành J2ME,
Android,IOS,Hybrid,Web dased Mobile Application đã có rất phát triển trên thị trường
truyền thống di dộng
Trong vài năm trở lại đây, hệ điều hành Android ra đời với sự kế thừa những ưu việt của
các hệ điều hành ra đời trước và sự kết hợp của nhiều công nghệ tiên tiến nhất hiện nay,đã
được nhà phát triển công nghệ rất nổi tiếng hiện nay là Google .Android đã nhanh chóng
là đối thủ cạnh tranh mạnh mẽ với các hệ điều hành trước đó và đang là hệ điều hành di
động của tương lai và được nhiều người ưa chuộng nhất.

3



CHƯƠNG 1:TỔNG QUAN VỀ ANDROID
I. Android và lịch sử phát triển:
Adroid là hệ điều hành trên điện thoại di động (và hiện nay là cả trên một số đầu
phát HD, HD Player, TV) phát triển bởi Google và dựa trên nền tảng Linux. Lập trình
android là một lập trình ứng dụng di động phổ biến. Trước đây, Android được phát triển
bởi cơng ty liên hợp Android ( sau đó được Google mua lại vào năm 2005).
Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java. Sự ra mắt
của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị
cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thơng nhằm
mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai.

4


II.Các phiên bản HĐH Android:
Android đã trải qua một số các cập nhập kể từ lần đầu phát hành.Những cập nhập này
nhìn chung có nhiệm vụ vá các lỗ hổng và thêm các tính năng mới vào hệ điều hành

Android những thế hệ đầu tiên 1.0(9/2008) và 1.1(2/2009) chưa có tên gọi chính
thức .Từ thế hệ tiếp theo,mỗi bản nâng cấp đều được đặt với những mã tên riêng dựa theo
tên các bánh ngọt theo thứ tự bảng chữ cái từ “C-D-E-F-G-H-I” Hiện nay phiên bản mới
nhất là Android 10.

5


III. Các thành phần của Android:
3.1 Thành phần của 1 chương trinh Android:
1. Activity:
– Hiểu một cách nơm na thì Activity tương tự như khái niệm Window (cửa sổ hay Form)

trong hệ điều hành Windows. Khi khởi động một ứng dụng, bao giờ cũng có một Activity
được gọi, hiển thị màn hình giao diện của ứng dụng cho phép người dùng tương tác.
2. Intent:
– Được sử dụng để truyền các thông báo nhằm khởi tạo một Activity hoặc Service để thực
hiện cơng việc bạn mong muốn
– Ví dụ: khi mở một trang web, bạn sẽ gửi một intent đi để tạo một Activity mới hiển thị
trang web đó

6


Dưới đây là vòng hoạt động của 1 ứng dụng android:

Quá trình hoạt động của Itent

7


3. Broadcast Receiver:
– Thành phần thu nhận các intent từ bên ngồi gửi tới
– Ví dụ: bạn viết một chương trình thay thế cho phần gọi điện thoại mặc định của
Android, khi đó, bạn cần 1 Broadcast Receiver để nhận các intent là các cuộc gọi đến
4. Content Provider:
– Kho dữ liệu chia sẻ, được dùng để quản lý và chia sẽ dữ liệu giữa các ứng dụng
– Ví dụ: thông tin người dùng lưu trong contact, dữ liệu lưu trữ trên SQL Lite, dữ liệu lưu
trữ trong các tận tin
5. Manifest File
Trước khi Android có thể khởi động một thành phần ứng dụng, nó phải
biết rằng thành phần đó tồn tại. Vì vậy, ứng dụng khai báo những thành phần của
mình trong một manifest file được gắn vào Android package, file.apk này cũng

giữ chứa mã của ứng dụng và các tài nguyên.
Nó thực hiện một số bổ sung để khai báo các thành phần của ứng dụng, như là nêu
tên các thư viện ứng dụng cần đến, và xác định các quyền hạn của ứng dụng muốn được
cấp.
Ví dụ như nó khai báo các Activity trong chương trình của chúng ta, khi
khởi động chương trình thì Activity nào sẽ được thực hiện đầu tiên, các quyền
truy cập Internet, SDCard, hay các vấn đề về gửi nhận tin nhắn, cuộc gọi...
6. Giao diện người dùng trong Android:
Trong một ứng dụng Android, giao diện người dùng được xây dựng bằng
cách sử dụng View và ViewGroup đối tượng. Có nhiều loại quan điểm và các
nhóm view, mỗi một trong số đó là hậu duệ của lớp View. View objects là các
đơn vị cơ bản của biểu hiện giao diện người dùng trên nền tảng Android.
– Ví dụ: thơng tin người dùng lưu trong contact, dữ liệu lưu trữ trên SQL Lite, dữ liệu lưu
trữ trong các tận tin

8


7. Notification:
– Đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt động
Activity, Service, Broadcast Receiver và Content Provider là những thành phần chính cấu
thành nên ứng dụng Android, bắt buộc phải khai báo trong AndroidManifest.
3.2 Các thành phần giao diện Widget:
Có rất nhiều cách bố trí giao diện.Sử dụng nhiều hơn và các loại khác nhau của các view
group, bạn có thể cấu trúc views con và view groups trong vô số cách.Xác định các nhóm
xem được cung cấp bởi android bao gồm LinearLayout,
RelativeLayout,TableLayout,GrildLayout và khác.
Widget là một object View phục vụ như một giao diện để tương tác với người
dùng.Android cung cấp một tập các widgets thực hiện đầy đủ, giống như các
button,checkbox, và text_entry,do đó bạn có thể nhanh chóng xây dựng giao diện người

dùng của bạn. Một số widgets được cung cấp bởi Android phức tạp hơn, giống như một
date picker,clock,và zoom control.Nhưng nó khơng giới hạn trong các loại widgets được
cung cấp bởi các nền tảng Android.

CHƯƠNG II: LẬP TRÌNH CƠ BẢN ANDROID.

9


I.Cấu trúc của một ứng dụng Android:
 Java Source: là tập tin MainActivity kế thừa class Activity.Activity là một class, mà
lớp lại tạo ra một window mặc định trên màn hình. Ở đây chúng ta có thể đặt thêm
các thành phần (components) khác: Button, EditText, TextView, Spinner v.v. Nó
giống như Frame của Java AWT.Activity có các phương thức tạo ra vòng
đời : onCreate, onStop, OnResume v.v.

10


 Generated R.java: Tập tin R.java được tạo ra một cách tự động, nó chứa cá ID của
tất cả các tài nguyên trong thư mục res. Bất cứ khi nào bạn tạo một componet
trong activity_main, thì một ID được tạo ra trong tập tin R.java. ID này sẽ được sử
dụng trong source Java sau này.

11


 Contains apk file: tập tin được tạo tự động nhằm giúp ứng dụng chạy trên thiết bị
di động.
 Thư mục Resources: chứa tập tin các tài nguyên activity_main, string,styles,..Hay cụ

thể chứa các giao thức của ứng dụng như giao diện, hiển thị dữ liệu.
o drawable: Đây chính là thư mục chứa các file hình ảnh, config xml… trong
dự án android.
o layout: Đây chính là thư mục lưu các file xml về giao diện của các màn
hình ứng dụng của bạn.Ở trên phần số 1 bạn có các package lưu các class,
các class này sẽ kết nối với các file xml trong thư mục layout nào để tạo nên
một màn hình có giao diện cho người dùng thao tác.
o values: để lập trình viên định nghĩa ra các thuộc tính, giao diện, các
config… để sử dụng cho đồng nhất và đồng thời sẽ giúp người dùng tối ưu
code khi chỉnh sửa sau này.Tập tin values gồm:
 color.xml: đây là file định nghĩa các mã màu trong dự án android của
ban, khi sử dụng màu nào bạn chỉ cần gọi tên tên mã màu đã định
nghĩa trong đây ra là xong.
 dimens.xml: đây là file mà bạn sẽ định nghĩa ra các kích thước như
cỡ chữ, chiều cao, chiều rộng các view.
 strings.xml: đây là file định nghĩa các đoạn văn bản trong ứng dụng
Android của bạn ví dụ như bạn có 1 đoạn văn bản mà sử dụng đi sử
dụng lại trong các màn hình khác nhau, khi bạn set cứng ở nhiều nơi
thì khi cần chỉnh sửa thì phải tìm hết tất cả và sửa lại.Bây giờ bạn
định nghĩa đoạn văn bản đó trong đây và khi dùng thì gọi ra sử dụng
và sau này chỉnh sữa bạn chỉ cần sửa trong đây là xong, nó sẽ apply
tất cả mọi nơi.
 styles.xml: đây chính là nơi định nghĩa các giao diện của các file
layout trong thư mục layout mình đã nói phía trên.Kiểu như thế này
nhé, bạn muốn chỉnh một nút Button chiều cao 10dp, chiều rộng
10dp, màu xanh… và bạn lại sử dụng kiểu thiết kế này ở 5 màn hình
khác nhau.Bạn khơng thể mỗi màn hình lại định nghĩa lại như thế sẽ
làm duplicate code (lặp lại) và sẽ khơng tối ưu tí nào cả.Thay vào đó
bạn chỉ cần định nghĩa một file giao diện như trên và ở mỗi màn hình
bạn chỉ cần gọi là xong.

 Mainfest: là tập tin AndroidManifest.xml chứa thông tin về package của ứng dụng,
bao gồm các thành phần của ứng dụng như activities, services, broadcast receivers,
content providers v.v. Có chức năng:
o Cấp quyền một số phần trong ứng dụng.

12


o Khai báo các API mà ứng dụng sẽ sử dụng.
o Khai báo các thông tin về ứng dụng.
II.Activity Life-Cycle:
Android Project khi được thực hiện thành cơng sẽ được đóng gói thành tập tin
*.apk, tập tin này được gọi là Application. Một Application có thể có một hoặc nhiều
Activity, mỗi Activity là một vòng đời riêng và độc lập với các Activity khác.
Khi tạo mới một Activity nào đó cần phải khai báo, và trong nhiều Activity sẽ có
một Activity chạy chính (Activity xuất hiện đầu tiên). Các phần khai báo này được khai
báo trong AndroidMainifest.xml.

Quá trình xử lý các Activity.
Mỗi Activity được kích hoạt được hệ thống đẩy vào BlackStack. Sau khi kích hoạt
lần lượt gọi đến các callback onCreate(), onStart(), onResume() sẽ được hệ thống gọi đến.
Sau khi gọi đến các callback trên, thì Activity mới chính thức được xem là đang
chạy (Activity running). Sơ đồ vòng đời một Activity:

13


Lúc này, nếu có bất kỳ Activity nào khác chiếm quyền hiển thị, thì Activity hiện tại
sẽ rơi vào trạng thái onPause(). Nếu sự hiển thị của Activity khác làm cho Activity mà
chúng ta đang nói đến khơng cịn nhìn thấy nữa thì onStop() sẽ được gọi ngay sau đó Nếu

Acvitity đã vào onPause() rồi, tức là đang bị Activity khác đè lên, mà người dùng sau đó
quay về lại Activity cũ, thì onResume() được gọi. Cịn nếu Activity đã vào onStop() rồi,
mà người dùng quay về lại Activity cũ thì onRestart() được gọi. Trong cả hai trường hợp
Activity rơi vào onPause() hoặc onStop(), nó sẽ rất dễ bị hệ thống thu hồi (tức là bị hủy) để
giải phóng tài nguyên, khi này nếu quay lại Activity cũ, onCreate() sẽ được gọi chứ không
phải onResume() hay onRestart(). Và cuối cùng, nếu một Activity bị hủy một cách có chủ
đích, chẳng hạn như người dùng nhấn nút Back ở System Bar, hay hàm finish() được gọi,
… thì onDestroy() sẽ được kích hoạt và Activity kết thúc vịng đời của nó.
Các trạng thái chính trong vịng đời activity

14


*Running: Trạng thái này khá đặc
biệt. Trạng thái tạm dừng. Như bạn
đã làm quen trên kia, trạng thái này
xảy ra khi mà Activity của bạn vẫn
đang chạy, người dùng vẫn nhìn thấy,
nhưng Activity khi này lại bị che một
phần bởi một thành phần nào đó.
Chẳng hạn như khi bị một dialog đè
lên. Cái sự che Activity này khơng
phải hồn tồn. Chính vì vậy mà
Activity đó tuy được người dùng
nhìn thấy nhưng không tương tác
được.
*Stop: Trạng thái này khá giống với
trạng thái tạm dừng trên kia. Nhưng
khi này Activity bị che khuất hồn
tồn bởi một thành phần giao diện

nào đó, hoặc bởi một ứng dụng khác.
Và tất nhiên lúc này người dùng
khơng thể nhìn thấy Activity của bạn
được nữa.
Hành động mà khi người dùng nhấn
nút Home ở System Bar để đưa ứng
dụng của bạn về background, cũng
khiến Activity đang hiển thị trong
ứng dụng rơi vào trạng thái dừng này.
Dead: Nếu Activity được lấy ra khỏi
BackStack, chúng sẽ bị hủy và rơi vào trạng thái này. Trường hợp này xảy ra khi user nhấn
nút Back ở System Bar để thoát một Activity. Hoặc lời gọi hàm finish() từ một Activity để
“kill chính nó”. Cũng có khi ứng dụng ở trạng thái background quá lâu, hệ thống có thể sẽ
thu hồi tài nguyên bằng cách dừng hẳn các Activity trong ứng dụng, làm cho tất cả các
Activity đều vào trạng thái này.
Khi vào trạng thái dead, Activity sẽ kết thúc vòng đời của nó.
Những ý trên giúp bạn nắm được tổng quan các trạng thái mà một Activity có thể trải qua.
III.Android Layout:
Để trình bày nên các Activity tạo thành các chương trình hồn chỉnh thì Android được
phát tiển một số giao diện Layout tương tự như GUI trong Java.
Android hỗ trợ 6 loại Layout gồm:
RelativeLayout, LinearLayout,GridLayout, TableLayout, FrameLayout, ConstraintLayout

15


1.RelativeLayout: là loại Layout mà trong Layout vị trí của mỗi view con sẽ được xác
định so với view khác hoặc so với thành phần cha của chúng thông qua ID. Bạn có thể sắp
xếp 1 view ở bên trái, bên phải view khác hoặc ở giữa màn hình.


xml version="1.0" encoding="utf-8"?>
xmlns:android=" />ndroid"
xmlns:app=" />xmlns:tools=" />android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.tuandc.project1.project1.MainActi
vity">
android:layout_width="150dp"
android:layout_height="50dp"
android:text="@string/_1"
android:textColor="#fff"
android:id="@+id/hop1"
android:textSize="10pt"
android:textAlignment="center"
android:background="@color/colorAccent"
/>
android:layout_width="150dp"
android:layout_height="50dp"
android:text="@string/_2"
android:textColor="#fff"
android:id="@+id/hop2"
android:textSize="10pt"
android:textAlignment="center"
android:layout_toRightOf="@+id/hop1"
android:background="@color/colorPrimary"

16



android:layout_toEndOf="@+id/hop1" />
android:layout_width="150dp"
android:layout_height="50dp"
android:text="@string/_3"
android:textColor="#fff"
android:id="@+id/hop3"
android:background="#8e0917"
android:textSize="10pt"
android:textAlignment="center"
android:layout_below="@+id/hop1"
/>
android:layout_width="150dp"
android:layout_height="50dp"
android:text="@string/_4"
android:textColor="#fff"
android:id="@+id/hop4"
android:textSize="10pt"
android:textAlignment="center"
android:background="#edcb25"
android:layout_below="@+id/hop2"
android:layout_toRightOf="@+id/hop3"
android:layout_toEndOf="@+id/hop3" />
</RelativeLayout>
Ngồi cách biểu thị trên ta có thể code giao diện RelativeLayout bằng Java. Tất nhiên nó
sẽ khác so với trình XML của Android.

17



2.LinearLayout: là loại layout sẽ sắp xếp các view theo chiều dọc hoặc ngang theo thứ tự
của các view.
 Layout theo chiều dọc:
<?xml version="1.0" encoding="utf-8"?>
xmlns:android1=" />android1:layout_width="match_parent"
android1:layout_height="match_parent"
android1:orientation="horizontal"
>
android1:layout_width="80dp"
android1:layout_height="80dp"
android1:text="1"
android1:textColor="#fff"
android1:textSize="15pt"

18


android1:textAlignment="center"
android1:textStyle="bold"
android1:background="@color/colorAccent"
/>android1:layout_width="80dp"
android1:layout_height="80dp"
android1:text="1"
android1:textColor="#fff"
android1:textSize="15pt"

android1:textAlignment="center"
android1:textStyle="bold"
android1:background="@color/colorPrimary"
/>android1:layout_width="80dp"
android1:layout_height="80dp"
android1:text="3"
android1:textColor="#fff"
android1:textSize="15pt"
android1:textAlignment="center"
android1:textStyle="bold"
android1:background="#8c0520"
/>
android1:layout_width="80dp"
android1:layout_height="80dp"
android1:background="#efcd21"
android1:text="4"
android1:textAlignment="center"

19


android1:textColor="#fff"
android1:textSize="15pt"
android1:textStyle="bold" />
</LinearLayout>
 Layout theo chiều ngang:
<?xml version="1.0" encoding="utf-8"?>


xmlns:android1=" />android1:layout_width="match_parent"
android1:layout_height="match_parent"
android1:orientation="vertical"
>
android1:layout_width="80dp"
android1:layout_height="80dp"
android1:text="1"
android1:textColor="#fff"

20


android1:textSize="15pt"
android1:textAlignment="center"
android1:textStyle="bold"
android1:background="@color/colorAccent"
/>android1:layout_width="80dp"
android1:layout_height="80dp"
android1:text="1"
android1:textColor="#fff"
android1:textSize="15pt"
android1:textAlignment="center"
android1:textStyle="bold"
android1:background="@color/colorPrimary"
/>android1:layout_width="80dp"
android1:layout_height="80dp"

android1:text="3"
android1:textColor="#fff"
android1:textSize="15pt"
android1:textAlignment="center"
android1:textStyle="bold"
android1:background="#8c0520"
/>
android1:layout_width="80dp"
android1:layout_height="80dp"
android1:background="#efcd21"
android1:text="4"
android1:textAlignment="center"

21


android1:textColor="#fff"
android1:textSize="15pt"
android1:textStyle="bold" />
</LinearLayout>
Ngồi ra, ta có thể tạo ra giao diện LinearLayout bằng chương trình Java. Tuy nhiên nó sẽ
khác biệt so với trình biên dịch XML của Android

22


3.GridLayout: là 1 layout dạng lưới và ta có thể chia các cột và dịng cho cái lưới đó, các
view sẽ được dặt vào các ô trong cái lưới này.
<?xml version="1.0" encoding="utf-8"?>

xmlns:android1=" />android1:layout_width="match_parent"
android1:layout_height="match_parent"
android1:columnCount="2"
android1:rowCount="2"
>
android1:layout_width="80dp"
android1:layout_height="80dp"
android1:text="1"
android1:textColor="#fff"
android1:textSize="15pt"
android1:textAlignment="center"
android1:textStyle="bold"
android1:background="@color/colorAccent"
/>android1:layout_width="80dp"
android1:layout_height="80dp"
android1:text="2"
android1:textColor="#fff"
android1:textSize="15pt"
android1:textAlignment="center"
android1:textStyle="bold"
android1:background="@color/colorPrimary"
/>
23


android1:layout_width="80dp"

android1:layout_height="80dp"
android1:text="3"
android1:textColor="#fff"
android1:textSize="15pt"
android1:textAlignment="center"
android1:textStyle="bold"
android1:background="#8c0520"
/>

android1:layout_width="80dp"
android1:layout_height="80dp"
android1:background="#efcd21"
android1:text="4"
android1:textAlignment="center"
android1:textColor="#fff"
android1:textSize="15pt"
android1:textStyle="bold" />
</GridLayout>

4.TableLayout: Là layout dạng bảng table. Nó gần giống với GridLayout nhưng ta không
thể quy định số cột và số hàng ngay từ đầu được.

24


xmlns:android=" />xmlns:tools=" />android:id="@+id/TableLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#ffffff"
android:shrinkColumns="*"
android:stretchColumns="*"
tools:context=".MainActivity" >

<!-- Row 1 with single column -->
android:id="@+id/tableRow1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal" >

android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_span="3"
android:background="#47BDED"
android:padding="18dip"
android:text="Row 1"
android:textColor="#000000" />
</TableRow>
<!-- Row 2 with 3 columns -->

25



×