ViewBindingPropertyDelegate 开源项目教程
1. 项目的目录结构及介绍
ViewBindingPropertyDelegate 项目的目录结构如下:
ViewBindingPropertyDelegate/
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── viewbindingpropertydelegate
├── build.gradle
├── proguard-rules.pro
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── tonydeng
│ │ └── viewbindingpropertydelegate
│ │ ├── ViewBindingProperty.kt
│ │ └── ViewBindingPropertyDelegate.kt
│ └── res
│ ├── values
│ │ └── strings.xml
│ └── values-night
│ └── strings.xml
└── test
└── java
└── com
└── tonydeng
└── viewbindingpropertydelegate
└── ExampleUnitTest.kt
主要目录和文件介绍:
build.gradle
:顶层构建文件,包含项目级别的配置。settings.gradle
:项目设置文件,定义了包含的模块。viewbindingpropertydelegate/
:主要模块目录。build.gradle
:模块构建文件,包含模块级别的配置。src/main/java/com/tonydeng/viewbindingpropertydelegate/
:源代码目录,包含主要的 Kotlin 文件。ViewBindingProperty.kt
:定义了 ViewBinding 属性的接口和实现。ViewBindingPropertyDelegate.kt
:实现了 ViewBinding 属性的委托。
src/main/res/
:资源文件目录,包含字符串资源等。src/test/java/com/tonydeng/viewbindingpropertydelegate/
:测试代码目录,包含单元测试。
2. 项目的启动文件介绍
项目的启动文件主要是 ViewBindingPropertyDelegate.kt
,它位于 src/main/java/com/tonydeng/viewbindingpropertydelegate/
目录下。这个文件实现了 ViewBinding 属性的委托,使得在 Android 开发中可以更方便地使用 ViewBinding。
ViewBindingPropertyDelegate.kt 主要内容:
package com.tonydeng.viewbindingpropertydelegate
import android.view.View
import androidx.viewbinding.ViewBinding
class ViewBindingPropertyDelegate<T : ViewBinding>(
private val viewBinder: (View) -> T
) {
private var viewBinding: T? = null
operator fun getValue(thisRef: View, property: KProperty<*>): T {
return viewBinding ?: viewBinder(thisRef).also { viewBinding = it }
}
operator fun setValue(thisRef: View, property: KProperty<*>, value: T) {
viewBinding = value
}
}
fun <T : ViewBinding> viewBindingPropertyDelegate(viewBinder: (View) -> T) =
ViewBindingPropertyDelegate(viewBinder)
这个文件定义了一个委托类 ViewBindingPropertyDelegate
,它通过 getValue
和 setValue
方法实现了 ViewBinding 属性的获取和设置。
3. 项目的配置文件介绍
项目的配置文件主要包括顶层和模块级别的 build.gradle
文件,以及 settings.gradle
文件。
顶层 build.gradle
文件:
// 顶层 build.gradle 文件内容
buildscript {
ext.kotlin_version = '1.5.21'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
模块级别 build.gradle
文件:
// 模块 build.gradle 文件内容
plugins {