本篇文章主要讲的是,kotlin 协程在 ktx 上的扩展 lifecycle 扩展 对于 lifecycle 的扩展,已经在 以前的文章中讲过了 主要的依赖 implementation "androidx.lifecycle...:lifecycle-runtime-ktx:2.2.0" viewModel 扩展 对于 viewModel 的扩展,已经在 以前的文章中讲过了 主要的依赖 implementation 'androidx.lifecycle...:lifecycle-viewmodel-ktx:2.3.1' liveData 扩展 主要的依赖 implementation 'androidx.lifecycle:lifecycle-livedata-ktx
文章目录 一、动画效果添加对象 二、kotlin-android-extensions 插件使用步骤 1、配置 kotlin-android-extensions 插件 2、导入视图 3、完整布局文件...4、Activity 完整代码示例 一、动画效果添加对象 ---- kotlin-android-extensions 插件 实现了 视图绑定 功能 , 开发过程中 , 可以不用调用如下形式 : ①...视图绑定 : ActivityMainBinding.inflate(getLayoutInflater()).textView kotlin-android-extensions 插件视图绑定在导入...plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions...' id 'kotlin-android-extensions' id 'kotlin-kapt' } 2、导入视图 在 Activity 中导入视图 : import kotlinx.android.synthetic.main.activity_main
image.png kotlin-android-extensions kotlin-android-extensions插件可以直接使用资源,节省findviewbyid(), 不需要添加任何额外代码...setSupportActionBar(toolbarView) .......... } ......... } 添加插件 在Gralde中配置: apply plugin: 'kotlin-android-extensions...实例: image.png 使用 代码中使用需要添加头文件: import kotlinx.android.synthetic.main.<布局>.* image.png
Gradle5.0+已经支持了Kotlin,但碍于Android Studio目前适配并不是很好,所以并不建议开发使用,至于为什么,在文章末尾也给出了具体原因。 为什么要使用Kotlin改造?...Gradle采用groovy采用开发语言,是一种动态的dsl语言,缺点就是写脚本时如果出现问题,我们无法实时的得知,只能通过print进行得知,而且无法跳转,并且不支持自动补全。...id("com.android.application") id("kotlin-android") id("kotlin-android-extensions") } android...:gradle:3.5.1") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")...Studio对Kotlin-Gradle支持的并不是很好,所以如果你新建一个model,就会再次新创建gradle配置文件,这样你就得再次手动配置,很麻烦,所以目前Kotlin-Gradle尝鲜即可。
前言 Android 官方已经推荐使用Kotlin 足以见Kotlin的优秀 并且可以在原项目中直接用Kotlin 完全没有什么可担心的 代码比Swift还好用 强烈推荐 推荐 kotlin...官方文档翻译 From Java to Kotlin(推荐) Android获取视图实例 项目的配置文件 buildscript { ext.kotlin_version = '1.1.51'...compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" } apply plugin: 'kotlin-android' apply...plugin: 'kotlin-android-extensions' 直接用视图定义的ID即可 超级方便 <EditText android:id="@+id/loginNameEditText..." android:layout_marginLeft="16dp" android:background="@null" android:ems="10" android
两位ThoughtWorks高级咨询师共同为我们分享Kotlin在Android上的运用。 ? Java VS Kotlin 在Java的使用中会遇到很多问题。...Extensions 在Java中,要想扩展一个类,我们会写一堆Utils。 而在Kotlin中,我们可以直接对double对象进行扩展,再也不需要Utils的类了。...对于null pointer问题,它有optional对象。 有val、late-intialized、lazy和Collections支持。 可以用扩展语法让代码更加可读。...Kotlin in Android 在Android上有一个常见的类叫做viewholder。 ? Kotlin在Android上可以自动把view找出来,不需要手写代码。...Kotlin's Reference 引入Kotlin ? 已知问题 Kotlin与mockito的兼容性。 在Kotlin里的静态代码检查工具还不完善。
Kotlin 直接支持委托模式,更加优雅,简洁。Kotlin 通过关键字 by 实现委托。 类委托 类的委托即一个类中定义的方法实际是调用另一个类的对象的方法来实现的。...该函数接受以下参数: thisRef —— 必须与属性所有者类型(对于扩展属性——指被扩展的类型)相同或者是它的超类型 property —— 必须是类型 KProperty 或其超类型 这个函数必须返回与属性相同的类型...翻译规则在每个委托属性的实现的背后,Kotlin 编译器都会生成辅助属性并委托给它。...例如,如果要在绑定之前检查属性名称,可以这样写: class ResourceLoader(id: ResourceID) { operator fun provideDelegate...如果没有这种拦截属性与其委托之间的绑定的能力,为了实现相同的功能, 你必须显式传递属性名,这不是很方便: // 检查属性名称而不使用“provideDelegate”功能 class MyUI {
四、Top-level function 使用 Android 项目,Kotlin 被编译成运行在 Dalvik 上的 Java 字节码。...为了解决这个问题,Kotlin 编译器为顶级函数生成类。这个类名由 文件名 和 kt 后缀构成。在这样的 class 里函数和属性是静态的。...3、print 是一个 kotlin 函数,但由于它是一个内联函数,因此它的调用被替换为 它在编译期间的主体。...可以直接使用当前方法的变量,不需要去传递;如果把它提取为成员方法,那就需要传递所需要的参数,如果调用修改了参数的形式,那函数的声明也需要重新修改,这样就导致了要修改两个地方(Java 中经常出现这样的问题...image.png 果然,造成了堆栈溢出(recursive call) 这时候使用 Kotlin 提供的备用字段(关键字 field)即可解决这个问题 class Student { var
, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { //... } } Kotlin 版本 class KotlinView...Singleton getInstance() { if (instance == null) createInstance(); return instance; } } 在 Kotlin...//... } @Override public void onServiceConnected(ComponentName name, IBinder service) { //... } } Kotlin...com.facebook.ads.InterstitialAd val fbAd = InterstitialAd(context, "...") // Qualified val googleAd = com.google.android.gms.ads.InterstitialAd...(context) // Unqualified Use Alias import com.facebook.ads.InterstitialAd as FbAd import com.google.android.gms.ads.InterstitialAd
Kotlin作为Android开发第一语言,然而身边做Android的大多还是使用java。...Android转到Kotlin的趋势是必然的,公司隔壁部门已经全部使用Kotlin开发,我们在以后新的项目里,也会以Kotlin为主。...关于Kotlin的知识,博主只是在去年下半年的时候看过官网的教程,也读了《Kotlin for Android Developers》,并写了一个练手项目,不过大半年过去了,要把以前学过的知识重新拿起来有点儿不易...,于是总结了一些Kotlin在Android开发中的常用技巧。...扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响。 这里列出几个常用的拓展函数: /** * Map<K, V?
Throws Exception Kotlin 的异常和 Java 的一样, try…catch…finally代码块处理异常,唯一一点不同是:Kotlin 的异常都是 Unchecked exceptions...Kotlin 抛出异常是使用 Throws 注解来实现的,如下: @Throws(IOException::class) fun createDirectory(file: File) { if...IOException("Directory already exists") file.createNewFile() } 当我们在java代码中使用的时候,如下: [1240] 会提醒我们报错,但是如果在 kotlin...super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) kotlin.runCatching...: Int, num2: Int): Int { 1 / 0 return num1 + num2 } } getOrDefault val result = kotlin.runCatching
Kotlin版 蓝牙开发 (扫描设备、绑定、解绑) 前言 之前写了一个蓝牙的小Demo,看的人还是有一些的,也有人私信我说,在学Kotlin,能不能出一版Kotlin的博客讲述这个蓝牙开发,这个想法还是不错的...没错,这就是Kotlin语言的Android项目,和Java还是有区别的,建议了解了Kotlin的语法再看文章会比较好,当然你也可以对照我写的Android 蓝牙开发(扫描设备、绑定、解绑)Java版来看...是不是立竿见影,这个效果一行代码解决问题还不用写工具类,完全调用系统的方法,请注意我是Android10.0版本的手机,也是我自己用的手机。...,第二行没有给,这是因为在Kotlin中只要一开始做了处理之后后面就可以不用再次处理,当然你加上!!也没有问题。...④ 源码 MyBluetooth-Kotlin MyBluetooth-Java 有什么问题欢迎提出,当然你也可以给我发邮件 lonelyholiday@qq.com 我是初学者-Study,山高水长
一个叫做视图绑定(ViewBinding),而另外一个叫做数据绑定(DataBinding)。 1....总结 与使用 findViewById 相比,视图绑定具有的优点: Null 安全:由于视图绑定会创建对视图的直接引用,因此不存在因视图 ID 无效而引发 Null 指针异常的风险。...此外,如果视图仅出现在布局的某些配置中,则绑定类中包含其引用的字段会使用 @Nullable 标记。 类型安全:每个绑定类中的字段均具有与它们在 XML 文件中引用的视图相匹配的类型。...而相较于DataBinding 的优势在于: 更快的编译速度:视图绑定不需要处理注释,因此编译时间更短。 易于使用:视图绑定不需要特别标记的 XML 布局文件,因此在应用中采用速度更快。...在模块中启用视图绑定后,它会自动应用于该模块的所有布局。 而DataBinding 的优势就在于:布局和数据的双向绑定了。 所以其实我们可以在项目之中同时使用视图绑定和数据绑定。
密封类能解决这个问题。...Kotlin默认支持委托,不像Java,要么用IDE生成一大堆代码,要么在编译期使用其他动态代理工具生成,Kotlin默认提供了by关键字。...官方就为一些自带的委托封装了方法,可能是Kotlin社区惯用的编码规范,确实,这样好看一些,而且Jetpack Compose中的remember实际上也是这样写的。...Kotlin根本没有静态这一说,Kotlin代替静态的办法一个是object,一个是顶层函数。但这俩都不适用于静态工厂,因为静态工厂经常要访问类中的私有成员。 伴生对象是用来干这些的。...fun fromJson(json: String): Person{ ... } } } fun main(){ Person.Loader.fromJson() } 伴生对象也可以有扩展函数
一、Null 相关 Strict null safety 1、Safe call override fun onCreate(savedInstanceStat...
[在这里插入图片描述] 没错,这就是Kotlin语言的Android项目,和Java还是有区别的,建议了解了Kotlin的语法再看文章会比较好,当然你也可以对照我写的Android 蓝牙开发(扫描设备、...[在这里插入图片描述] 是不是立竿见影,这个效果一行代码解决问题还不用写工具类,完全调用系统的方法,请注意我是Android10.0版本的手机,也是我自己用的手机。...,第二行没有给,这是因为在Kotlin中只要一开始做了处理之后后面就可以不用再次处理,当然你加上!!也没有问题。...避免重复添加和添加null的设备进入列表,而点击item,根据绑定状态而定,绑定过蓝牙的点击就是取消绑定,这里调用了一个方法。...④ 源码 MyBluetooth-Kotlin MyBluetooth-Java 有什么问题欢迎提出,当然你也可以给我发邮件 lonelyholiday@qq.com 我是初学者-Study,山高水长
在Kotlin中,扩展函数是一种非常有用的功能,可以让我们向现有的类添加新的功能,而无需修改类的源代码。在本文中,我们将探讨Kotlin扩展函数的原理和运用,以及如何在Android开发中使用它们。...什么是扩展函数? 扩展函数是Kotlin中的一种特殊函数,它允许我们向一个类添加新的函数,而无需继承或修改这个类的源代码。扩展函数的语法非常简单,只需要在函数名前面加上类名,并用点号隔开即可。....reverse() 通过使用限定名称,我们可以明确指定要调用的特定扩展函数,避免了命名冲突的问题。...同时,在使用扩展函数时,需要注意它们的限制并遵循最佳实践。 在Android开发中使用扩展函数 在Android开发中,扩展函数可以帮助我们简化代码,提高开发效率。...以下是一些常见的Android开发场景,可以使用扩展函数来优化代码。 简化findViewById 在Android开发中,我们经常需要使用findViewById来查找布局中的控件。
在build.gradle中添加 apply plugin: 'kotlin-android-extensions' classpath "org.jetbrains.kotlin:kotlin-android-extensions...:$kotlin_version" 然后同步
接下来的几周我们将会为大家连载关于 Kotlin 迁移指南的系列文章,包含 Kotlin 的优势和介绍 (上篇)、迁移到 Kotlin (中篇),以及使用 Kotlin 的常见问题 (下篇),帮助开发者们顺利迁移并开始使用...) Kotlin 还支持扩展方法,可以给现有的类附加新的方法 (而不需要修改类的原始代码)。...Kotlin 里的协程可以理解为从语言级别实现了异步或非阻塞编程,并在 Kotlin 1.3 中开始提供,在 Android 上使用协程可以避免下面的问题: 通过主 (界面) 线程进行调用时可以确保安全...Android KTX 自从两年前 Android 平台开始支持 Kotlin 后,我们一直在努力解决 Kotlin 的兼容性问题并丰富其功能,更进一步为大家带来了许多工具来进一步提高开发效率,比如 Android...它是一组适用于 Android 开发的 Kotlin 扩展功能,对多种常用的 Android 开发流程提供简化的封装 API。 适用于动画、图形、文本等诸多领域。
在 Kotlin 的协程中使用这种风格是强烈不推荐的, 原因如下所述。...由于 async 被定义为了 CoroutineScope上的扩展,我们需要将它写在作用域内,并且这是 coroutineScope 函数所提供的: suspend fun concurrentSum(
领取专属 10元无门槛券
手把手带您无忧上云