14.1.2 创建基于 Kotlin 的Android 项目 首先新建项目。...新建项目 进入 Create Android Project 对话框。在创建 Android 项目对话框中配置应用基本信息,注意勾选 Kotlin 支持选项,点击 Next。如下图所示 ?...View 布局组件中创建和获取视图 View 。...savedInstanceState 的值就是非空的, 这个时候我们就不需要手动再去手工创建 Fragment 对象保存到当前的 Activity 中了。...的列表及其详情页展示,同时学习了 Activity 和 Fragment 的基本用法。
第13章 使用 Kotlin 和 Anko 的Android 开发 ---- 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的读者...Kotlin 在任何的 Activity 、 Fragment 或者 AnkoComponent里来编写视图。...' } } 刚添加完毕,src/main/kotlin 还没有变成源码目录的蓝色,这个时候点击下图右上角的 Sync Now : ?...我们可以看下按钮控件定义的地方。按钮有一个点击监听函数是定义在视图定义文件里面的。在定义按钮之前,有两个参数 title 和 content 的方法 createTodoFrom 已经被调用了。...另外,Kotlin 的 Android 视图 DSL Anko帮我们从繁杂的 XML 视图配置文件中解放出来。
电影列表的整体布局的 UI 视图数据适配器 ViewAdapter 我们在创建 MovieListActivity 过程中需要展示响应的数据,这些数据由 ViewAdapter 来承载,对应的代码如下...View 要显示的数据从Adapter里面获取并展现出来。Adapter负责把真实的数据是配成一个个View,也就是说View要显示什么数据取决于Adapter里面的数据。..." /> 电影源数据的获取 我们定义了一个 MovieContent 对象类来存储从 API 获取到的数据,代码如下 package com.easy.kotlin.bean...电影列表页面 点击进入电影详情页 ? 电影详情页 本章小结 Android 中经常出现的空引用、API的冗余样板式代码等都是是驱动我们转向 Kotlin 语言的动力。...另外,Kotlin 的 Android 视图 DSL Anko 可以我们从繁杂的 XML 视图配置文件中解放出来。
前言 原始方式 在我们的开发过程中,需要获取XML布局文件中的ViewId,以便其赋值显示,我们习惯使用findViewById进行操作,可这样会导致很多的模版代码出现。...ViewBinding和Kotlin扩展 ViewBinding 和 Kotlin 扩展 都是 Android 开发中常用的技术,用于简化视图查找和绑定的过程。...ViewBinding 使用了编译时生成的绑定类,在 xml 布局文件中的每个视图都会生成一个对应的绑定类对象,因此在编译时检测到视图名称的错误。...Kotlin扩展 使用起来相对简单,可以直接在布局文件中使用 Kotlin 扩展函数来查找和操作视图。...Kotlin扩展 对视图的数据获取和类型安全性没有提供直接的支持,需要手动处理可能的空指针异常和类型转换。 Kotlin扩展 会增加 APK 的大小,因为它是在运行时动态添加的函数。
Adapter 中的用法 4.使用include包含布局的嵌套布局 四、总结 一、前言 最近放寒假了,终于有空做项目了,想着把之前的一些项目重构一下,碰巧重构到 view Binding 这块,之前都是用...kotlin 的那个扩展,其实刚开始做项目的时候这个就已经废弃了,由于当时自己有点懒,没去学习这个新的代替方案,所以就成为一个历史遗留的问题,参考官方文档 view Binding 官方文档,这里只是针对目前使用的几个场景进行重构...外部可以改变binding的值,内部不行 private var _binding: ResultProfileBinding?...的声明位置 class TestAdapter(private val fragment:Fragment,private val testList: List):RecyclerView.Adapter...之后就不需要担心这个了,与视图相绑定,安全性大大提高,同时也简化了传统的获取id的方法,是一次比较愉快的重构。
android:width="1px"的值大 相等是不显示的 要添加 android:layerType="software"关闭硬件加速 否则显示为实线 获取屏幕宽高 Resources.getSystem...系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。...FragmentActivity的FragmentManager对象; 对于Fragment,getFragmentManager()是获取的是父Fragment(如果没有,则是FragmentActivity...TypeReference>() { }) ListView获取子视图 ListView有一个getChildAt()方法,参数传的不是子视图的position...,而是当前显示区域的位置,所以正确的获取position位置视图的方法为 int firstVisiblePosition = mListView.getFirstVisiblePosition();
前言 有一段时间没有去写过框架了,最近新的框架MVI,其实出来有一段时间了,只不过大部分项目还没有切换过去,对于公司的老项目来说,之前的MVC、MVP也能用,没有替换的必要,而对于新建的项目来说还是可以替换成功...View 还是视图,例如Activity、Fragment等。 Intent 意图,这个和Activity的意图要区分开,我觉得说成是行为可能更妥当,表示去做什么。...一、创建项目 首先创建一个名为MviDemo的项目 项目创建好了,下面我们需要先进行项目的基本配置。...① 生成数据类 生成数据类,这里我们可以使用一个插件,搜索JSON To Kotlin Class,如下图所示: 下载安装之后,如果需要重启,你就重启AS,重启之后,右键点击model → New...→ Kotlin data class File from JSON,如图所示: 在出现的弹窗中复制通过网页请求得到的JSON数据字符串,如图所示: 这里如果觉得看起来不舒服,点击 Format
前面在介绍列表视图和网格视图时,它们的适配器代码都存在视图持有者ViewHolder,因为Android对列表类视图提供了回收机制,如果某些列表项在屏幕上看不到了,则系统会自动回收相应的视图对象。...由于循环视图适配器并不提供列表项的点击事件,因此开发者要自己编写包括点击、长按在内的事件处理代码。...为方便理解循环适配器的Kotlin编码,下面以微信的公众号消息列表为例,给出对应的消息列表Kotlin代码: //ViewHolder在构造时初始化布局中的控件对象 class RecyclerLinearAdapter...其中的缘由是Anko库仅仅实现了Activity活动页面的控件自动获取,并未实现适配器内部的自动获取。...不过Kotlin早就料到了这一手,为此专门提供了一个插件名叫LayoutContainer,只要开发者让自定义的ViewHolder继承该接口,即可在视图持有者内部无需获取就能使用控件对象了。
某天我将项目工程的Gradle版本升级到了最新,然后构建项目时发现了这样一个警告提示: ?...我们可以通过点击Android Studio顶部导航栏的Tools -> Kotlin -> Show Kotlin Bytecode来查看这段代码对应的Kotlin字节码,然后在弹出窗口中点击Decompile...这样当下次再获取相同控件实例的话,就可以直接从HashMap缓存中获取了。 这就是kotlin-android-extensions插件的实现原理,其实还是非常简单的。...答案就是,为了不用在列表滚动的时候频繁调用findViewById(),从而减少了一些没必要的性能消耗。...另外,如果想要学习Kotlin和最新的Android知识,可以参考我的新书 《第一行代码 第3版》,点击此处查看详情。
实现View.OnClickListener接口,然后调用上面的方法,第一个参数传this即可,后面将要设置点击事件的控件传入,然后在界面中覆写 onClick(v: View)即可。..., position: Int) { showToast("点击了$position") } adapter.setOnItemClickListener(this) 第一种同java...类继承interface 实现方法 adapter.setUpFetchListener { showToast(“刷新中…”) } 第二种kotlin自己得写法,当监听interface的方法中没有参数可以使用这种超简单写法...adapter.loadMoreComplete() }, rv_kjls) as提示我可以优化代码,果断alt+enter 今天写长按时间的时候遇到有返回值的listener 第四种加返回值。...怎样使用构造参数 以上这篇关于Kotlin写界面时诸多控件的点击事件就是小编分享给大家的全部内容了,希望能给大家一个参考。
kotlin结合Room在实际项目中的运用 架构还是MVVM,DataBinding+ViewModel+LiveData的组合 效果: 1.首先添加Room依赖 添加kapt插件: plugins...{ id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' } def room_version...lifecycleScope.launchWhenCreated { //每当UserInfo表发生变化,Flow都会把UserInfo列表发射出去,那么我们...//在collect中就可以获取到 userInfoViewModel.getUserInfo().collect { (...} } 项目地址:https://gitee.com/aruba/flow-apply-application.git
前言 最近断断续续地把项目的界面部分的代码由JAva改成了Kotlin编写,并且如果应用了kotlin-android-extensions插件,一个显而易见的好处是再也不用写 findViewById...*是kotlin-android-extensions插件自动生成的。下面我们来解析下原理。..._$_findViewCache.clear(); } } } 可以很清楚看到最终还是调用了findViewById() ,不过获取View对象直接调用的是findCachedViewById,...onCreateView() returned null"); } this.mViewLifecycleOwner = null; } } 可以看到mView其实就是onCreateView()的返回值...其他(动态布局) 除了Activity和Fragment,我们用的最多的UI布局当属Adapter了,kotlin-android-extensions也提供了对这一类动态布局的支持。
); 二)给抽屉里的列表添加点击事件,动态添加碎片进入主视图 1)给抽屉里的列表项添加点击事件,每点击列表项,让其在主内容视图里添加一个Fragment,让这个Fragment里显示点击的列表项里的内容...,在这里重写onCreateView(),把布局加载进来,然后获取到点击项里的内容,这个是在MainActivity里通过让碎片携带参数的方法来实现 package com.example.drawerlayout...false); tv=(TextView) view.findViewById(R.id.tv); String text=getArguments().getString("text"); //获取到传入的值...tv.setText(text); return view; } } 3)给抽屉里的列表添加点击事件,点击后会进入碎片界面,并且碎片携带了Bundle类型的参数,参数的值我们传入了列表数据menuList.get...(position),使用碎片的方法如下,获取碎片的实例之后再通过getFragmentManager()获取碎片管理器,给碎片管理器开启事务,开启事务之后的碎片管理器用replace()方法将碎片的布局替换原来的主视图布局
相信大部分的Kotlin开发者都在使用它进行Android开发,而且在之前的Android Studio创建Android项目时,都会自动帮你依赖: apply plugin: 'kotlin-android-extensions...,它会在代码中创建一个HashMap,用来存放所有的id和对应的View的缓存,如果缓存中没有需要的View,那么就通过findViewById去创建,否则就直接获取,这就是它的原理。...除了Activity和Fragment,在Adapter中使用,特别是RecyclerView中使用,也是一个非常常见的使用场景。...目前还未找到现有项目从kotlin-android-extensions迁移到ViewBinding的好办法,如果当前的项目大量使用kotlin-android-extensions,那么迁移起来,就是一个巨大的工程...向大家推荐下我的网站 https://xuyisheng.top/ 点击原文一键直达 专注 Android-Kotlin-Flutter 欢迎大家访问
答:Activity 实例和 Activity 视图的生命周期是同步的,而 Fragment 实例和 Fragment 视图的生命周期并不是完全同步的,因此需要在 Fragment 视图销毁时,手动回收绑定类对象...视图生命周期 期望 binding 属性声明为非空不可变变量 ReadOnlyProperty 3.1 ViewBinding + Kotlin 委托 1.0 我们现在较复杂的 Fragment...Kotlin 高阶函数,可以把 lambda 表达式直接作为参数传递,其中 View 是函数参数,而 T 是函数返回值。lambda 表达式本质上是 「可以作为值传递的代码块」。...把函数 bind() 作为参数传递,bind 函数的参数为 View,返回值为 ViewBinding,与函数声明 (View) -> V 匹配。...Binding 视图绑定[10] —— 官方文档 View Binding 与 Kotlin 委托属性的巧妙结合,告别垃圾代码!
使用这些架构开发出的应用,从项目质量、代码可读性与可维护性来说,都更加出色,所以这些框架和技术逐渐流行起来。...→可观察的数据持有者类,与常规Observable不同,它是具有生命周期感知的; Navigation→应用内导航,Fragment的管理框架,或者说路由; Paging→列表分页,可以轻松实现分页预加载以达到无限滑动的效果...本节开始折腾,先带来一个超简单的 → ViewBinding(视图绑定)。...先查HashMap中该id对应的实例是否缓存,是返回,否findViewById获取实例存到HashMap中,同时把找到的实例返回。...// 4、引用视图控件 binding.tvContent.text = "修改TextView文本" } } ④ Fragment class ContentFragment
这个库提供: - alpha 触摸动画 - 设置间隙角 - 动画期间自己适配文本域的位置 - 对每一个段设置描述并显示它 - 点击回调 - 点击特效 - 在饼图和环形图之间切换 - 绘制图表时的动画 它有很好的文档...由该库提供的变量类型只是值类型,因此大多数 API 是以顶级函数的形式暴露出来,而非方法。 该项目是以 Apache-2.0 开源许可证发行的。 13....项目是以 Apache-2.0 许可发行的,而示例应用可以在 Github 资源库或者在 Google Play 上获取到。文档还可以,且库支持 API 15 及以上版本。 14....接着他可以从由 Cipher.so 生成的 Java 接口获取这些键值对数据。 文档足够好,项目是以 Apache-2.0 发行的。...23. retrofit2-kotlin-coroutines-adapter https://github.com/JakeWharton/retrofit2-kotlin-coroutines-adapter
'androidx.navigation:navigation-ui-ktx:2.3.1' 创建导航视图 首先确保AndroidStudio为3.3以上 1.右键res,点击New -> Android...Resource Directory 2.在出现的面板第二行Resource type 下拉列表中选择 Navigation,然后点击 OK 3.res目录下会多出一个navigation的资源目录,...[ueyqplus0k.gif] 配置graph 新建好的nav_graph.xml切换到design模式下,点击2处的加号,选择Create new destination,即可快速创建新的Fragment...,safe args与传统传参方式相比,好处在于安全的参数类型,并且通过谷歌官方的支持,能很方便的进行参数传值。...跳转到FragmentB时传参数,所以给FragmentB设置参数,点击FragmentB,点击右侧面板的Arguments右侧的+,输入参数的key值,指定参数类型和默认值,即可快速添加参数 [p6jps8kpyh.gif
在 Kotlin 中使用 Android 的 Java API 时,您会迅速意识到这样的做法失去了 Kotlin 语言简单有趣的特点。...本文会介绍目前可用的 KTX API 并深入其中去分析它们是如何实现的。 如果您比较喜欢观看视频,可以 点击这里。...-ktx 软件包会包含 Kotlin 的扩展: // 获取最新 Lifecycle 库的版本信息 // https://developer.android.google.cn/jetpack/androidx...其他功能,像 Color 类上可以使用的 解构 和 操作符重载 功能,可以访问 KTX 扩展程序列表 查看目前是否可以使用。...+ // 更新 adapter 中缓存的 words 副本 + words.let { adapter.submitList(it) } + } LiveData 非常适合用于将数据暴露给
领取专属 10元无门槛券
手把手带您无忧上云