《Kotlin 程序設(shè)計(jì)》第十四章 使用Kotlin開(kāi)發(fā)Android程序

第十四章 使用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)主題延刘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末旅掂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子访娶,更是在濱河造成了極大的恐慌商虐,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件崖疤,死亡現(xiàn)場(chǎng)離奇詭異秘车,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)劫哼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)叮趴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人权烧,你說(shuō)我怎么就攤上這事眯亦∩烁龋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵妻率,是天一觀的道長(zhǎng)乱顾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)宫静,這世上最難降的妖魔是什么走净? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮孤里,結(jié)果婚禮上伏伯,老公的妹妹穿的比我還像新娘。我一直安慰自己捌袜,他們只是感情好说搅,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著虏等,像睡著了一般蜓堕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上博其,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天套才,我揣著相機(jī)與錄音,去河邊找鬼慕淡。 笑死背伴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的峰髓。 我是一名探鬼主播傻寂,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼携兵!你這毒婦竟也來(lái)了疾掰?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤徐紧,失蹤者是張志新(化名)和其女友劉穎静檬,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體并级,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拂檩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘲碧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稻励。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖愈涩,靈堂內(nèi)的尸體忽然破棺而出望抽,到底是詐尸還是另有隱情加矛,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布煤篙,位于F島的核電站斟览,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏舰蟆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一狸棍、第九天 我趴在偏房一處隱蔽的房頂上張望身害。 院中可真熱鬧,春花似錦草戈、人聲如沸塌鸯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)丙猬。三九已至,卻和暖如春费韭,著一層夾襖步出監(jiān)牢的瞬間茧球,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工星持, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抢埋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓督暂,卻偏偏與公主長(zhǎng)得像揪垄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逻翁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,729評(píng)論 25 707
  • afinalAfinal是一個(gè)android的ioc饥努,orm框架 https://github.com/yangf...
    wgl0419閱讀 6,264評(píng)論 1 9
  • afinalAfinal是一個(gè)android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,406評(píng)論 2 45
  • 當(dāng)自己逐漸成為了自己最初討厭的模樣八回,你曾經(jīng)的堅(jiān)強(qiáng)酷愧,就會(huì)變得不堪一擊。
    EXITWXM閱讀 165評(píng)論 0 0
  • 2017.8.31.19:00 ??????評(píng)定孩子自信心有十個(gè)等級(jí)缠诅, 你的孩子能打幾分: 自信心1 分:孩子說(shuō)話特別輕...
    cab295f10a3b閱讀 447評(píng)論 0 0