2021 iThome 鐵人賽 Day 4:Deserialization

本篇文章是 2021 iThome 鐵人賽參賽題目「寫一個列車抵站時間 Android App」的第 4 篇,你可到 iThome 查看原文。 文章目錄 JSON serialization/deserialization 應該是不少 Android app 都會做的事,基本上近乎每個 Android...

September 19, 2021

2021 iThome 鐵人賽 Day 3:Endpoint

本篇文章是 2021 iThome 鐵人賽參賽題目「寫一個列車抵站時間 Android App」的第 3 篇,你可到 iThome 查看原文。 文章目錄 我們用到的 API endpoint 只有一個,就是用來取得港鐵機場快...

September 18, 2021

2021 iThome 鐵人賽 Day 2:Architecture

本篇文章是 2021 iThome 鐵人賽參賽題目「寫一個列車抵站時間 Android App」的第 2 篇,你可到 iThome 查看原文。 文章目錄 Architecture Components 以前 Android Developers 網站沒有特別提及過寫 Android app 應該用甚麼...

September 17, 2021

2021 iThome 鐵人賽 Day 1:Intro

本篇文章是 2021 iThome 鐵人賽參賽題目「寫一個列車抵站時間 Android App」的第 1 篇,你可到 iThome 查看原文。 文章目錄 早陣子(2021 年 6 月 27 日)港鐵屯馬綫全綫通車...

September 16, 2021

文字末端 icon 排版

以前試過做一些 UI 是 TextView 旁邊有一個 icon,然後同一行最右邊會有另一個 Button。如果文字過長就加上省略號,但文字不夠長的話 icon 要緊貼那個文字而...

April 10, 2021

Android SMS Verification APIs

SMS 驗證應該是一個在 Android app 頗為常見的需求。一般做法都是先讓用戶填寫電話號碼,然後 app 會把電話號碼交到 backend 再透過 SMS gateway 發送含有驗證碼短訊, 當用戶收到 SMS 後...

March 14, 2021

Notification Channel 自訂音效

自從由 Android 8 開始,如果要顯示 notification 的話就一定要指定一個 notification channel,否則系統不會顯示。Notification channel 的目的是讓用戶能自行調節 app 的各...

March 13, 2021

Jetpack DataStore 搭配 kotlinx.serialization Protobuf

上月 kotlinx.serialization 出了 1.0 版。除了支援 JSON 之外,還有支援 Protocol Buffers (Protobuf),而且還是跨平台支援。而在前一個月 Android 出了 Jetpack DataStore,它是一個用來取...

November 14, 2020

Conventional Commits 和 commitlint

Conventional Commits 是一個簡單的 Git commit message 約定,用來規定 commit message 的寫法。Git 本身就沒有規定 commit message 的內容格式,所以不同人會有不同的做法。如果 repository 只是有一個或幾個人用的話...

August 24, 2020

Java 量度單位 (JSR 363 Units of Measurement API)

在日常生活中,我們都會用到不同的量度單位。例如重量有時會用公斤 (kg),有時會用磅 (lb),有時又會用斤之類。如果在 Java 上表示這些數值,用 in...

August 13, 2020