原创 Kotlin面向對象總結(Any、Any?、Nothing、自動裝箱與拆箱、數組類型)

Java並不能在真正意義上被稱作一門“純面向對象”語言,因爲它的基本類型與函數並不能看作對象。 在Kotlin類型系統中,並不區分基本數據類型與包裝類型。   Kotlin類型結構圖(選取String、Int、自定義類型)   Any

原创 Kotlin面向對象總結-延遲初始化與主從構造函數

延遲初始化: by lazy 和 lateinit by lazy class PayFlyAnimal(val weight: Double, val age: Int, val color: String) { val s

原创 Android實現文本摺疊效果

小需求:默認展示4行,超過4行出現“查看全部”,點擊則加載浮層顯示完整內容; 實現是參考下面網址代碼,但是有一些改動(主要涉及純引英文的文本下面網址的代碼可能有些問題) https://www.jianshu.com/p/f4f99eb9

原创 Activity打開後被應用快照遮住的問題

爲公司的銀聯二維碼功能增加一個桌面快捷方式功能的時候,遇到一個頭疼的問題,問題如下: 測試來回切換app主界面的四個tab,然後點擊home鍵,點擊桌面快捷方式,概率性出現銀聯二維碼界面被主界面快照遮蓋。 現象(銀聯二維碼界面被主界面快照

原创 Kotlin 擴展函數的侷限與注意點總結

一、擴展方式對擴展函數的影響 Kotlin是一種靜態類型語言,我們創建的每個對象不僅具有運行時,還具有編譯時類型,開發人員必須明確指定(在Kotlin中可以判斷)。在使用擴展函數時,要清楚地瞭解靜態調用和動態調用之間的區別。 1.靜態與動

原创 Kotlin標準庫中常用擴展函數總結

Kotlin標準庫中有一些非常實用的擴展函數。 run /** * Calls the specified function [block] with `this` value as its receiver and returns

原创 Kotlin基礎總結(部分二) 字符串

kotlin中字符串的定義和操作 fun main() { val str = "hello world!" println("str.length:" + str.length) println("str.s

原创 Kotlin總結之內聯函數

在Kotlin 中使用 Lambda表達式會帶來一些額外的開銷。但可以通過內聯函數優化。 一. 優化Lambda開銷 在Kotlin中每次聲明一個Lambda表達式,就會在字節碼中產生一個匿名類。該匿名類包含了一個invoke方法,作爲L

原创 總結幾個Kotlin擴展的應用

一、用擴展函數優化Snackbar 例如一般Snackbar的使用: Snackbar.make( coordinatorLayout!!, "這是一個snackbar", Snackbar.LENGTH_SHO

原创 Kotlin多態和擴展總結

一.多態的不同方式 對Java而言,多態是面向對象設計的一個重要特徵。當我們使用一個子類繼承一個父類的時候,這就是子類型多態。另一種是參數多態(泛型)。 1.1子類型多態 class PayCustomerHelper(context:

原创 Kotlin集合庫的設計總結(部分)

一、集合的繼承關係 Iterable爲Kotlin集合庫的頂層接口。 每一個集合分爲兩種,一種爲帶Mutable前綴的,另一種則是不帶的。比如常見的列表分爲MutableList和List,List實現了Collection接口,Muta

原创 Lambda和集合總結( 部分)

在集合操作中使用Lambda會使代碼變得非常簡潔和優雅,但是這種簡潔和優雅也是有代價的,就是在Kotlin中使用Lambda表達式會帶來一些額外的開銷。爲了解決這個問題,所以要了解下內聯函數。 1.調用Java函數式接口 textCli

原创 Kotlin基礎語法總結(部分)

1.增強的類型推導。(類型推導是Kotlin在Java基礎上增強的語言特性之一)   fun main(args: Array<String>) { val str = "Kotlin" val numberInt =

原创 Android 8.0 Activity啓動流程分析

Activity啓動過程中需要注意的一些類: Instrumentation     完成對Application和Activity初始化和生命週期調用的工具類。用來監控系統與應用的交互。 ActivityThread     管理應用進

原创 Kotlin面向對象總結-解決多繼承的問題

kotlin和Java一樣只支持類的單繼承。   1.接口實現多繼承 kotlin中的接口與Java很相似,但它除了可以定義帶默認實現的方法之外,還可以聲明抽象的屬性。 用kotlin接口實現多繼承 package com.examp