Kotlin-Anko學習(1) Kotlin帽氓、Anko 介紹

本系列文章來學習 Kotlin 和 Anko 插件 通過 Kotlin 開發(fā)一個 Android 項目驼鹅。
Kotlin-Anko學習(1) Kotlin州藕、Anko 介紹
Kotlin-Anko學習(2) Kotlin 語法基礎-基本類型
Kotlin-Anko學習(3) Kotlin 語法基礎-關鍵字 package榨馁、Import憨栽、if、when翼虫、for屑柔、while、return珍剑、break掸宛、continue
Kotlin-Anko學習(4) Kotlin語法-類、繼承招拙、抽象類
Kotlin-Anko學習(5) Kotlin語法-屬性唧瘾、字段措译、接口

Kotlin介紹

Kotlin語言 是由JetBrains公司開發(fā),在2017年Google I/O 大會上饰序,確立為Android官方開發(fā)語言领虹。

Kotlin語言特性

  1. 目標平臺:
  • Windows(目前只支持 x86_64)
  • Linux(x86_64、 arm32菌羽、 MIPS掠械、 MIPS little endian)
  • MacOS(x86_64)
  • iOS(只支持 arm64)
  • Android(arm32 與 arm64)
  • WebAssembly(只支持 wasm32)
  1. 與Java 100%兼容 完全互操作性
  2. 語法簡單 實用 富于表現力和高效地生產力 支持Lambda表達式(語法會在后續(xù)學習)
  3. 類型推斷 自動根據上下文來推斷類型
  4. 空安全 編譯期語法層面檢查可空類型
  5. 支持協程進行并發(fā)編程
  6. 支持函數式編程 (值就是函數由缆,函數就是值注祖。所有函數都消費函數,所有函數都生產函數)
  7. 支持快速實現 DSL
    ......

Kotlin語言設計

Andrey Breslav, Kotlin創(chuàng)始人
我們認為Kotlin的定位是一種現代化工業(yè)語言:它專注于代碼重用和可讀性的彈性抽象均唉,以及面向早期錯誤偵測是晨,和明確捕獲維護與清理的意圖,這些問題的靜態(tài)類型安全性舔箭。Kotlin最重要的使用場景之一是對于一個龐大的Java代碼庫罩缴,其開發(fā)者需要一個更棒的語言:你能夠將Java和Kotlin自由混合,遷移可以是漸進式的层扶,不需要一下子對整個代碼庫進行改變箫章。

Kotlin設計了一個“歸一化”的類型系統(一切類型皆是引用類型),純天然地設置了一道空指針的屏障镜会,使得Kotlin比Java更加安全可靠檬寂。Kotlin還引入了類型推斷、一等支持函數式編程戳表、Lambda桶至、高階函數、類的擴展函數與屬性匾旭、DSL等諸多特性镣屹,使得我們可以編寫簡單、優(yōu)雅且高效的代碼价涝,更加專注地投入在業(yè)務邏輯的實現上女蜈。

Anko介紹

Anko是一個提供圍繞 Android API 的 Kotlin 友好的包裝器的庫 ,以及一個可以用 Kotlin 代碼替換布局 .xml 文件的 DSL色瘩。

Anko插件的組成

1.Anko組件:

  • 意圖 Intents (wiki)
  • 對話框和提示 Dialogs and toasts (wiki)
  • 日志 Logging (wiki)
  • 資源 Resources and dimensions (wiki)
  1. Anko布局 Anko Layouts (wiki):
//采用Anko在代碼中寫動態(tài)布局鞭光,無需寫layout XML
verticalLayout {
    val name = editText()
    button("Say Hello") {
        onClick { toast("Hello, ${name.text}!") }
    }
}

以上代碼實現的布局:
Anko 布局.png
  1. Anko數據庫交互 Anko SQLite (wiki)
// 通過family_name 查詢家庭成員列表
fun getUsers(db: ManagedSQLiteOpenHelper): List<User> = db.use {
    db.select("Users")
            .whereSimple("family_name = ?", "John")
            .doExec()
            .parseList(UserParser)
}
  1. Anko協同程序 Anko Coroutines (wiki)
//提供asReference,采用若引用泞遗,避免內存泄露
suspend fun getData(): Data { ... }

class MyActivity : Activity() {
    fun loadAndShowData() {
    // Ref<T>uses the WeakReference under the hood
    val ref: Ref<MyActivity> = this.asReference()

    async(UI) {
        val data = getData()
            
        // Use ref() instead of this@MyActivity
        ref().showData()
    }
    }

    fun showData(data: Data) { ... }
}
//通過bg() 輕松的開啟后臺線程執(zhí)行耗時操作 提供非常方便的UI/工作線程相互切換
fun getData(): Data { ... }
fun showData(data: Data) { ... }

async(UI) {
    val data: Deferred<Data> = bg {
    // Runs in background
    getData()
    }

    // This code is executed on the UI thread
    showData(data.await())
}

Anko布局預覽插件

通過anko動態(tài)寫的代碼怎么進行預覽呢惰许,Anko提供了一個 Android Studio 插件 (Anko support)來預覽布局:
下面我們介紹 Anko support 的安裝步驟:

  1. 安裝 File - Setting - 搜索(plugs)- 搜索( Anko support )- 安裝插件 - 重啟Android Studio
    安裝.png
  2. 打開 View - Tool Windows - Anko Layout Preview
    使用.png

工具準備好了,下一篇開始學習Kotlin語法 和 Anko 在項目中的實際應用史辙。

參考

簡書
http://www.reibang.com/p/b7d54ff41c95
http://www.reibang.com/p/20f8016e0545
Anko GitHub https://github.com/Kotlin/anko
Kotlin中文網 https://www.kotlincn.net/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末汹买,一起剝皮案震驚了整個濱河市佩伤,隨后出現的幾起案子,更是在濱河造成了極大的恐慌晦毙,老刑警劉巖生巡,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異见妒,居然都是意外死亡孤荣,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門须揣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盐股,“玉大人,你說我怎么就攤上這事耻卡》柚” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵卵酪,是天一觀的道長幌蚊。 經常有香客問我,道長溃卡,這世上最難降的妖魔是什么溢豆? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮瘸羡,結果婚禮上漩仙,老公的妹妹穿的比我還像新娘。我一直安慰自己最铁,他們只是感情好讯赏,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冷尉,像睡著了一般漱挎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雀哨,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天磕谅,我揣著相機與錄音,去河邊找鬼雾棺。 笑死膊夹,一個胖子當著我的面吹牛,可吹牛的內容都是我干的捌浩。 我是一名探鬼主播放刨,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼尸饺!你這毒婦竟也來了进统?” 一聲冷哼從身側響起助币,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎螟碎,沒想到半個月后眉菱,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡掉分,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年俭缓,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酥郭。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡华坦,死狀恐怖,靈堂內的尸體忽然破棺而出褥民,到底是詐尸還是另有隱情季春,我是刑警寧澤洗搂,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布消返,位于F島的核電站,受9級特大地震影響耘拇,放射性物質發(fā)生泄漏撵颊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一惫叛、第九天 我趴在偏房一處隱蔽的房頂上張望倡勇。 院中可真熱鬧,春花似錦嘉涌、人聲如沸妻熊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扔役。三九已至,卻和暖如春警医,著一層夾襖步出監(jiān)牢的瞬間亿胸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工预皇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侈玄,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓吟温,卻偏偏與公主長得像序仙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鲁豪,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345