第十四章 使用Kotlin開(kāi)發(fā)Android程序
Kotlin for android
https://github.com/EasyKotlin/Kotlin-for-Android-Developers
展示一個(gè)實(shí)現(xiàn)登錄注冊(cè)的demo
下面就我們就開(kāi)始一個(gè)入門(mén)級(jí)別的demo吧玩郊,現(xiàn)在谷歌已經(jīng)推出了android studio3.0已經(jīng)支持了Kotlin這門(mén)語(yǔ)言肢执,下載地址:https://developer.android.google.cn/studio/preview/index.html ,只需要在這里新建一個(gè)工程译红,然后在是否要加入kotlin的選項(xiàng)上面勾一下就可以了预茄。
下面看一下登錄注冊(cè)的代碼:
class MainActivity : AppCompatActivity() {
var userName: EditText? = null
var userPwd: EditText? = null
var register: Button? = null
var login: Button? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
userName = findViewById(R.id.user_name) as EditText
userPwd = findViewById(R.id.user_pwd) as EditText
register = findViewById(R.id.register) as Button
login = findViewById(R.id.login) as Button
login!!.setOnClickListener {
if (userName!!.text.toString() == "123456" && userPwd!!.text.toString() == "abc") {
Toast.makeText(this, "login succeed1", Toast.LENGTH_SHORT).show()
val intent = Intent(this,HomeActivity::class.java)
startActivity(intent)
}
}
register!!.setOnClickListener {
Toast.makeText(this, "the function has not open ...", Toast.LENGTH_SHORT).show()
}
}
}
當(dāng)然實(shí)現(xiàn)的代碼就非常簡(jiǎn)單啦,只是可能我們?cè)趧傞_(kāi)始接觸這門(mén)語(yǔ)言的時(shí)候有一些的不理解侦厚。大家可以看一下上面的代碼耻陕,要是有什么不理解的地方歡迎issue。
源碼地址:https://github.com/linsir6/Kotlin
https://github.com/EasyKotlin/Bandhook-Kotlin
Kotlin生態(tài)庫(kù)
項(xiàng)目模式
Kotlin
讓你的代碼量大大減少刨沦,函數(shù)式編程讓你爽到飛上天诗宣!如果你想學(xué)習(xí)Kotlin,本項(xiàng)目應(yīng)該會(huì)給你不少幫助想诅。
MVP
通過(guò)契約類(lèi)Contract管理View Model Presenter接口召庞。
- Model -- 主要處理業(yè)務(wù),用于數(shù)據(jù)的獲取(如網(wǎng)絡(luò)来破、本地緩存)篮灼。
- View -- 用于把數(shù)據(jù)展示,并且提供交互徘禁。
- Presenter -- View和Model交互的橋梁诅诱,二者通過(guò)Presenter建立聯(lián)系。
主要流程如下: 用戶與View交互晌坤,View得知用戶需要加載數(shù)據(jù)逢艘,告知Presenter,Presenter則告知Model骤菠,Model拿到數(shù)據(jù)反交于Prsenter它改,Presenter將數(shù)據(jù)交給View進(jìn)行展示。
Dagger2
項(xiàng)目中,主要進(jìn)行presenter商乎、model央拖、retrofit Api等類(lèi)的注入操作。
ApiComponent
主Component鹉戚、用于注入AppComponent鲜戒、便于提供子Component依賴。
依賴于:
1.ApiModule(提供okhttpClient抹凳、Retrofit遏餐、Api等)
2.AppModule(提供context對(duì)象(okhttp攔截器所需))
FuckGoodsComponent
父Component為ApiComponent 用于注入FuckGoodsPresenter
依賴于: FuckGoodsModule(提供FuckGoodsView)
RandomComponent
父Component為ApiComponent 用于注入RandomPresenter
依賴于 : RandomModule(提供RandomView)
Rxjava + Retrofit + okhttp3
主要用于網(wǎng)絡(luò)訪問(wèn)。
DeepLinkDispatch
基于路由進(jìn)行頁(yè)面轉(zhuǎn)發(fā)赢底。
GankClientUri 定義一些路由規(guī)則失都、URI等
GankRouter 統(tǒng)一由此進(jìn)行路由操作
GSON
用于json的解析操作。
Glide
用于圖片的加載幸冻。
ByeBurGer
用于導(dǎo)航欄以及懸浮按鈕滑動(dòng)隱藏粹庞。
參考資料
1.http://git.bookislife.com/post/2016/dev-android-using-scala/
2.https://github.com/saturday06/gradle-android-scala-plugin
3.https://github.com/pocorall/scaloid
Kotlin 開(kāi)發(fā)者社區(qū)
國(guó)內(nèi)第一Kotlin 開(kāi)發(fā)者社區(qū)公眾號(hào),主要分享洽损、交流 Kotlin 編程語(yǔ)言庞溜、Spring Boot、Android碑定、React.js/Node.js流码、函數(shù)式編程、編程思想等相關(guān)主題延刘。