前言 随着使用AndroidX,哪些我常用的库有些已经不能用了,所以就重新记录以下AndroidX下常用的库。...&背景圆角 图片圆角RoundedImageView 背景圆角FlycoRoundView //图片圆角 implementation 'com.makeramen:roundedimageview:....positiveText("确认") .negativeText("取消") .onPositive { dialog, which -> } .show() 不设置主题的话...com.jakewharton:butterknife-compiler:8.8.1' 如果编程语言为Kotlin, 替换 annotationProcessor 为 kapt Kotlin项目不建议再使用...implementation "org.jetbrains.anko:anko:$anko_version" 可以使用Anko代替 应用崩溃检测服务 Bugly implementation '
那么,我们该如何在Android中应用这门新的语言呢?今天的这篇文章带你学习使用Kotlin开发Android应用,并对比我们传统语言Java,让你真真切切的感受到他的美和优雅。...有时候写的是不是想吐,可能有些人说现在不是有一些注解的库,如butterknife,当我们使用注解时可以不用findViewById了,使用方式如下 ?...需要注意的是,当我们想这样使用的时候(不用findViewById,直接使用xml控件我们需要在gradle加入apply plugin: 'kotlin-android-extensions'),需要加入下面一句代码...4 Anko Layout 通常我们使用xml文件写我们的布局,但是他有一些缺点如不是类型安全,不是空安全,解析xml文件消耗更多的CPU和电量等等。...而Anko Layout可以使用DSL动态创建我们的UI,并且它比我们使用Java动态创建布局方便很多主要是更简洁,它和拥有xml创建布局的层级关系,能让我们更容易阅读。 ?
implementation 'com.android.support:cardview-v7:27.1.1' implementation 'com.android.support:support-v4:27.1.1' 我的常用组件...Kotlin & anko anko project - build.gradle buildscript { ext.kotlin_version = '1.1.51' //.....:anko-commons:0.10.4" } 权限 XPermission 最快最简单的方式适配Android6.0权限 PermissionsDispatcher 不推荐使用 Adapter...&背景圆角 图片圆角RoundedImageView 背景圆角FlycoRoundView //图片圆角 implementation 'com.makeramen:roundedimageview:...1.0.4' } 仿iOS Segment SHSegmentControl implementation 'com.7heaven.widgets:segmentcontrol:1.17' 加载HTML的TextView
因此这里翻译了一下Anko这个库布局部分。 为什么需要Anko Layouts 默认情况下,Android里的UI是用XML来写的。...它有几个不方便的点: 不是类型安全的 不是空安全的 它强迫你在每个布局中写几乎一样的代码 XML需要解析,这会浪费CPU和电池 最重要的是不能代码复用 当然你可以使用动态代码来生成UI,但是一般来说很难...name: EditText = with(ankoContext) { editText { hint = "Name" } } AnkoComponent 尽管你可以在不创建任何额外类的情况下使用...,Anko在这种情况下会很有帮助。...XML到DSl的转换器 这个插件也支持XML布局转换成Anko布局代码。打开XML文件选择 Code -> Convert to Anko Layouts DSL。可以同时转换多个XML布局文件。
2.根本解决(不需要IO,反射过程,如X2C,Anko,Compose等)。...简单的说我们知道默认情况下 setContentView 函数是在 UI 线程执行的,其中有一系列的耗时动作:Xml的解析、View的反射创建等过程同样是在UI线程执行的,AsyncLayoutInflater...} } } } } 如上所示,Anko使用kotlin DSL实现布局,它比我们使用Java动态创建布局方便很多,主要是更简洁,它和拥有xml创建布局的层级关系...已经停止维护了,这里不建议大家使用,了解原理即可。...2.Anko使用上比较方便同时性能较高,但是比起XML方式改动很大,同时Anko已经放弃维护了,在团队中推动难度大。
DSL:在主程序设计语言之外,用一种单独的语言表示领域专有语言。可以是定制语法,或者遵循另外一种语法,如XML、JSON。...在写Android布局时,我们都习惯性的使用XML进行编写,但是可以考虑丢下冗长的XML写法,尝试使用Anko Layout来实现。...XML写法: Anko Layout写法: 实际上前文提到过,XML本质上也是一种DSL,但是明显使用Anko Layout风格更加简单、也更加灵活。...Anko Layout由于是直接在kt文件中编写控件,那么它相对于xml来说,还有一个优势,即:减少了XML格式的解析过程,从而实现CPU资源和电量的节省。 XML的执行流程: ?...2.4、创建一个自己的DSL Kotlin DSl的优势这么多,那么如何自定义一个DSL?
好好,咱们不吹牛了,赶紧把它老人家请出来: compile 'org.jetbrains.anko:anko-sdk15:0.9' // sdk19, sdk21, sdk23 are also available...,为什么不呢?...acceptChildren(this) } 这是遍历 XML 标签的代码,典型的访问者模式对吧。...Kotlin 编译器为我们创建了一个包?...注意到,这里的 packageFqName 其实就是我们前面提到的 kotlinx.android.synthetic.main. 不对呀,怎么创建了两个包呢?
毕竟以往的布局都是要从 XML 中解析出来,然后再到 LayoutInfalter 里面通过 Constructor.newInstance 反射创建出来的。...而 Anko 则是直接创建 View,用代码构建布局,省去了解析 XML 的时间。 添加依赖 Anko 的 Github 仓库是:https://github.com/Kotlin/anko。...创建简单布局 使用 Anko 创建布局很简单: ? 效果如下: ? 在 relativeLayout 代码块里我们构建了当前的界面,并把它应用到了 Activity 中。...就是这样简单的写法完成了界面布局,如同写 xml 文件一样,只要在父容器里面按照排列写好子控件的参数和位置就好。 多实践几次就可以熟练这种写法,通过 Anko 来创建一个登陆界面: ?...在 XML 中能够设置的控件属性更多,更精确的控制布局状态,而 Anko 在构建简单界面的时候才显得快速、便捷。
13.2 一个简单Anko视图 这里是一个转换成 Anko 的简单 XML 文件。...13.3 快速入门实例 下面我们通过一个“我的日程”待办事项应用,来详细介绍使用 Kotlin 混合 Java,使用 Anko 开发的Android 应用的方法。...Kotlin 的代码 Anko DSL 创建了一个垂直方向的线性布局(用代码写配置写布局要比 XML 灵活方便多了)。...这里的 ids 被设置为 R.id.。这些 ids 需要手工在一个加做 ids.xml 的文件里创建,这个文件放在 app/src/main/res/values/ids.xml。...另外,Kotlin 的 Android 视图 DSL Anko帮我们从繁杂的 XML 视图配置文件中解放出来。
快速上手 如果不知道如何在Kotlin中写一个相当简单的Java表达式。...print() // 使用Elvis操作符来给定一个在是null的情况下的替代值 val name = user?.name ?...Anko Layout 通常我们使用xml文件写我们的布局,但是存在有一些缺点:如不是类型安全,不是空安全,解析xml文件消耗更多的CPU和电量等等。...而Anko Layout可以使用DSL动态创建我们的UI,并且它比我们使用Java动态创建布局方便很多。主要是更简洁,它拥有类似xml创建布局的层级关系,能让我们更容易阅读。...xml,所以这里就不对Anko Layout多做介绍了。
,它好在用DSL的方式来描述View,而缺点在于无法即时预览,在这方面导致Anko DSL的开发效率不及XML传统方式。...经过大家的一些踩坑,以及开发上的试用,一致表示,Anko Layouts无法用在成熟的项目之中,还是老老实实用XML吧… Anko Layouts的DSL设计那么棒… 就要这么放弃了吗 大家眼里的Anko...怎么把Anko灵活用起来 简单回顾一下上面一节的内容: 如果我们拥有一个ViewGroup或者拥有一个Context,就可以用来创建View 因此Anko的用法远要比你想象中的灵活 -> 可以拿到Context.../ViewGroup的地方就可以使用Anko,而Anko的作用也就是简化初始化View + AddView的流程。...当然Anko因为避免了反射,提高了大量的性能。 DSL和XML并不是冲突的,DSL用于解决布局中细碎和动态的部分,而XML用于单页布局,复杂布局。
在Android Studio 中使用Kotlin编写TextView、Button、Toast 介绍的话我就不说了,可以看我的第一篇关于Kotlin的文章,讲了为什么要用Kotlin的原因,进入正题,...我们现在已经重新创建了一个Kotlin的项目,我在activity_main.xml文件中放了一个id为tv_hello的TextView和一个id为btn_test的Button, 然后在MainActivity.kt...中的头部导入 贴一下布局文件activity_main.xml的的代码 <?...;toast("小提示:您点了一下") } 该说的都说完了,我再介绍一个库:Anko库 简介:Anko是使用Kotlin语言编写的一个Android增强库,它用于简化Android开发时的Kotlin...为了正常使用toast和longToast,我们需要在项目的build.gradle,在buildscript节点中补充下面一行代码, ext.anko_version = '0.9'//指定Anko的版本
然后在MainActivity中导入 import org.jetbrains.anko.startActivity 然后就可以直接使用了。...getString("name") ③ 跳转时指定启动模式 在代码中动态指定页面的启动模式,因为在AndroidManifest.xml中对每个Activity只能指定唯一的启动模式,如果想在不同时候对同一个...该值等同于launchMode=“singleTop” Intent.FLAG_ACTIVITY_CLEAR_TOP 当栈顶存在待跳转的Activity实例时,重新创建一个新实例,并将原实例上方的所有实例加以清楚...Anko库扩展出来的intentFor函数简化启动标志的设置方式,列如,启动标志FLAG_ACTIVITY_NEW_TASK 对应的Anko写法如下: startActivity(intent.newTask...()) 短小精悍 来看一下所有的Java方法对应的Anko库的写法 Intent类的启动标志 Anko库的标志设置函数 FLAG_ACTIVITY_NEW_TASK newTask() FLAG_ACTIVITY_SINGLE_TOP
使用DSL又可以实现怎么样的功能呢?...Anko插件 最后我们来简单的介绍下DSL在Kotlin中的一个框架Anko,Anko用Kotlin DSL 写的Android插件,Anko主要的作用是替代以前用XML的方式来生成UI布局。...大家都知道,Android界面是通过XML来进行布局的,一个应用中通常有多个布局,当程序运行时,XML被转化为Java代码,这里要划重点,即使不是在Java中写的代码,最终还是会转化为Java代码,这就会导致程序很耗费资源...由于Anko是直接通过Java代码来编写布局文件的,不用进行转化,因此使用Anko编写Android界面的布局会更加简单、快捷。...关于Anko插件如何使用,就不讲解了,感兴趣的可直接到Github上了解:https://github.com/Kotlin/anko 写在最后 DSL的使用场景远远不止这些,其实前提就是使用好高阶函数
页面元素获取:butterknife,dataBinding,主要使用butterknife;dataBinding只是提供一种额外的元素获取模式。...辅助语言:Kotlin,我觉得Kotlin中的很多语法很好用,很简便,比如定义实体就非常好用,在大方向使用Java的情况下,辅助使用Kotlin定义一些单独的文件,很方便。...xml version="1.0" encoding="utf-8"?...需要学习Java基础的可以参考一下我的Java短篇文章 Java的委托 Java中的Class类 通过Gson解析Json数据 OKhttp3的使用教程 xUtils3的使用教程 Java泛型详解 Android...DataBinding使用详解 NavigationView使用简介 RecyclerView使用详解 本文主要代码来自于开源框架XUI的Demo。
选择菜单后打开Kotlin的Activity创建页面,单击“Next”按钮进入创建信息的填写页面,如下图所示: ?...现在给前面创建的布局文件activity_easy.xml添加几个TextView和Button控件,布局比较简单就不贴了。...的控件变量自动映射功能,接下来的代码就无需再调用findViewById方法,直接把控件ID当作控件对象使用即可。...如果使用Kotlin实现相同的功能,又是怎样的呢?...可是为啥Kotlin的toast函数不区分显示时长呢?原来toast方法默认为短时显示,即Toast.LENGTH_SHORT。
不,降低标准的事儿我们是绝不会做的,Kotlin 官方这么多年都没有解决这个问题,快出来挨打 (╬ ̄皿 ̄)=○#( ̄#)3 ̄) 。...这个问题从现有的 KAE 的思路上来看,确实不太好解决,不过从多年的实践来看,这也许都算不上是一个问题,至少我用了快 5 年 KAE,只有偶尔几次写错 id 以外,多数情况下不会出现此类问题。...为了说明问题,我们创建两个完全相同的 layout,分别命名为 view_tips.xml 和 view_warning.xml,里面只是简单的包含一个 id 为 textView 的 TextView...在这里提 Anko 到不是为了嘲讽,Anko 虽然离开了我们,可 Anko 所倡导的 DSL 布局的精神却留了下来,也就是 Jetpack 当中仍然处于 Alpha 状态(怎么都是 Alpha,难道这么久了还不配有个...小结 KAE 本质上就是通过编译器生成字节码的方式为 Activity、Fragment、View 提供了以 xml 布局中的 id 为名的合成属性,从而简化使用 findViewById 来实现 View
文件下添加 buildscript{ …. } 中的内容: buildscript { ext.kotlin_version = '1.1.51' ext.rxandroid = '2.0.1' ext.anko_version...: 在根目录下的build.gradle文件下添加 ext{ …. } 中的内容: ext{ kotlin_version = '1.1.51' rxandroid = '2.0.1' anko_version...,字符串需使用“$rootProject.”..." } 方式四: 在项目根目录下创建.gradle文件,如:config.gradle,config.gradle中文件内容可以自己定义,如下示例: ext{ kotlin_version = '1.1.51...在此也非常感谢大家对ZaLou.Cn网站的支持!
menu/: 用于定义应用菜单(如选项菜单、上下文菜单或子菜单)的 XML 文件。 raw/:需以原始形式保存的任意文件。...例如,对于可在此目录中创建的资源,下面给出了相应的文件名约定: arrays.xml:资源数组(类型数组)。 colors.xml:颜色值。 dimens.xml:尺寸值。...各种 XML 配置文件(如可搜索配置)都必须保存在此处。 font/:带有扩展名的字体文件(如 .ttf、.otf 或 .ttc),或包含 元素的 XML 文件。...如果要求圆角背景,或是渐变色背景,我们该如何实现呢? 一种办法是制作相应的美术素材,也就是切图。另一种办法是使用xml格式的资源文件。 本文要介绍的是shape。...corners标签代表的是圆角。如果不设置,则默认为直角。这里我们设定圆角的半径为6dp。 gradient表示渐变色。分别可以设置起始,中间和结束的颜色值。
你的 SMTP 服务器必须配置为允许匿名发件人发送电子邮件,或者你必须之前已创建一个帐户来用作警报的电子邮件帐户。...创建警报,然后执行将触发警报的操作。 自定义邮件警报格式 您可以自定义团队成员订阅的电子邮件通知或警报的格式。 当工作项、代码审阅、源代码管理文件和生成发生变化时,将发送这些通知。...XML 编辑器(如 Visual Studio)更改任何转换文件。...纯文本电子邮件 事件服务使用 .xsl 和 plaintextXsl 文件将事件的 XML 数据转换为电子邮件。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
领取专属 10元无门槛券
手把手带您无忧上云