Kotlin-Android-Extensions 库使用及源码解析

本文介绍了Kotlin-Android-Extensions插件的使用和源码分析,展示了如何引入插件并简化Android开发中的findViewById操作。通过反编译和源码查看,揭示了插件如何自动生成代码并缓存视图,以提高开发效率。
摘要由CSDN通过智能技术生成
本文预计阅读时间为 15-20 分钟

一、Kotlin-Android-Extensions 简介

Kotlin 从首次推出到现在,可谓发展的十分迅速,独特的空安全特性吸引了很多 Android 开发者去使用,Google 也正式将 Kotlin 这门语言作为 Android 开发的首选语言。Kotlin 官方也为各位开发者提供了一系列的插件,开发文档以及 IDE 支持,本文介绍的 Kotlin-Android-Extensions 就是一款 Kotlin 的安卓开发扩展插件。

二、Kotlin-Android-Extensions 使用

引入

直接在 build.gradle 中引入该插件:

apply plugin: 'kotlin-android-extensions'
使用

模拟的业务场景如下:

  • 在 activity_main.xml 中创建一个 id 为 button_test 的 button
  • 在 MainActivity.kt 中为这个 button 设置点击事件
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*

/**
 * Created by Xu on 2020/02/05.
 *
 * @author Xu
 */
class MainActivity: AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        button_test.setOnClickListener { 
            // todo
        }
    }
}

这里可以观察到,并没有熟悉的 findViewById() 方法,而是直接使用了 button_test 这个对象,该对象其实是由插件根据布局 xml 中所设置的控件 id 而自动生成的。

三、Kotlin-Android-Extensions 源码分析

为什么不需要使用到 findViewById() 方法呢?之前我在分析 ButterKnife 源码的时候也问过类似的问题(传送门),最后其实是通过 APT(编译时注解)的方式自动生成了 findViewById 方法,猜测这里也是通过类似的自动生成代码方式帮我们补充了。

我们首先试着去反编译 Kotlin ByteCode,具体是通过打开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值