原创 Jetpack Compose(4)——重組

目錄一、狀態變化1.1 狀態變化是什麼1.2 mutableStateListOf 和 mutableStateMapOf二、重組的特性2.1 Composable 重組是智能的2.2 Composable 會以任意順序執行2.3 Comp

原创 Jetpack Compose(5)——生命週期與副作用函數

目錄一、 Composable 的生命週期二、 Composable 的副作用2.1 SideEffect2.2 DisposableEffect2.3 LaunchedEffect2.4 rememberCoroutineScope2.5

原创 Jetpack Compose(3) —— 狀態管理

上一篇文章拿 TextField 組件舉例時,提到了 State,即狀態。本篇文章,即講解 State 的相關改概念。 一、什麼是狀態 與其它聲明式 UI 框架一樣,Compose 的職責非常單純,僅作爲對數據狀態的反應。如果數據狀態沒有改

原创 Jetpack Compose(1) —— Android 全新的 UI 框架

寫在前面 Jetpack Compose 已經不是什麼新技術了,Google 早在 2019 年就推出 Jetpack Compose 的首個 alpha 版本,時至今日,相當大比例的國內 Android 開發者還沒有學習使用過。本篇文章主

原创 Jetpack Compose(2) —— 入門實踐

一、項目中使用 Jetpack Compose 從此節開始,爲方便起見,如無特殊說明,Compose 均指代 Jetpack Compose。 開發工具: Android Studio 1.1 創建支持 Compose 新應用 新版 And

原创 如何在 WindowManager.addView 中使用 Jetpack Compose

如何在 WindowManager.addView 中使用 Jetpack Compose 一、引出問題 Android 開發中,很常見的一個場景,通過 WindowManager.addView() 添加一個 View 到屏幕上。Andr

原创 高效的 Json 解析框架 kotlinx.serialization

一、引出問題 你是否有在使用 Gson 序列化對象時,見到如下異常: Abstract classes can't be instantiated! Register an InstanceCreator or a TypeAdapter

原创 記一個 Android 14 適配引發的Android 存儲權限問題

一、bug 背景 項目中有下面這樣一段代碼,在 Android T 版本運行正常,現在適配到 Android U 上之後,運行時 crash 了。。。。 ... values.put(MediaStore.Images.Media.DATA

原创 親測可行,Android Studio 查看源碼出現 Source for ‘Android API xxx Platform’ not found 的解決方法

親測可行,Android Studio 查看源碼出現 Source for ‘Android API xxx Platform’ not found 的解決方法 如標題中的問題,產生的原因就是 SDK 源碼目錄下找不到對應版本的源碼文件。解

原创 Kotlin 基礎入門

函數類型 在 Kotlin 中 函數是一等公民。 // 定義 fun greetPeople(name: String, makeGreet: (String) -> Unit) // 調用 greetPeople("Jimy", ::

原创 Kotlin return@xxx 的坑

Kotlin Return 到標籤 先看例子: (1..5).forEach { if (it == 3) { return@forEach } println(it) } println("test

原创 記一個 Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8 編譯問題引發的案例

某天將項目 kotlin 版本升級到了 1.8.0 ,然後編譯報錯了, Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8 然後開始尋求解決方案... Duplicate class

原创 git commit 不生成 changeId 解決方案

1). 檢查倉儲 .git/hook 下面是否有 commit-msg 文件,如果沒有可以到下面的地址下載,或者把其他同事的 commit-msg 文件拷貝到你的 .git/hook 重新commit即可。 http://review.cy

原创 gradle 7.x 中的一些變更

根目錄下 build.gradle 變更 變更前: buildscript { ext.kotlin_version = '1.5.0' repository { mavenCentral()

原创 Retrofit 的基本用法

一、添加依賴和網絡權限 添加依賴 implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter