概述 在我们的开发过程中,需要获取XML布局文件中的ViewId,以便其赋值显示,我们习惯使用findViewById进行操作,可这样会导致很多的模版代码出现。...近两年谷歌对Kotlin的支持,我们开始使用 Android Kotlin extensions。在文件中导入布局文件直接引用viewId。无需做其他额外操作,最为方便。...所以其主要解决如何安全优雅地从代码中引用到XML layout文件中的view控件的问题。直到目前为止,Android构建用户界面的主流方式仍然是使用XML格式的layout文件。...布局文件对应的绑定类 在gradle文件中开启ViewBinding功能后,编译器就会为此模块下的每个布局文件都产生一个对应的绑定类。...例如我们在手机横屏和竖屏的时候分别使用一套XML layout文件,假设横屏中包含了一个竖屏中没有的view,那么在屏幕从横屏旋转到竖屏的时候,NullPointer问题就出现了。
一、Kotlin简介 Kotlin是一个基于JVM的新的编程语言,由JetBrains开发。...这里需要说明的是,正如上图中我们看到的,IEDA分为 Ultimate 旗舰版 和 Community 社区版,前者主要针对 Web 和 企业级 开发,是收费的,试用期一个月;社区版是免费开源的,所以,...初次开启 上图中编号的含义分别如下: 1、创建一个新的项目 2、导入已有项目 3、打开本地项目 4、从版本控制软件中拉取 我们选择1 新建一个项目,然后按照下图操作: 新建kotlin项目 创建项目名称并选择路径...打开AndroidStudio并创建一个新的AndroidStudio项目 输入项目名称、选择项目路径、勾选kotlin支持 选择设备 创建空页面.png 输入页面名称 创建完成,展示自动生成的kotlin...关于如何在AndroidStudio 中编写kotlin代码,后面再单独说。现在重点介绍的是kotlin的基本语法类内容。 本篇文章到此结束。
如示例所示,Android Studio 创建了一个 MobilenetV1025160Quantized 用于与模型进行交互的类。 如果模型没有元数据,屏幕将仅提供最少的信息。...https://perfetto.dev/docs/quickstart/heap-profiling 系统跟踪用户界面:更轻松的选择新的分析选项以及更多的帧渲染数据 Android Studio探查器中的系统跟踪...(image-213d5c-1602658210645)] Android Studio 通过提供新的操作并扩展了“Find Usages”窗口中的支持,使在Dagger相关代码之间导航变得更加容易。...> 例如: ~/.config/Google/AndroidStudio4.1 这些新目录位置与IntelliJ IDEA(基于Android Studio的IDE)的最新更新一致 。...本机崩溃报告的符号 当本机代码发生崩溃或ANR时,系统会生成堆栈跟踪,该跟踪是程序崩溃之前一直在程序中调用的嵌套函数序列的快照。
前言 在日常开发中,越来越多的会使用到一个activity嵌套多个fragment的场景,典型的例子就是app的首页,一般都会由一个activity+多个子tab组成,那对于Fragment的显示、隐藏等我们通常都是通过...,相当于上图中的每条线,destination定义跳转的目标页,还可以定义跳转时的动画等等 添加NavHostFragment 在MainActivity的布局文件中配置NavHostFragment...app:defaultNavHost=true 意思是可以拦截系统的返回键,可以理解为默认给fragment实现了返回键的功能,这样在fragment的跳转过程中,当我们按返回键时,就可以使得fragment...跟activity一样可以回到上一个页面了 现在我们运行程序,就可以正常跑起来了,并且看到了FragmentA展示的页面,这是因为MainActivity的布局文件中配置了NavHostFragment...AndroidManifest.xml中给FragmentDeepLink所属的activity添加一个属性,这为MainActivity <activity android:
引言 每一个使用 Gradle 的同学,肯定都听过或者写过插件,因为其本身并不难,但碍于现在网上的文章千篇一律,大部分都比较老,新同学一上手反而是和我一样,花了大把时间在最基础的第一步如何写一个简单demo...,比如当我们在创建一个 android-model 时,就会自动添加相应的 library 插件,这些插件的工作就是帮我们把一些重复的工作或者代码,以一句代码的形式引入,极大程度上减少了我们的代码量。...在 Gradle 中,我们可以使用 Java ,Kotlin 以及 Groovy 来写自己的插件,一般而言,使用 Java 和 Koltin 要比使用 Groovy 的执行效果会更好。...插件的作用就是添加我们自己的一些逻辑到项目执行过程中,这个做法在 Gradle 中称其为任务,或者说 Task ,从而对项目进行测试、编译、打包等; 也可以对项目中现有的对象类型添加新的扩展属性、方法等...ps:当使用As在buildSrc创建目录时,会自动提示选择合适的目录。
他们的成就主要都是在UI上跨平台,当然Flutter虽然可以处理一些公共的业务逻辑,但目前在业务较重的情况下仍然需要各自处理。 ...KMM的HelloWorld 环境配置 这里假设,你已经有了一台Mac、安装了高版本的AndroidStudio(这里不会介绍Xcode的配置), 在AndroidStudio中搜索插件Kotlin Multiplatform...源集是一个 Gradle 概念,用于逻辑上组合在一起的多个文件,其中每个组都有自己的依赖项。 在 Kotlin Multiplatform 中,共享模块中的不同源集可以针对不同的平台。 ...首先我们将用到依赖添加进来,这里主要有Kotlin协程、序列化(Ktor使用要求)、和Ktor,Ktor是一个可以用于HTTP请求的网络框架,如果读者不熟悉的话可自行查看。代码如下所示。 ...添加接口 这里我们仍然使用「wandroid」中的每日一问接口 :https://wanandroid.com/wenda/list/1/json 与在Compose中使用Paging分页库使用的接口和实体类是一样的
前言 原始方式 在我们的开发过程中,需要获取XML布局文件中的ViewId,以便其赋值显示,我们习惯使用findViewById进行操作,可这样会导致很多的模版代码出现。...基于Kotlin的扩展 近几年Android对Kotlin的支持,我们开始使用 Android Kotlin extensions。 在文件中导入布局文件直接引用viewId。...ViewBinding 使用了编译时生成的绑定类,在 xml 布局文件中的每个视图都会生成一个对应的绑定类对象,因此在编译时检测到视图名称的错误。...在多个模块中引用同一个视图时可能会出现命名冲突的问题,需要通过手动指定全限定名解决。...Kotlin扩展: Kotlin扩展 是 Kotlin 语言的特性,其通过扩展函数的方式,允许开发者为现有的类添加新的函数或属性。
---- 在目录结构上,最大的不同点是在 res 目录下,你看不到 layout 布局文件了。不禁感叹, Android 十几代的风风雨雨,一直未能撼动 xml 布局大人的尊位。...---- 3.源码结构 目前源码中只有 MainActivity.kt 文件,以及 ui.theme 中的一些主题相关文件。下面就来看看源码中进行了哪些操作吧。 ?...在AndroidManifest.xml 文件中可以看出,入口的 Acrivity 为 MainActivity。 ? ---- 首先要明白,是谁革了 xml 布局大人 的命。...在源码中可以看出, setContent 方法的第二个入参是一个函数对象,Kotlin 语法规定:如果函数的最后一个入参是函数对象,则可以写在() 外侧,如果() 中无参数,则 () 可省略。...其实也理所应当,利益相关,谁也不想跳出自己的舒适圈,去到另一个不精通的地域去发展,或去涉足一个前途未卜的方向。也并不是所有的 革命都会成功,不是所有的先驱都会留名。但变革一定会产生思想层面的影响。
介绍完背景以及初衷之后,我们开始搭建MVVM的框架,这一部分我们进行简单的搭建,了解MVVM架构的基本结构。 创建新项目 首先创建一个新的项目,在根目录下创建一个config.gradle如图 ?...‘_version’ * * [类库maven地址] 中创建各个类库的maven地址,同一类库需要引用多个类时,可以使用数组,要确保类库引用不重复 * * [项目依赖列表] 中创建可以直接让module...引用的依赖列表,以Deps结尾,原则上以类库功能分类,比如网络库,图片处理库 * 尽量不要以类库本身的名字命名依赖列表 * * 各个module中引用类库时尽量使用项目依赖列表中的项目,不要直接使用类库地址中的项目...* * 需要添加新的类库时,先查询本列表和项目中是否已引用类似功能的类库,尽量不要添加重复功能的类库 */ project.ext { compileSdkVersion = 27...//启用数据绑定 dataBinding{ enabled = true } 我们看看布局文件 其实 我们可以看到在MVVM当中布局文件的作用有所加强,不仅仅是构造一个UI效果。 <?
这里有一个简单的诀窍,就是在AndroidStudio的Java文件中编写一段代码,然后将其粘贴到kt文件中,它会自动转换为Kotlin。 Kotlin优势 它更加易表现:这是它最重要的优点之一。...先看Java,在Java中,实现一个单例,我们需要: 保留一个单例对象的静态实例 提供一个类方法让外界访问唯一的实例 构造方法采用private修饰符 而在Kotlin中,一个修饰符就解决了。...我们可以直接这样写 user.text="我是一个TextView" user就是我们布局文件声明的id,.text就相当于setText(),在Kotlin语言中,我们看不到了像Java中的set/...并且Button中有一个点击事件,当点击时将EditText的内容以toast显示。 ? 在上面创建UI过程中,我们直接把创建UI的代码写在onCreate方法中了,当然,还有一种写法。...可以看到,Kotlin第一次运行所花费的时间与上一个方案的时间相同,但后续运行的性能逐步提高。 对于clean + Gralde daemon 编译,Java编译比Kotlin快13%。
手工 XML 布局设计 二十三、使用约束集管理约束 二十四、安卓约束集教程 二十五、AndroidStudio 中应用更改的使用指南 二十六、安卓事件处理概述及示例 二十七、安卓触控和多点触控事件处理...算子和表达式 十四、Kotlin 流量控制 十五、Kotlin 函数和 Lambdas 概述 十六、Kotlin 的面向对象编程基础 十七、Kotlin 继承与子类化简介 十八、安卓视图绑定概述 十九...二十九、AndroidStudio 手工 XML 布局设计 三十、使用约束集管理约束 三十一、安卓约束集教程 三十二、AndroidStudio 中应用更改的使用指南 三十三、安卓事件处理概述及示例...虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错——在大部分情况下,我们的服务器已经记录所有的翻译,因此您不必担心会因为您的失误遭到无法挽回的破坏。...在我们的 组织学习交流群 中联系群主/管理员即可.
使用注解可以写出更加简洁干净的代码,同时还可以在编译期进行类型检查。Kotlin 的注解完全兼容 Java 的注解。 本章介绍 Kotlin 中的注解与反射编程的相关内容。...虽然两种方法都能用,但大多数方法主要靠其中一种。 注解是把编程中的元数据信息直接写在源代码中,而不是保存在外部文件中。...在使用注解之前(甚至在使用之后),XML配置文件被广泛的应用于编程过程中的元数据的描述。...SwordTest ID = 1 12.3 反射 在上面小节中的注解信息的获取与处理逻辑的实现中,其实我们已经用到了反射。...所以在实际工程中,如果我们需要使用Kotlin的反射功能,以Gradle为例,需要在build.gradle配置文件中添加依赖 compile "org.jetbrains.kotlin:kotlin-reflect
Android Jetpack有如下一些特点: 1.加速开发 组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率,并且具有非常好的向下兼容性。...检测:从AndroidStudio中快速检测基于Kotlin或Java的代码。 -多Dex处理:为具有多个Dex文件应用提供支持。 安全:安全的读写加密文件和共享偏好设置。...2.4 UI(界面组件) 界面组件主要提供各种辅助绘制界面的View类 和各种辅助组件,具体包含。 Animation & Transitions(动画):提供各类内置动画以及自定义动画效果。...三、在项目中引入JetPack组件 在项目中引入JetPack组件需要在项目build.gradle中添加google() 库,默认情况下会添加google() 库的,如下所示。...,如我们想引入Room持久化库,那么只需要app的build.gradle文件中添加库引用即可。
工程目录 14.1.3 工程目录文件说明 其中,在顶层的 Gradle 配置文件 build.gradle 中添加了 kotlin-gradle-plugin 插件的依赖 buildscript {...这样我们可以在自定义的 Activity 类中添加 android.support.v7.app.ActionBar( API level 7 +)。...只要布局添加一个 View,在 Activity、View、Fragment 中都可以直接用 id 来引用这个 View,Kotlin 把 Android 编程极简风格发挥得淋漓尽致。...Fragment 是 Android 3.0 (API level 11) 新加入的API,主要的设置目的是为了使UI在不同的屏幕上表现得更加灵活。...DummyContent 这个类中构造了我们在 ListActivity 中展示的测试数据。
配置完毕后,Gradle一下整个项目,AndroidStudio会自动为每个XML布局文件生成一个绑定类,并不需要我们给xml文件中添加任何代码。...(Databinding就需要我们调整xml布局 才会生成。) 实例:假设创建了一个activity_main.xml 的布局文件: xml转binding类 我们如果有些类不想自动生成对应的binding类,那么只需要在该布局的layout中添加忽略字段即可:tools:viewBindingIgnore="true"...此外,如果视图仅出现在布局的某些配置中,则绑定类中包含其引用的字段会使用 @Nullable 标记。 类型安全:每个绑定类中的字段均具有与它们在 XML 文件中引用的视图相匹配的类型。...易于使用:视图绑定不需要特别标记的 XML 布局文件,因此在应用中采用速度更快。在模块中启用视图绑定后,它会自动应用于该模块的所有布局。
开发前请做好相关准备工作: 安装Java SDK什么的……不做解释 掌握Java语言,最好会Kotlin,因为IDEA已经有一部分用Kotlin改写了 下载IDEA社区版(Community)并安装,Android...正常会打开新的idea窗口,随便打开个项目找到刚才的插件位置,点击,不出意外会弹出一个helloworld的提示窗口了。 插件开发的过程大概如此,但是我们开发,肯定不是一个弹窗就解决需求的。...VirtualFile,初次见肯定会疑惑,简单介绍一下(摘自官档) 虚拟文件系统(VFS)是IntelliJ Platform的一个组件,它封装了用于处理文件的大部分活动。...它有以下主要用途: 提供用于处理文件的通用API,无论其实际位置如何(在磁盘上,存档中,在HTTP服务器上,或者git上等) 在检测到修改时跟踪文件修改并提供文件内容的新旧版本。...提供将附加持久数据与VFS中的文件相关联的可能性。 看一下VirtualFileSystem实例的方法,大概有以下几项:刷新、获取VirtualFile、添加监听等作用。 ?
微信 订阅号助手 的Android App项目首次尝试使用Kotlin进行大规模的业务开发(483个Kt文件,3.8W行不包含空行的Kt代码),一开始接触Kotlin的时候难免会有点不适应,但经过几天的强制使用后...)、甜(富含糖份Lambda),第二主要食材,切好块状 Java,少量,Kotlin这种食材需要它来做引子 锅,AndroidStudio、Eclipse这两个牌子的锅质量都不错 调味料,Kotlin...String,不像StringUtil.stringToInt没有归属可言,纯粹就是一个工具函数,不如Kotlin的写法容易理解 对定义函数者的要求高了,正因体现了函数的类归属,也就使得开发者在定义函数的时候需要考虑归属给哪个类还是顶层函数这些问题...,归属的范围少了,会导致不好用,范围广了又怕暴露导致滥用或者误用 特色风味三,香 重载(Overload),回味无穷 虽然这个概念在面向对象领域用得很多,但Kotlin这个重载的味道真是令我们吃上瘾 重载在工具类的场景用得非常多...,一个项目下来没工具类也是不可能,例如我们在项目中会封装一些对话框(Dialog)工具类供开发的同学一句调用 开发的同学需要在界面显示一个Dialog,只想改变Dialog的内容,那么Java里面就有showDialog
DSL androidstudio 构建系统基于Gradle,Android Gradle插件添加了几个特定于构建Android应用程序的功能。...虽然Android插件通常与androidstudio同步更新,但是插件(以及Gradle系统的其余部分)可以独立于androidstudio运行,并且可以单独更新。...Kotlin脚本DSL支持 为了帮助改善Kotlin buildscript用户的编辑体验,Android Gradle plugin 4.1的DSL和api现在被定义在一组Kotlin接口中,与它们的实现类分开...配置文件 可以在androidstudio的File>Project Structure>Project菜单中指定Gradle版本,也可以通过编辑Gradle/wrapper/Gradle中的Gradle...下面的示例将Gradle中的Gradle版本设置为 6.1.1-包装器. 属性文件。
例如,bean 类这么简单的东西也需要编写多个常规的 getter 和 setter 以及多个构造器和 / 或构建器。一般来说,哈希和相等方法必须用一种很平常但啰嗦的方式覆盖掉。...我们选择 Kotlin 主要基于如下考虑: Kotlin 中对数据 bean 类的丰富支持让我们无需再编写显式的 getter 和 setter。...我们使用了 Kotlin 的内置空值安全性检查,它可以防止 NPE 并让代码更具可读性。 扩展函数:Kotlin 提供了向现有类添加新函数的能力,添加时无需继承该类。...4迁移到 Kotlin 后为我们带来的好处 当其他团队使用我们的库时,Kotlin 的数据类和不变性确保了一致性(防止意外数据损坏)。...Kotlin 可以在一个文件中拥有多个类,并能够使用顶级函数,这让我们的代码组织起来更轻松了,大大减少了我们需要导航的文件数量。
领取专属 10元无门槛券
手把手带您无忧上云