原创 linux 環境 編譯 ijkplayer so 庫實踐

一、前言 公司的一個項目新項目涉及到音頻播放的內容,音頻格式從常見的 mp3 到冷門的無損音樂 ape 都有,琢磨了好久,最後選中了 B 站的開源庫 ijkplayer ,可是 ijkplayer 提供的默認 so 庫並不支持無損音樂,而我

原创 重拾Kotlin(21)-委託

一、委託模式 委託模式是一種基本的設計模式,該模式下有兩個對象參與處理同一個請求,接受請求的對象將請求委託給另一個對象來處理。Kotlin 原生支持委託模式,可以零樣板代碼來實現,通過關鍵字 by 實現委託 interface Print

原创 重拾Kotlin(20)-對象表達式與對象聲明

一、Object 關鍵字 1.1、對象聲明 在 Kotlin 的世界中,可以通過對象聲明這一功能來實現 Java 中的單例模式,將類聲明與該類的單一實例聲明結合到一起 與類一樣,一個對象聲明可以包含屬性、方法、初始化語句塊等的聲明,唯一不

原创 重拾Kotlin(19)-中綴調用、解構聲明

一、中綴調用 可以以以下形式創建一個 Map 變量 fun main(args: Array<String>) { val maps = mapOf(1 to "leavesC", 2 to "ye", 3 to "czy")

原创 自定義View合輯(9)-計劃表

爲了加強對自定義 View 的認知以及開發能力,我計劃這段時間陸續來完成幾個難度從易到難的自定義 View,並簡單的寫幾篇博客來進行介紹,所有的代碼也都會開源,也希望讀者能給個 star 哈 GitHub 地址:https://githu

原创 一步步封裝實現自己的網絡請求框架 2.0

一、前言 在今年的二月份,我在發佈本 Repo:基於 ViewModel + LiveData + Retrofit + RxJava 封裝的網絡請求框架 的同時,也寫了一篇博客介紹了項目特色以及實現思路:ViewModel_Retrofi

原创 重拾Kotlin(17)-異常

一、異常 Kotlin 中異常處理的基本形式和 Java 類似 fun compute(index: Int): Boolean { if (index !in 0..10) { throw IllegalArgu

原创 重拾Kotlin(18)-運算符重載

一、運算符重載 Kotlin 允許爲類型提供預定義的操作符實現,這些操作符具有固定的符號表示(例如 + 和 * )和固定的優先級,通過操作符重載可以將操作符的行爲映射到指定的方法。爲實現這樣的操作符,需要爲類提供一個固定名字的成員函數或擴

原创 重拾Kotlin(16)-函數操作符

函數操作符 一、總數操作符 1.1、any 如果至少有一個元素符合給出的判斷條件,則返回 true val list = listOf(1, 3, 5, 7, 9) println(list.any { it > 13 }

原创 重拾Kotlin(15)-with與apply函數

一、with與apply函數 1.1、with函數 with函數用於對同一個對象執行多次操作而不需要反覆把對象的名稱寫出來 例如,爲了構建一個包含指定內容的字符串,需要先後如下調用 fun main(args: Array<String>

原创 重拾Kotlin(14)-Lambda表達式

一、Lambda 表達式 1.1、簡介 Lambda 表達式本質上就是可以傳遞給其它函數的一小段代碼,通過 Lambda 表達式可以把通用的代碼結構抽取成庫函數,也可以把 Lambda 表達式存儲在一個變量中,把這個變量當做普通函數對待

原创 重拾Kotlin(13)-命名參數、默認參數值、可變參數、局部函數

一、命名參數、默認參數值、可變參數 1.1、命名參數 爲了增強代碼的可讀性,Kotlin 允許我們使用命名參數,即在調用某函數的時候,可以將函數參數名一起標明,從而明確地表達該參數的含義與作用,但是在指定了一個參數的名稱後,之後的所有參數

原创 重拾Kotlin(11)-集合

一、集合 1.1、只讀集合與可變集合 Kotlin 的集合設計和 Java 不同的另一項特性是:Kotlin 把訪問數據的接口和修改集合數據的接口分開了,kotlin.collections.Collection 接口提供了遍歷集合元素、

原创 重拾Kotlin(12)-擴展函數和擴展屬性

一、擴展函數和擴展屬性 1.1、擴展函數 擴展函數用於爲一個類增加一種新的行爲,這是爲缺少有用函數的類進行擴展的途徑。擴展函數的用途就類似於在 Java 中實現的靜態工具方法。而在 Kotlin 中使用擴展函數的一個優勢就是我們不需要在調

原创 重拾Kotlin(10)-類型的檢查與轉換

一、類型的檢查與轉換 1.1、類型檢查 is 與 !is 操作符用於在運行時檢查對象是否符合給定類型: fun main(args: Array<String>) { val strValue = "leavesC" pa