《Kotlin 程序设计》第十四章 使用Kotlin开发Android程序

第十四章 使用Kotlin开发Android程序

Kotlin for android

https://github.com/EasyKotlin/Kotlin-for-Android-Developers

展示一个实现登录注册的demo

下面就我们就开始一个入门级别的demo吧,现在谷歌已经推出了android studio3.0已经支持了Kotlin这门语言,下载地址:https://developer.android.google.cn/studio/preview/index.html ,只需要在这里新建一个工程,然后在是否要加入kotlin的选项上面勾一下就可以了。

下面看一下登录注册的代码:

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()
        }

    }

}


当然实现的代码就非常简单啦,只是可能我们在刚开始接触这门语言的时候有一些的不理解。大家可以看一下上面的代码,要是有什么不理解的地方欢迎issue。

源码地址:https://github.com/linsir6/Kotlin

https://github.com/EasyKotlin/Bandhook-Kotlin

Kotlin生态库

项目模式

Kotlin

让你的代码量大大减少,函数式编程让你爽到飞上天!如果你想学习Kotlin,本项目应该会给你不少帮助。

MVP

通过契约类Contract管理View Model Presenter接口。

  • Model -- 主要处理业务,用于数据的获取(如网络、本地缓存)。
  • View -- 用于把数据展示,并且提供交互。
  • Presenter -- View和Model交互的桥梁,二者通过Presenter建立联系。

主要流程如下: 用户与View交互,View得知用户需要加载数据,告知Presenter,Presenter则告知Model,Model拿到数据反交于Prsenter,Presenter将数据交给View进行展示。

Dagger2

项目中,主要进行presenter、model、retrofit Api等类的注入操作。

ApiComponent

主Component、用于注入AppComponent、便于提供子Component依赖。
 
 依赖于:
 
 1.ApiModule(提供okhttpClient、Retrofit、Api等)
 
 2.AppModule(提供context对象(okhttp拦截器所需))

FuckGoodsComponent

父Component为ApiComponent 用于注入FuckGoodsPresenter
 
 依赖于: FuckGoodsModule(提供FuckGoodsView)

RandomComponent

父Component为ApiComponent 用于注入RandomPresenter

依赖于 : RandomModule(提供RandomView) 

Rxjava + Retrofit + okhttp3

主要用于网络访问。

DeepLinkDispatch

基于路由进行页面转发。

GankClientUri 定义一些路由规则、URI等

GankRouter 统一由此进行路由操作

GSON

用于json的解析操作。

Glide

用于图片的加载。

ByeBurGer

用于导航栏以及悬浮按钮滑动隐藏。

参考资料

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 开发者社区

国内第一Kotlin 开发者社区公众号,主要分享、交流 Kotlin 编程语言、Spring Boot、Android、React.js/Node.js、函数式编程、编程思想等相关主题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,962评论 25 709
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    wgl0419阅读 11,509评论 1 9
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,744评论 2 45
  • 当自己逐渐成为了自己最初讨厌的模样,你曾经的坚强,就会变得不堪一击。
    EXITWXM阅读 1,369评论 0 0
  • 2017.8.31.19:00 🤗🤗🤗评定孩子自信心有十个等级, 你的孩子能打几分: 自信心1 分:孩子说话特别轻...
    cab295f10a3b阅读 3,214评论 0 0

友情链接更多精彩内容