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

Bài t p th c hành l ậ ự ập trình di động tạo một ứng dụng android

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 (11.07 MB, 117 trang )

TRƯỜNG ĐẠI HỌC THỦ DẦU MỘT
VIỆN KỸ THUẬT CÔNG NGHỆ

BÀI TẬP THỰC HÀNH LẬP TRÌNH DI ĐỘNG
GV: Nguyễn Hữu Vĩnh


Mục Lục

I. Tạo một ứ ng dụng Android ...................................................................................................................

1

II.

Phần thiế t kế Layout: ............................................................................................................................

5

1.

LinearLayout trong Android ..................................................................................................................

5

2.

RelativeLayout trong Android ......................................................................................................... 13

III. SỰ KIỆN ANDROID..................................................................................................................................


22

1.

Xử lý sự kiện trong Layout (Handle event in Layout ....................................................................... 24

2.

Xử lí sự kiệ n bằng lớp nặc danh (Inline anonymous listener)......................................................... 25

3.

Kế thừa Interface OnClickListener .................................................................................................. 29

IV. ANDROID WIDGETS................................................................................................................................
Bài tập 1 : Toast và tùy chỉnh Toast trong Android.................................................................................

31
31

Bài tập 2: Alert Dialog (Hộp thoại cảnh báo) trong Android................................................................... 33
Bài tập 3: .................................................................................................................................................

36

Bài tập 4: .................................................................................................................................................

37

Bài tập 5(*):.............................................................................................................................................


38

Bài tập 6: .................................................................................................................................................

39

Bài tập 7: .................................................................................................................................................

39

Bài tập 9: .................................................................................................................................................

42

Bài tập 10: ...............................................................................................................................................

43

Bài tập 11: ...............................................................................................................................................

44

Bài tập 12: ...............................................................................................................................................

45

Bài tập 13: ...............................................................................................................................................

46


Bài tập 15: ...............................................................................................................................................

48

V. Kết nối cơ sở dữ liệu ........................................................................................................................... 55
1.

Tạo lớp java có tên là Notify.java cài đặt phương thức cảnh báo khi thoát Activity...................... 55

2.

Cài đặt Activity đăng nhập như hình sau: ....................................................................................... 55

3.

Cài đặt Activity quản lý sinh viên như hình sau: ............................................................................. 59

4.

Cài đặt Activity danh sách lớp học như hình sau: ........................................................................... 61

6.

Cài đặt Activity thêm lớp học: .........................................................................................................

7.

Cài đặt Activity chỉnh sửa lớp học như hình sau:............................................................................ 73


8.

Cài đặt Activity hiển thị danh sách sinh viên như hình sau: ........................................................... 79

9.

Cài đặt Activity thêm sinh viên như hình sau: ................................................................................ 88

10.

Cài đặt Activity chỉnh sửa sinh viên như hình sau: ..................................................................... 95

VI.

69

DANH SÁCH BÀI TẬP LỚN ............................................................................................................. 103


Bài tập 1: Xây dựng ứng dụng di động quản lý thư viện..................................................................103
Bài tập 2: Xây dựng ứng dụng di động quản lý cửa hàng thời trang................................................103
Bài tập 3: Xây dựng ứng dụng di động quản lí cửa hàng bán đĩa CD.....................................103
Bài tập 4: Xây dựng ứng dụng di động quản lí học sinh tiểu học......................................................103
Bài tập 5: Xây dựng ứng dụng di động quản lí việc sử dụng phịng học trong trường ĐH.

....................................................................................................................................................................103

Bài tập 6: Xây dựng ứng dụng di động thi trắc nghiệm bằng lái xe 2 bánh............................103
Bài tập 7: Xây dựng ứng dụng di động quản lí cửa hàng bán xe gắn máy. ...........................104
Bài tập 8: Xây dựng ứng dụng di động quản lí nhân sự.....................................................................104

Bài tập 9: Xây dựng ứng dụng di động quản lý dịch vụ cho thuê xe.................................................104
Bài tập 10: Xây dựng ứng dụng di động quản lí cửa hàng bán xăng......................................104
Bài tập 11. Xây dựng ứng dụng di động quản lí khách sạn................................................................104
Bài tập 12. Xây dựng ứng dụng di động món ăn..........................................................................104
Bài tập 13. Xây dựng ứng dụng di động quản lí câu lạc bộ bóng đá:......................................104
Bài tập 14: Xây dựng ứng dụng di động ghi nhớ địa điểm và thời gian:.................................105
Bài tập 15: Xây dựng ứng dụng di động quản lý ảnh.........................................................................105
Bài tập 16: Xây dựng ứng dụng di động chat cho Android. Yêu cầu các chức năng sau: ..105
Bài tập 17: Xây dựng ứng dụng di động quản lý chi tiêu, thu nhập..................................................105
Bài tập 18: Xây dựng ứng dụng di động hướng dẫn du lịch TPHCM cho người nước ngoài.. .106
Bài tập 19: Xây dựng ứng dụng di động quản lý nhật ký đa phương tiện trên nền Android.......106
Bài tập 20: Xây dựng ứng dụng di động tra cứu thông tin xe bus trên nền Android......................106
Bài tập 21: Xây dựng ứng dụng di động quản lý Pin trên điện thoại Android (Battery Saver)
...................................................................................................................................................................107
Bài tập 22: Xây dựng ứng dụng di động từ điển ảnh đa phương tiện...........................................107
Bài tập 23: Xây dựng ứng dụng di động nghe đài trực tuyến..........................................................107
Bài tập 24: Xây dựng ứng dụng contact................................................................................................108
Bài tập 25: Xây dựng ứng dụng thời tiết dựa theo một nhà cung cấp dịch vụ thời tiết.................108
Bài tập 26: Viết chương trình thực hiện..........................................................................................108
Bài tập 28: Viết chương trình đọc tin tức tổng hợp từ các báo................................................. 108
Bài tập 29: Xây dựng ứng dụng có tính năng tương tự như Skim trên android....................109
Bài tập 30: Xây dựng ứng dụng nhận dạng biển số xe máy và xe ô tô.....................................109
Bài tập 31: Xây dựng ứng dụng thông báo thời tiết.....................................................................109
Bài tập 33: Xây dựng ứng dụng điểm danh sinh viên qua mã vạch trên thẻ sinh viên ........109
THỰC HÀNH TẠI LỚP.................................................................................................................................110
Buổi 1: Layout và sự kiện Android.........................................................................................................110
Buổi 2: ANDROID WIDGETS....................................................................................................................110


Buổi 3: Menu, ContextMenu và Intent (rất quan trọng).....................................................................110

Buổi 4: Kết nối cơ sở dữ liệu................................................................................................................110


Bài tập thự c hành phát triển ứ ng dụ ng di động

I.

Nguyễn Hữu Vĩnh

Tạo một ứng dụng Android
Trong bài chúng ta biết cách tạo 1 ứng dụng Hello trong Android đầu tiên.
Chúng ta sẽ tạo một ứng dụng đơn giản xuất Hello ra màn hình sử dụng cơng
cụ Eclipse IDE. Các bước thực hiện:

1.
2.
3.

Tạo 1 project
Xuất câu thông báo
Chạy ứng dụng
Ví dụ: Xuất Hello ra màn hình, bạn cần 3 bước như ở trên để tạo một ứng dụng

1.

Tạo 1 project
Chọn File > New > Project...
Chọn android project and click next

Điền thông tin chi tiết trong hộp hội thoai và click Next


Trang 1 / 110


Bài tập thự c hành phát triển ứ ng dụ ng di động

Nguyễn Hữu Vĩnh

Trong đó:
o
Application Name : Đặt tên cho ứng dụng, chữ cái đầu tiên của từ
phải viết hoa
o
Project Name: Đặt tên cho project, chữ cái đầu tiên của từ phải viết
hoa o Package Name: Tên package
o Minimum Required SDK : Là mức API tối thiểu để chạy ứng dụng
o Target SDK : Là mức API có thể tương thích với ứng dụng này
o Compile with: Là mức API tối đa ứng dụng có thể chạy
o Theme: Giao diện cho ứng
dụng Chọn nơi lưu trữ Project

Trang 2 / 110


Bài tập thự c hành phát triển ứ ng dụ ng di động

Nguyễn Hữu Vĩnh

Chọn Icon, Clipart hoặc Text cho Project, click Next


Chọn template Avtivity cho Project trong ví dụ này chúng tôi chọn
Blank Activity, click Next

Khai báo Activity và Layout : Activity Name và Layou t Name, click Fini sh

Trang 3 / 110


Bài tập thự c hành phát triển ứ ng dụ ng di động

Nguyễn Hữu Vĩnh

Bây giờ một project android đã được tạo ra. Bạn có thể xem chương trình đơn giản sau:

2.
3.

Xuất câu thơng báo ra màn hình
Chạy ứng dụng Android
Để chạy ứng dụng Android. Click Right lên project của bạn > Run
As.. > Android Application
Mất 2 hoặc 3 để chạy ứng dụng. Sau khi bật máy Emulator, Eclipse sẽ cài
đặt ứng dụng và chạy ứng dụng, hiện ra màn hình sau:Mã nguồn Java của
file MainActivity.java
package com.example.hello;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView txtHello

=

new TextView(this);

txtHello.setText("Hello Hiep Si IT");
setContentView(txtHello);
}

Trang 4 / 110


Bài tập thự c hành phát triển ứ ng dụ ng di động

II.

Nguyễn Hữu Vĩnh

Phần thiết kế Layout:
1. LinearLayout trong Android
LinearLayout LinearLayout là ViewGroup được sử dụng khá phổ biến cùng
FrameLayout và RelativeLayout, LinearLayout được định nghĩa trong xml bởi
cặp thẻ đóng mở <LinearLayout> và thẻ đóng </LinearLayout>.
<?xml version="1.0" encoding="utf-8"?>

xmlns:android=" />android:layout_width="match_parent"
android:layout_height
="match_parent">

<!--View child-->
</LinearLayout>

Điểm đặc biệt của LinearLayout là có thể chia layout theo các tỉ lệ khác nhau.
Chúng ta sẽ cùng nhau tìm hiểu ở dưới đây.
Quy tắc layout
LinearLayout sắp sếp các view con theo hai hướng:
- Vertical: Sắp sếp view con theo chiều dọc.

Trang 5 / 110


Bài tập thự c hành phát triển ứ ng dụ ng di động

Nguyễn Hữu Vĩnh

Các view được thêm vào sau sẽ được sắp xếp theo hướng mũi tên từ trên
xuống, và khơng có view nào sẽ nằm đè lên view nào.
-

Horizontal: Sắp sếp các view con theo chiều ngang:

Các view được thêm vào sau sẽ được sắp xếp theo hướng mũi tên từ trái
qua phải, và khơng có view nào sẽ nằm đè lên view nào.
Để xác định hướng mà LinearLayout sẽ layout các phần tử
con theo vertical hay horizontal ta sử dụng thuộc tính sau:

+

Vertical: android:orientation="vertical"

+

Horizontal:
android:orientation="horizontal"

Ví dụ: với đoạn mã có thuộc tính android:orientation="vertical"

Trang 6 / 110


Bài tập thự c hành phát triển ứ ng dụ ng di động
<?xml version="1.0" encoding="utf-8"?>

Nguyễn Hữu Vĩnh

xmlns:android=" />
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

android:background="#af5656"
android:layout_width="match_parent"
android:layout_height="50dp" />

android:background="#28c6a6"
android:layout_width="match_parent"
android:layout_height="50dp" />
android:background="#7c145f"
android:layout_width="match_parent"
android:layout_height="50dp" />
android:background="#c18936"
android:layout_width="match_parent"
android:layout_height="50dp" />
android:background="#062001"
android:layout_width="match_parent"
android:layout_height="50dp" />
</LinearLayout>

Kết quả xuất ra giao diện

Trang 7 / 110


Bài tập thự c hành phát triển ứ ng dụ ng di động

Nguyễn Hữu Vĩnh

Và với đoạn mã tiếp theo thay đổi orientation thành: android:orientation="horizontal"

<?xml version="1.0" encoding="utf-8"?>


xmlns:android=" />android:layout_width="match_parent"
android:layout_height="match_parent" android:orientation="horizontal">

android:background="#af5656"
android:layout_width="50dp"
android:layout_height="match_parent" />
android:background="#28c6a6"
android:layout_width="50dp"
android:layout_height="match_parent" />
android:background="#7c145f"
android:layout_width="50dp"
android:layout_height="match_parent" />
android:background="#062001"
android:layout_width="50dp"
android:layout_height="match_parent" />
</LinearLayout>

Kết quả xuất ra giao diện

Chia tỉ lệ layout

Trang 8 / 110


Bài tập thự c hành phát triển ứ ng dụ ng di động


Nguyễn Hữu Vĩnh

Ngồi cách sử dụng LinearLayout thơng thường thì LinearLayout thường
được sử dụng để phân chia tỉ lệ layout bằng cách sử dụng thuộc
tính layout_weight và weightSum.
weightSum: Xác định trọng số của LinearLayout hiện tại.
layout_weight: Trọng số mà view con trong LinearLayout chiếm giữ.
Chia tỉ lệ không có weightSum
Cùng xem xét đoạn mã sau:
<?xml version="1.0" encoding="utf-8"?>
xmlns:android=" />android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#af5656" />
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4"
android:background="#28c6a6" />
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="#7c145f" />

</LinearLayout>
Chúng ta không đánh trọng số weightSum cho LinearLayout nên tổng trọng số
của nó sẽ được tính bằng tổng trọng số (layout_weight) các view con cộng lại.

Ở đây weightSum = 1 + 4 + 2 = 7. Có nghĩa là LinearLayout này sẽ chia thành 7
phần: View thứ nhất có android:layout_weight="1" sẽ chiếm 1/7.
View thứ hai có android:layout_weight="4" sẽ chiếm 4/7.

Trang 9 / 110


Bài tập thự c hành phát triển ứ ng dụ ng di động

Nguyễn Hữu Vĩnh

View thứ ba có android:layout_weight="2" sẽ chiếm 2/7.
Kết quả chúng ta thấy như sau

Nếu orientation là vertical
<?xml version="1.0" encoding="utf-8"?>

xmlns:android=" />android:layout_width="match_parent"
android:layout_height="match_parent" android:orientation="vertical">

android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#af5656" />

android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="4"
android:background="#28c6a6" />
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:background="#7c145f" />
</LinearLayout>

Trang 10 / 110


Bài tập thự c hành phát triển ứ ng dụ ng di động

Nguyễn Hữu Vĩnh

Kết quả xuất ra màn hình

Chia tỉ lệ có weightSum
Khác với cách trên weightSum được tính tốn bằng tổng của cách layout_weight
của các view con. Thì chúng ta có thể xác định giá trị weightSum cụ thể như sau:

Ví dụ: Trong LinearLayout ta có thuộc tính android:weightSum="10"
<?xml version="1.0" encoding="utf-8"?>
xmlns:android=" />android:layout_width="match_parent"
android:layout_height="match_parent"

android:weightSum="10"
android:orientation="vertical">
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="5"
android:background="#af5656" />
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:background="#28c6a6" />
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#7c145f" />
</LinearLayout>

Trang 11 / 110


Bài tập thự c hành phát triển ứ ng dụ ng di động

Nguyễn Hữu Vĩnh

Chúng ta xác định weightSum có giá trị là 10, có nghĩa là chia layout này thành 10 phần

View thứ nhất chiếm 5/10
View thứ hai chiếm 2/10

View thứ ba chiếm 1/10
Còn lại 2/10 sẽ là khoảng trắng.
Kết quả xuất ra màn hình:

Điểm khác biệt của hai cách chia tỉ lệ này là chia tỉ lệ không có weightSum thì các
view trong LinearLayout sẽ "phủ" đầy layout này (khơng có khoảng trống). Cịn
với cách chia tỉ lệ có weightSum có thể sinh ra khoảng trống như ví dụ ở trên.
Ưu điểm
+ Thiết kế được các giao diện phức tạp.
+ Chia tỉ lệ layout, phù hợp với việc phát triển UI trên nhiều device có kích thước
màn hình khác nhau.
Nhược điểm
+

Thời gian tính tốn và layout view con tốn chi phí hơn so với FrameLayout và

RelativeLayout. Đây là ViewGroup tính tốn phức tạp nhất trong bộ ba ViewGroup thường
xuyên được sử dụng (FrameLayout, RelativeLayout, LinearLayout).

Trang 12 / 110


Bài tập thự c hành phát triển ứ ng dụ ng di động

Nguyễn Hữu Vĩnh

2. RelativeLayout trong Android
RelativeLayout cho phép sắp xếp các control theo vị trí tương đối giữa các
control khác trên giao diện (kể cả control chứa nó). Thường nó dựa vào Id của
các control khác để sắp xếp theo vị trí tương đối. Do đó khi làm RelativeLayout

bạn phải chú ý là đặt Id control cho chuẩn xác, nếu sau khi Layout xong mà bạn
lại đổi Id của các control thì giao diện sẽ bị xáo trộn (do đó nếu đổi ID thì phải đổi
ln các tham chiếu khác sao cho khớp với Id bạn mới đổi).
RelativeLayout là ViewGroup cũng được sử dụng khá nhiều trong
android, RelativeLayout được định nghĩa trong xml bởi cặp thẻ
đóng mở <RelativeLayout> và thẻ đóng </RelativeLayout>.
<?xml version="1.0" encoding="utf-8"?>
xmlns:android=" />android:layout_width="match_parent"
android:layout_height
="match_parent">

<!--View child-->
</RelativeLayout>

Quy tắc layout
Quy tắc layout của RelativeLayout khá giống như FrameLayout, nhưng có một
số điểm đặc biệt là các view có thể xác định bằng vị trí tương đối (relative) với
các view khác thơng qua id.
Các vị trí tương đối này như sau:
android:layout_above="id_name": view hiện tại sẽ nằm phía trên view có thuộc
tính id là id_name.
android:layout_below="id_name": view hiện tại sẽ nằm phía dưới
view có thuộc tính id là id_name.
android:layout_toLeftOf="id_name": view hiện tại sẽ nằm bên trái dưới view
có thuộc tính id là id_name.
android:layout_toRightOf="id_name": view hiện tại sẽ nằm phía bên phải
view có thuộc tính id là id_name.

Trang 13 / 110



Bài tập thự c hành phát triển ứ ng dụ ng di động

Nguyễn Hữu Vĩnh

Ví dụ 1: Để hiểu sâu hơn về RelativeLayout.

Ta thấy rằng EditText username nằm dưới TextView username. Và tương
tự TextView password nằm dưới Editext username, EditText password
sẽ nằm dưới TextView password. Chú ý các dòng chữ đậm: 16, 22, 29
Mã nguồn sẽ như sau:

Trang 14 / 110


Bài tập thự c hành phát triển ứ ng dụ ng di động

Nguyễn Hữu Vĩnh

Ví dụ 2: Xem hình sau:

EditText username sẽ nằm bên phải TextView username
EditText password sẽ nằm bên phải TextView password

TextView password và EditText password sẽ nằm phía dưới TextView
username. Chú ý các dịng in đậm: 17, 23, 24. 31, 32

Trang 15 / 110



Bài tập thự c hành phát triển ứ ng dụ ng di động

Nguyễn Hữu Vĩnh

Một số thuộc tính khác thường xuyên sử dụng với RelativeLayout:
android:layout_alignParentBottom="boolean": Căn dưới phần tử hiện theo
phần tử cha nếu set là true.
android:layout_alignParentTop="boolean": Căn trên phần hiện tại
theo phần tử cha nết set là true.
android:layout_alignParentRight="boolean": Căn phải phần tử hiện tại theo
phần tử cha nếu set là true.
android:layout_alignParentLeft="boolean": Căn trái phần tử hiện tại
theo phần tử cha nếu set là true.
Ta có ví dụ sau:

<?xml version="1.0" encoding="utf-8"?>
xmlns:android=" />android:layout_width="match_parent"
android:layout_height
="match_parent">

android:background="#2c8291"
android:layout_width="200dp"
android:layout_height="200dp"/>
</RelativeLayout>

như sau:
<?xml version="1.0" encoding="utf-8"?>

xmlns:android=" />android:layout_width="match_parent"
android:layout_height
="match_parent">

android:layout_alignParentRight="true"
android:background="#2c8291"
android:layout_width="200dp"
android:layout_height="200dp"/>
</RelativeLayout>

Trang 16 / 110



×