Android 編程語言中文教學網站

Android 編程語言詳細教學網站

歡迎來到 Android 開發入門與進階教學。本網站以 Kotlin 為主軸, 搭配 Jetpack Compose 與基礎 Android 架構觀念, 讓你從語法、UI、資料流、實作案例到測驗,一次建立完整學習路線。

Kotlin 基礎語法 Jetpack Compose UI Activity / 架構觀念 完整程式範例 互動式小測驗

你會學到什麼?

  • Kotlin 的變數、條件判斷、迴圈、函式、類別與空值安全
  • Android 現代 UI:Compose 與狀態管理
  • 實作計數器 App、待辦事項 App、登入表單
  • Android 官方架構核心:職責分離、SSOT、UDF

適合對象

  • 完全新手,想學 Android App 開發
  • 會 Java / Web,但想轉 Android
  • 已學 Kotlin,想了解 Android 實戰寫法

課程總覽

先建立正確觀念:Android 不是單一「程式語言」,而是一個應用開發平台。 目前新專案最常見且官方推薦的語言是 Kotlin,UI 則以 Jetpack Compose 為現代主流工具。

你正在學的核心

  • Kotlin:Android 開發主力語言
  • Compose:宣告式 UI 工具包
  • Android 架構:資料、畫面、事件如何分工

常見相關技術

  • Android Studio 開發工具
  • XML(舊式 UI,仍然常見)
  • ViewModel、Repository、Navigation
第 1 步:先學 Kotlin 學會變數、函式、類別、集合、空值處理與基本邏輯控制。
第 2 步:理解 Android UI 使用 Composable 函式描述畫面,透過 state 控制重新繪製。
第 3 步:進入實戰案例 用小型 App 範例熟悉事件處理、畫面更新與資料組織方式。
第 4 步:建立架構思維 練習把 UI、商業邏輯、資料來源分開,讓程式更好維護與測試。

Kotlin 語法教學

這一區從 Android 開發最常用的 Kotlin 基礎語法開始,並附上簡短說明與可直接閱讀的範例。

語法 01

變數與資料型別

val 表示不可重新指定的值,var 表示可變動的變數。 Kotlin 支援型別推斷,因此通常不一定要手動寫型別。

Kotlin 範例
fun main() {
    val appName: String = "My Android App"
    var version = 1
    val rating = 4.8
    val isPublished = true

    println("應用名稱:$appName")
    println("版本:$version")
    println("評分:$rating")
    println("已發布:$isPublished")
}
重點:Android 開發中,畫面狀態若不希望被隨意改動,通常會優先使用 val
語法 02

條件判斷 if / when

Kotlin 的 if 可以像表達式一樣回傳值;when 則比傳統 switch 更強大。

Kotlin 範例
fun getScoreLevel(score: Int): String {
    return when {
        score >= 90 -> "A"
        score >= 80 -> "B"
        score >= 70 -> "C"
        score >= 60 -> "D"
        else -> "E"
    }
}

fun main() {
    val level = getScoreLevel(85)
    println("成績等級:$level")
}
重點:表單驗證、權限判斷、畫面狀態切換時,when 很常用。
語法 03

迴圈與集合

Kotlin 常搭配集合函式,如 filtermapforEach,讓程式更精簡。

Kotlin 範例
fun main() {
    val apps = listOf("相機", "地圖", "音樂", "計算機")

    for (app in apps) {
        println("App:$app")
    }

    val longNames = apps.filter { it.length >= 2 }
    println(longNames)
}
重點:在 RecyclerView / LazyColumn 顯示資料前,常先用集合函式整理資料。
語法 04

函式與預設參數

Kotlin 函式支援預設值與命名參數,讓呼叫更清楚、可讀性更高。

Kotlin 範例
fun showToastMessage(message: String, duration: Int = 2) {
    println("訊息:$message,顯示秒數:$duration")
}

fun main() {
    showToastMessage("登入成功")
    showToastMessage(message = "資料已更新", duration = 3)
}
重點:Compose 元件參數非常常用預設值,這是 Kotlin 在 Android 很大的優勢。
語法 05

類別、資料類別 data class

data class 特別適合用來表示畫面資料、API 回傳資料、待辦清單項目等。

Kotlin 範例
data class User(
    val name: String,
    val age: Int,
    val isVip: Boolean
)

fun main() {
    val user = User("小明", 20, true)
    println(user)
}
重點:MVVM 架構中,UI State 通常會以 data class 表示。
語法 06

空值安全 Null Safety

Kotlin 最有名的功能之一就是空值安全。可空型別要用 ? 表示,避免空指標例外。

Kotlin 範例
fun main() {
    val userName: String? = null

    println(userName?.length)          // 安全呼叫
    println(userName ?: "訪客")         // Elvis operator,提供預設值
}
重點:在 Android 讀取 Intent、API 資料、資料庫欄位時,空值處理很重要。

Android 核心開發觀念

學會 Kotlin 後,你還需要理解 Android 畫面如何組成、資料如何驅動畫面,以及怎樣設計更穩定的應用架構。

Android 核心 01

Composable 函式

Jetpack Compose 使用 @Composable 函式來描述 UI。 畫面不是手動一個元件一個元件改,而是根據狀態重新組合。

Compose 範例
@Composable
fun WelcomeCard(name: String) {
    Column {
        Text(text = "你好,$name")
        Text(text = "歡迎開始學習 Android")
    }
}
Android 核心 02

狀態 State 與畫面更新

在 Compose 中,當 state 改變時,相關畫面會自動重新組合。這就是宣告式 UI 的核心。

Compose 範例
@Composable
fun CounterScreen() {
    var count by remember { mutableStateOf(0) }

    Column {
        Text(text = "目前次數:$count")
        Button(onClick = { count++ }) {
            Text("增加")
        }
    }
}
Android 核心 03

架構思維:UI 由資料驅動

Android 官方建議把 UI 與資料來源分開,並建立單一資料來源與單向資料流,這樣更容易維護、測試與除錯。

架構概念範例
data class LoginUiState(
    val username: String = "",
    val password: String = "",
    val isLoading: Boolean = false,
    val errorMessage: String? = null
)
職責分離(Separation of Concerns) UI 專心顯示畫面,資料層專心提供資料,商業邏輯獨立處理。這樣可以降低耦合度。
單一資料來源(Single Source of Truth) 同一份資料應該由一個清楚的位置負責維護,例如 ViewModel 中的 UI State 或 Repository 中的資料來源。
單向資料流(Unidirectional Data Flow) 資料往畫面流動,事件從畫面回傳。方向清楚後,除錯與維護會容易很多。

範例應用實作

以下提供 3 個常見教學範例:計數器 App、待辦事項 App、登入表單驗證。你可以把它們當作實戰入門。

範例 App 01

計數器 App

這是最經典的 Compose 入門範例。你會學到狀態改變、Button 點擊事件、Text 顯示。

Kotlin / Compose
@Composable
fun CounterApp() {
    var count by remember { mutableStateOf(0) }

    Column {
        Text(
            text = "你已點擊 $count 次",
            style = MaterialTheme.typography.headlineMedium
        )

        Spacer(modifier = Modifier.height(16.dp))

        Button(onClick = { count++ }) {
            Text("點我 +1")
        }

        OutlinedButton(onClick = { count = 0 }) {
            Text("重設")
        }
    }
}
學習重點:remember、mutableStateOf、事件驅動畫面更新。
範例 App 02

待辦事項 App

這個範例會讓你理解資料類別、清單顯示與基本資料狀態管理。

Kotlin / Compose
data class TodoItem(
    val id: Int,
    val title: String,
    val done: Boolean
)

@Composable
fun TodoListScreen() {
    val todos = listOf(
        TodoItem(1, "完成 Android 作業", false),
        TodoItem(2, "閱讀 Kotlin 文件", true),
        TodoItem(3, "練習 Compose", false)
    )

    LazyColumn {
        items(todos) { todo ->
            Row(
                modifier = Modifier
                    .fillMaxWidth()
                    .padding(12.dp)
            ) {
                Text(
                    text = if (todo.done) "✅ ${todo.title}" else "⬜ ${todo.title}"
                )
            }
        }
    }
}
學習重點:data class、LazyColumn、items、清單畫面呈現。
範例 App 03

登入表單驗證

這是實務上很常見的案例。你會學到輸入框、按鈕事件與表單驗證邏輯。

Kotlin / Compose
@Composable
fun LoginScreen() {
    var email by remember { mutableStateOf("") }
    var password by remember { mutableStateOf("") }
    var message by remember { mutableStateOf("") }

    Column {
        OutlinedTextField(
            value = email,
            onValueChange = { email = it },
            label = { Text("Email") }
        )

        OutlinedTextField(
            value = password,
            onValueChange = { password = it },
            label = { Text("密碼") }
        )

        Button(
            onClick = {
                message = if (email.contains("@") && password.length >= 6) {
                    "登入格式正確"
                } else {
                    "Email 或密碼格式不正確"
                }
            }
        ) {
            Text("登入")
        }

        Text(text = message)
    }
}
學習重點:文字輸入、驗證邏輯、狀態更新。

小測驗

做完下列 5 題,可以快速檢查你是否掌握 Kotlin 與 Android Compose 的核心觀念。

1. Kotlin 中哪一個關鍵字代表「不可重新指定」的值?

2. 在 Jetpack Compose 中,哪個機制會在資料改變後觸發畫面重新組合?

3. 哪一種 Kotlin 類別最適合用來表示 UI 資料狀態?

4. Android 官方架構中,「單一資料來源」通常縮寫為什麼?

5. 下列哪個運算子可以在可空值為 null 時提供預設值?

參考資料與延伸學習

下面列出官方學習資源,你可以在完成本頁教學後,直接進一步閱讀完整文件與官方課程。