Bài trước: Lập trình Android bằng Java (1): Lập trình cho thiết bị di động
-----
2. Tạo chương trình đầu tiên
Ở bài học trước, chúng ta đã cài đặt xong môi trường lập trình.
Bao gồm:
- Trình dịch và thực thi mã Java (JDK)
- Công cụ lập trình tích hợp (Android Studio)
- Công cụ phát triển ứng dụng cho Android (Android SDK)
- Tạo được điện thoại giả lập
Trong đó, Android Studio là công cụ nền tảng, được sử dụng để gắn kết các công cụ liên quan lại với nhau, giúp bạn lập trình được tiện lợi. Xem hình minh họa:
Chúng ta cùng tạo một dự án, để xuất dòng chữ “Hello World!” ra màn hình điện thoại.
Mở Android Studio > Project > New Project > Phone and Tablet > Empty Views Activity > Next
Điền các thông
tin:
- Name: tên dự án, ví dụ TeoFirstApp
- Save location: nơi lưu dự án trên đĩa cứng, ví dụ E:\Android_Code\TeoFirstApp
- Language: ngôn ngữ lập trình, ví dụ Java.
Bấm Finish để hoàn thành.
Đây là giao diện của Android Studio sau khi tạo dự án TeoFirstApp:
Giao diện của
Android Studio gồm 3 khu vực chính:
- Cây thư mục của dự án (khung bên trái)
- Thanh công cụ (phía trên), trong đó có nút Run app, để chạy dự án
- Cửa sổ thiết kế giao diện, soạn thảo mã nguồn (khung lớn ở giữa)
Bấm nút Run app để chạy dự án. Nếu chạy thành công, bạn sẽ thấy kết quả là dòng chữ Hello World! xuất hiện trên điện thoại:
Bạn cần bật nút
nguồn của điện thoại (nếu chưa bật) để xem kết quả.
Bấm nút Stop app trên thanh công cụ của Android Studio để dừng chương trình.
Chúc mừng bạn đã tạo được chương trình đầu tiên cho thiết bị di động.
2.2 Một số thành phần của dự án Android
Trong giao diện của Android Studio, quan sát cây thư mục của dự án có tên là app (khung bên trái), gồm 3 thư mục:
- manifests: chứa tập tin AndroidManifest.xml, là tập tin chứa các thông tin cấu hình quan trọng của ứng dụng
- java: chứa các tập tin mã nguồn Java
- res: chứa các tài nguyên khác của dự án, như hình ảnh, tập tin thiết kế giao diện, định nghĩa các giá trị
Bạn có thể dùng File Explorer để mở và quan sát các thư mục này trong đĩa cứng:
2.3 Quá trình khởi chạy
một ứng dụng
Sau khi bấm nút Run app (trong Android Studio) thì quá trình khởi chạy một ứng dụng Android diễn ra như thế nào?
Đầu tiên, hệ điều hành Android sẽ đọc và thực thi nội dung trong tập tin AndroidManifest.xml.
AndroidManifest.xml
Manifest: nghĩa thông thường là danh mục người và hàng hóa sẽ được vận chuyển trong một chuyến bay.
Trong Android Studio, thư mục manifests chứa tập tin AndroidManifest.xml, là tập tin chứa các thông tin cấu hình quan trọng của ứng dụng.
Nội dung của tập tin AndroidManifest.xml:
[AndroidManifest.xml]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.TeoFirstApp"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</application>
</manifest>
Khi chạy ứng dụng, tập tin AndroidManifest.xml sẽ được đọc và thực thi đầu tiên. Dựa vào thông tin khai báo trong AndroidManifest.xml, hệ điều hành Android thực hiện các xử lý tương ứng.
Để đơn giản, phần này chỉ tập trung tìm hiểu luồng xử lý chính.
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
Phần tử <activity> định nghĩa một cửa sổ giao diện (hay màn hình, screen, user interface) cho ứng dụng. Trong lập trình Android, mỗi màn hình được gọi là một Activity.
Thuộc tính android:name=".MainActivity" cho biết tên activity là MainActivity, mã nguồn của MainActivity được viết trong class MainActivity, nằm trong cùng package với tập tin AndroidManifest.xml.
Phần tử <intent-filter> và <action> báo cho Android biết activity có tên MainActivity là đầu vào của ứng dụng (main entry point), là activity được gọi đầu tiên.
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
…
</intent-filter>
Nội dung tập tin MainActivity.java:
[MainActivity.java]
package com.example.teofirstapp;
import android.os.Bundle;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
public class MainActivity extends AppCompatActivity
{
@Override
protected void
onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
}
}
Bạn nên sử dụng chatbot (ví dụ copilot, gemini, chatgpt) để xem giải thích ý nghĩa từng dòng lệnh.
Một số ý quan trọng trong tập tin MainActivity:
- Từ khóa package dùng để khai báo class MainActivity thuộc package com.example.teofirstapp
- Từ khóa import dùng để triệu gọi các thư viện sẽ được sử dụng
- Tạo lớp Activity kế thừa lớp AppCompatActivity
- Tạo phương thức onCreate(), ghi đè phương thức cùng tên của lớp cha (AppCompatActivity)
- setContentView(R.layout.activity_main): cho biết màn hình MainActivity sẽ được định nghĩa trong tập tin activity_main.xml.
- Tập tin activity_main.xml nằm trong thư mục res\layout. Bạn mở activity_main.xml, sửa dòng chữ “Hello World!” thành “chao bac Teo!”. Xem hình minh họa.
- Chạy lại dự án để xem kết quả. Dòng chữ xuất hiện trên điện thoại sẽ là “chao bac Teo!”.
2.4 Bài tập
1. Trong một dự án Android viết bằng Java, 3 thư mục bạn hay làm việc với nó là thư mục nào? Phát biểu nào sau đây không đúng?
A. code
B. res
C. manifests
D. java
2. Quá trình khởi chạy của một ứng dụng Android theo thứ tự đúng là?
A. AndroidManifest.xm > activity_main.xml > MainActivity.java
B. activity_main.xml > MainActivity.java > AndroidManifest.xm
C. MainActivity.java > AndroidManifest.xml > activity_main.xml
D. AndroidManifest.xml > MainActivity.java > activity_main.xml
3. Phát biểu nào sau đây không đúng?
A. Activity là một màn hình giao diện
B. AndroidManifest.xml là tập tin chứa thông tin cấu hình của một ứng dụng
C. activity_main.xml là tập tin định nghĩa giao diện của MainActivity
D. MainActivity không phải là đầu vào ứng dụng (main entry point)
4. Tạo và chạy được chương trình “Hello World!”. Sửa dòng chữ
“Hello World!” thành “chao bac Teo!”.
---
Gợi ý trả lời câu hỏi:
1(A), 2(D), 3(D)
-----
Cập nhật: 23/1/2025
-----
Bài sau: Lập trình Android bằng Java (3): Làm quen với một số điều khiển