答案是“否”,因为它目前存在一个致命的缺陷,在首次编译项目时比groovy DSL慢很多,大项目中这一点会被放大,所以大家在上手之前需要慎重权衡利弊。...相信在不久的未来kotlin DSL可以解决这个问题,那么利用kotlin DSL构建项目势必会成为趋势。...在写Android布局时,我们都习惯性的使用XML进行编写,但是可以考虑丢下冗长的XML写法,尝试使用Anko Layout来实现。...Anko库实际上是用kotlin对相关类做了一层扩展包装,基于这一点,它的局限性也体现在于会增加包大小,在使用之前可以根据项目评估一下是否适合引入Anko库。...3)在我们编写的DSL应用范围越来越大时,已有DSL往往满足不了现有的需求,我们仍然需要对DSL进行补充,所以在定义自己的DSL时需要评估后期开发维护效率,注意其可扩展性。
最近在写项目时,再次拿出anko这个框架,思考它在UI小组件上的可用性。 PS: Anko !...经过大家的一些踩坑,以及开发上的试用,一致表示,Anko Layouts无法用在成熟的项目之中,还是老老实实用XML吧… Anko Layouts的DSL设计那么棒… 就要这么放弃了吗 大家眼里的Anko...这些问题在你计划把Anko Layouts DSL 作为构建View的方式后,逐个浮出水面,然后开始劝退… QAQ Anko Layout DSL 到底在干什么 为什么我们可以用DSL来写界面?...XML只能设置paddingLeft/paddingRight,在Anko DSL / 自定义DSL里面就可以很轻易的封装出一个horizontalPadding。...而当你的设计图可以精确到dp的时候,完全可以用DSL来描述UI的各个小组件,因此DSL在这里不应该被一棒子打死,DSL在目前的项目中,可以很好的替代手工 newView,add view的部分,以及小规模的
Int = 0, init: MapView.() -> Unit): MapView { return ankoView({ MapView(it) }, theme, init) } 在项目中使用...使用的时候,先要在类中引入org.jetbrains.anko.* 然后在onCreate()中,DSL就可以用了: override fun onCreate(savedInstanceState:...Anko的监听器辅助可以无缝支持协程。...你可以在监听器中直接写异步代码: button("Login") { onClick { val user = myRetrofitService.getUser().await...XML到DSl的转换器 这个插件也支持XML布局转换成Anko布局代码。打开XML文件选择 Code -> Convert to Anko Layouts DSL。可以同时转换多个XML布局文件。
Anko (https://github.com/Kotlin/anko) 是一个用 Kotlin 写的Android DSL (Domain-Specific Language)。...android 布局库 Anko SQLite 用于 android sqlite 的查询 dsl 和分析库 Anko Coroutines 基于 kotlinx 协程库 有了Anko 我们就能直接用...dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } 在项目依赖里添加...螢幕快照 2017-07-21 16.01.41.png 13.6.3 Anko依赖 在项目依赖里添加 // Anko compile 'org.jetbrains.anko:anko-sdk15...另外,Kotlin 的 Android 视图 DSL Anko帮我们从繁杂的 XML 视图配置文件中解放出来。
前言 DSL并不是单独为Kotlin语言提供的,可能你并知道DSL是什么,但是我敢说,只要你是Android开发者,你就一定使用过并且一直在使用DSL,那么到底什么是DSL?...,只不过我们为了装13,就取的和我们经常使用的一样,声明一个list数组,为list提供添加的数据的方法,类代码如下所示: class Dependency { var libs = mutableListOf...Anko插件 最后我们来简单的介绍下DSL在Kotlin中的一个框架Anko,Anko用Kotlin DSL 写的Android插件,Anko主要的作用是替代以前用XML的方式来生成UI布局。...关于Anko插件如何使用,就不讲解了,感兴趣的可直接到Github上了解:https://github.com/Kotlin/anko 写在最后 DSL的使用场景远远不止这些,其实前提就是使用好高阶函数...其实不管任何一种技术,一个框架,我们不能评判他的好坏,存在即合理,推动项目开展才是王道。好了 ,DSL的基础了解就到这里了,快去愉快的装13吧~
Android转到Kotlin的趋势是必然的,公司隔壁部门已经全部使用Kotlin开发,我们在以后新的项目里,也会以Kotlin为主。...关于Kotlin的知识,博主只是在去年下半年的时候看过官网的教程,也读了《Kotlin for Android Developers》,并写了一个练手项目,不过大半年过去了,要把以前学过的知识重新拿起来有点儿不易...,并使用netNull委托避免Kotlin中的空异常检查,然后在onCreate中赋值 第二种:Kotlin关键字object object CommonParam { var TAG =...扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响。 这里列出几个常用的拓展函数: /** * Map<K, V?...Layouts 对于Anko Layouts的话,就相当于把xml的形式以DSL写在代码里,看起来很方便,不过楼主还是习惯了xml的方式,AnkoLayouts使用的比较少,想用的小伙伴们可以自行百度学习吧
而当在Java代码中调用Kotlin对象时,Kotlin生成的class文件也要输入到Java编译器,这时Java文件才能生成正确的class文件。...当然,我们可以直接下载Kotlin编译器下来查看他的编译过程。Kotlin编译器的代码都是用java写的,所以使用Kotlin编译器必须要有java环境。...在Java中泛型是不变的,比如:虽然A继承B,但List和List之间没有任何关系,Java是通过泛型通配符来实现型变的: 3,反射 反射是运行于JVM中的程序检测和修改运行时的一种行为,通过反射可以在运行时获取对象的属性和方法...16.1.3 编译器konan 16.2 Kotlin Native实例 16.2.1 构建Kotlin Native项目 16.2.2 添加konan插件配置 16.2.3 编写源代码 16.2.4...18.2 浅谈Android开发架构模式 18.2.1 MVC 18.2.2 MVP 18.2.3 MVVM 18.3 项目准备 18.3.1 新建Android项目 18.3.2添加项目库依赖 18.3.3
在构建证券交易系统的过程中,在证券交易活动中存在许多专业的金融术语和过程。...常见的DSL 常见的DSL在很多领域都能看到,例如: 软件构建领域 Ant UI 设计师 HTML 硬件设计师 VHDL DSL 与通用编程语言的区别 DSL 供非程序员使用,供领域专家使用; DSL...) 外部 DSL(从零开始构建的语言,需要实现语法分析器等) Android Gradle构建 Groovy是一种运行在JVM虚拟机上的脚本语言,能够与Java语言无缝结合,如果想了解Groovy可以查看...作为一个基于Gradle的项目工程,项目结构中的settings.gradle和build.gradle这类xxx.gradle可以理解成是Gradle构建该工程的执行脚本,当我们在键盘上敲出gradle...Kotlin和anko进行Android开发 anko Anko 是一个 DSL (Domain-Specific Language), 它是JetBrains出品的,用 Kotlin 开发的安卓框架。
目录 配置 Anko 再也不用findViewById Anko Layout 实现一个简单的登录界面 1 配置 项目gradle文件: ? app Gradle文件: ?...而Anko Layout可以使用DSL动态创建我们的UI,并且它比我们使用Java动态创建布局方便很多主要是更简洁,它和拥有xml创建布局的层级关系,能让我们更容易阅读。 ?...并且Button中有一个点击事件,当点击时将EditText的内容以toast显示。 ?...不管怎样,这种DSL确实便于阅读,也很容易上手,在上面的代码中,你可能注意到了dip(10),它表示将10dp转换为像素的意思,是Anko的扩展函数,说的扩展函数,如果阅读过Anko的源码我们发现里面大量的使用扩展函数...想更深入学习可以去GitHub Anko(https://github.com/Kotlin/anko),到此呢,本篇文章也就结束了,若在阅读时发现错误之处,欢迎指出,谢谢,Have a wonderful
app DEMO 书籍 视频 开源库 框架 KBinding - 使用kotlin实现的Android MVVM框架 Kotlin-Android-Template - 快速生成MVP 架构的项目模板...android-clean-architecture-boilerplate - clean 框架模板 DSL anko - JetBrains 官方为Android编写的 DSL,旨在令开发 Android...更快更简单 android-drawable-dsl - 通过 kotlin 构造 drawable 而不是 XML 的 DSL MaterialDrawerKt - 不使用 XML 创建 Material...Design 导航抽屉 扩展 android-ktx - google 开源的 Kotlin 扩展插件库,在 Android 框架和 Support Library 上提供相应 API 层,帮助开发者更自然编写...炫酷 toolbar 实现 效果图: 按钮 Stepper-Touch - Material Design设计风格的触摸步进器 效果图: 依赖注入
kotlin是一门基于jvm的编程语言,最近进行了关于kotlin和 anko的研究。并且结合现在的APP设计模式,设想了初步的开发方式。并且准备应用在新的项目中。...例如扩展函数,简单的封装再也不需要写一大堆Utils工具类,直接灵活的给某些类添加扩展方法就可以了。...类中就多出了一个toast方法,实际上在anko中,也有大量已经写好的扩展方法,可以直接使用DSL语法去写UI。...'} //这是你需要加入的 } } 然后,在你app moudle的build文件里面添加依赖: compile "org.jetbrains.anko:anko-sdk15:0.9.1" //...,我在最上方添加了Toolbar。
在函数中指定默认参数值。使用命名参数使代码更具可读性。 Day 13:从 Java 编程语言调用 Kotlin 在同一个项目中使用 Kotlin 和 Java?您有没有顶级功能或属性的课程?...用作表达式时,如果有类型不匹配,编译器将会出错。...将它们添加到源文件的顶层。在 Java 中,它们被编译为该类的静态方法。 您是否为您的类定义了静态常量?使它们成为顶级属性。它们将被编译为字段和静态访问器。...Android 上 Kotlin 的另一个 DSL 是 Anko。Anko 允许您使用声明性代码构建 Android 视图。...我们也讨论了高级特性:领域特定语言 (DSL)。 点击此处您可查看更多 Android 和 Google Play 相关内容信息 ?
它更加安全:Kotlin是空安全的,也就是说在我们编译时期就处理了各种null的情况,避免了执行时异常。你可以节约很多调试空指针异常的时间,解决掉null引发的bug。...而Anko Layout可以使用DSL动态创建我们的UI,并且它比我们使用Java动态创建布局方便很多。主要是更简洁,它拥有类似xml创建布局的层级关系,能让我们更容易阅读。...如果你在不同的包里面也存在同样的方法,在调用时就不能明显区分出是调用的哪个方法。你可以通过在前面添加包名的方式去调用,但是如果 Java 约定的包名很深,似乎不太友好。...Kotlin有异常机制,但不要求你在函数的类型里面声明可能出现的异常类型,也不使用静态类型系统对异常的处理进行检查和验证。...Java 编译器的静态类型检查会告诉你,在什么地方必须写 try-catch,或者加上 throws 声明。
在创建“人”的列表时,你省略了Alice的年龄,所以这里年龄使用了默认值null。然后你调用了maxBy函数来查找列表中年纪最大的那个“人”。...这里有一个可能是最简单的例子 : val x = 1 在声明这个变量时,由于变量初始化为整型值,Kotlin 自动判断出它的类型是 Int。编译器这种从上下文推断变量类型的能力被称作类型推导。...它更小,更少地依赖与 现有的代码集成,通常需要快速交付,同时需要保证在大量的设备上能够可靠地运 行。这类项目 Kotlin 也能胜任。...常见的开发任务,比如给控件添加监听器或是把布局元 素绑定到字段,可以用更少的代码完成,有时甚至根本不用写任何代码(编译器会帮你生成)。...同样由 Kotlin 团队打造的库 Anko(https://github.com/kotlin/anko)给许多标准 Android API 添加了 Kotlin 友好的适配器,进一步提升了 Android
Anko方案 Anko是JetBrains开发的一个强大的库,支持使用kotlin DSL的方式来写UI,如下所示: class MyActivity : AppCompatActivity() {...} } } } } 如上所示,Anko使用kotlin DSL实现布局,它比我们使用Java动态创建布局方便很多,主要是更简洁,它和拥有xml创建布局的层级关系...上面介绍了不少布局加载优化方法,而我最后在项目中最后都没有使用,这就是从真从入门到放弃。...手机与10.0手机上分别做了测试,在我们的项目中布局加载耗时并不很长,同时它们在整个页面可见过程中,占得比例也并不高。...4.介绍了因为在我们在项目中布局加载耗时优化收益不大,所以没有引入上述优化手段。
这里添加了 Kotlin 对 Android 的扩展,同时也添加了 Kotlin 的 Gradle 插件。...3.2 空安全与属性代理 第一次见到空类型安全的设计是在 Swift 当中,那时候还觉得这个东西有点儿意思哈,一旦要求变量不能为空以后,因它而导致的空指针异常的可能性就直接没有了。...这表示编译器不再强制 savedInstanceState 是否可 null,开发者在覆写时可以自己决定是否可 null。...因为这段代码是 inline 的,最终编译时是要编译到调用它的代码块中,这时候T的类型实际上是确定的,因而 Kotlin 通过 reified 这个关键字告诉编译器,T 这个参数可不只是个摆设,我要把它当实际类型来用呢...方式的布局没有运行时的解析的负担,你的逻辑代码怎么运行它就怎么运行 Anko还增加了更多好玩的特性,有兴趣的可以参考:Anko@Github (https://github.com/Kotlin/anko
3.2 空安全与属性代理 第一次见到空类型安全的设计是在 Swift 当中,那时候还觉得这个东西有点儿意思哈,一旦要求变量不能为空以后,因它而导致的空指针异常的可能性就直接没有了。...这表示编译器不再强制 savedInstanceState 是否可 null,开发者在覆写时可以自己决定是否可 null。...在 Kotlin 当中呢? ? 每次用 aTextView 都要加俩!,不然编译器不能确定它究竟是不是 null,于是不让你使用。。这尼玛。。。到底是为了方便还是为了麻烦??...因为这段代码是 inline 的,最终编译时是要编译到调用它的代码块中,这时候T的类型实际上是确定的,因而 Kotlin 通过 reified 这个关键字告诉编译器,T 这个参数可不只是个摆设,我要把它当实际类型来用呢...方式的布局没有运行时的解析的负担,你的逻辑代码怎么运行它就怎么运行 Anko还增加了更多好玩的特性,有兴趣的可以参考:Anko@Github (https://github.com/Kotlin/anko
我想告诉你一个名为Kotlin的新编程语言并且阐述为什么你应该考虑下一个项目中使用它。...,这样你的IDE将会帮助你在代码中找到相应的功能,这一点在Kotlin上面很容易实现. fun String.format(): String { return this.replace(' ',...默认情况下,类型为非空,并且可以默认添加一个?...创建的理想选择,查看Anko的DSL示例,旨在服务Android开发. erticalLayout { padding = dip(30) editText { hint = “Name”...举一个小的例子,当我第一次尝试从StackOverflow中复制粘贴一些Java代码时,这个东西就弹出来了.
kotlinx. html 分别提供了kotlinx-html-jvm 和 kotlinx-html-js库的DSL , 用于在 JVM 和浏览器 (或其他 javascript 引擎) 中直接使用 Kotlin...框架 Anko,它使用基于Kotlin 的DSL 来声明Android UI组件,而不是传统的XML。...DSL 有内部 DSL 跟外部 DSL 之分。例如 Gradle、Anko 等都是我们使用通用编程语言(Java 和 Kotlin)创建的内部DSL。...内部DSL 内部DSL是指与项目中使用的通用目的编程语言(Java、C#或Ruby)紧密相关的一类DSL。它基于通用编程语言实现。...我们使用的是 'com.github.ReactiveX:RxKotlin:2.1.0' , 这个库是在 https://jitpack.io 上,所以我们在repositories配置里添加 jitpack
领取专属 10元无门槛券
手把手带您无忧上云