首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《Kotin 极简教程》第13章 使用 Kotlin 和 Anko Android 开发

第13章 使用 Kotlin 和 Anko Android 开发 ---- 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱读者...Kotlin 在任何 Activity 、 Fragment 或者 AnkoComponent里来编写视图。...' } } 刚添加完毕,src/main/kotlin 还没有变成源码目录蓝色,这个时候点击下图右上角 Sync Now : ?...我们可以看下按钮控件定义地方。按钮有一个点击监听函数是定义在视图定义文件里面的。在定义按钮之前,有两个参数 title 和 content 方法 createTodoFrom 已经被调用了。...另外,Kotlin Android 视图 DSL Anko帮我们从繁杂 XML 视图配置文件中解放出来。

3.4K30
您找到你想要的搜索结果了吗?
是的
没有找到

第14章 使用Kotlin 进行 Android 开发(2)

电影列表整体布局 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 视图配置文件中解放出来。

1.1K20

Android使用ViewBinding

前言 原始方式 在我们开发过程中,需要获取XML布局文件中ViewId,以便其赋值显示,我们习惯使用findViewById进行操作,可这样会导致很多模版代码出现。...ViewBinding和Kotlin扩展 ViewBinding 和 Kotlin 扩展 都是 Android 开发中常用技术,用于简化视图查找和绑定过程。...ViewBinding 使用了编译时生成绑定类,在 xml 布局文件中每个视图都会生成一个对应绑定类对象,因此在编译时检测到视图名称错误。...Kotlin扩展 使用起来相对简单,可以直接在布局文件中使用 Kotlin 扩展函数来查找和操作视图。...Kotlin扩展 对视图数据获取和类型安全性没有提供直接支持,需要手动处理可能空指针异常和类型转换。 Kotlin扩展 会增加 APK 大小,因为它是在运行时动态添加函数。

33421

viewBinding使用(记一次重构项目的过程)

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方法,是一次比较愉快重构。

69110

Android开发常用知识点

android:width="1px"大 相等是不显示 要添加 android:layerType="software"关闭硬件加速 否则显示为实线 获取屏幕宽高 Resources.getSystem...系统将自动选择这些模式中一种主要依赖于是否窗口内容有任何布局视图能够滚动他们内容。如果有这样一个视图,这个窗口将调整大小,这样假设可以使滚动窗口内容在一个较小区域中可见。...FragmentActivityFragmentManager对象; 对于Fragment,getFragmentManager()是获取是父Fragment(如果没有,则是FragmentActivity...TypeReference>() { }) ListView获取视图 ListView有一个getChildAt()方法,参数传不是子视图position...,而是当前显示区域位置,所以正确获取position位置视图方法为 int firstVisiblePosition = mListView.getFirstVisiblePosition();

2.5K10

Android MVI框架搭建与使用

前言   有一段时间没有去写过框架了,最近新框架MVI,其实出来有一段时间了,只不过大部分项目还没有切换过去,对于公司项目来说,之前MVC、MVP也能用,没有替换必要,而对于新建项目来说还是可以替换成功...View 还是视图,例如Activity、Fragment等。 Intent 意图,这个和Activity意图要区分开,我觉得说成是行为可能更妥当,表示去做什么。...一、创建项目 首先创建一个名为MviDemo项目 项目创建好了,下面我们需要先进行项目的基本配置。...① 生成数据类 生成数据类,这里我们可以使用一个插件,搜索JSON To Kotlin Class,如下图所示:   下载安装之后,如果需要重启,你就重启AS,重启之后,右键点击model → New...→ Kotlin data class File from JSON,如图所示: 在出现弹窗中复制通过网页请求得到JSON数据字符串,如图所示:   这里如果觉得看起来不舒服,点击 Format

3K40

Kotlin入门(23)适配器进阶表达

前面在介绍列表视图和网格视图时,它们适配器代码都存在视图持有者ViewHolder,因为Android对列表视图提供了回收机制,如果某些列表项在屏幕上看不到了,则系统会自动回收相应视图对象。...由于循环视图适配器并不提供列表点击事件,因此开发者要自己编写包括点击、长按在内事件处理代码。...为方便理解循环适配器Kotlin编码,下面以微信公众号消息列表为例,给出对应消息列表Kotlin代码: //ViewHolder在构造时初始化布局中控件对象 class RecyclerLinearAdapter...其中缘由是Anko库仅仅实现了Activity活动页面的控件自动获取,并未实现适配器内部自动获取。...不过Kotlin早就料到了这一手,为此专门提供了一个插件名叫LayoutContainer,只要开发者让自定义ViewHolder继承该接口,即可在视图持有者内部无需获取就能使用控件对象了。

1.8K41

kotlin-android-extensions插件也被废弃了?扶我起来

某天我将项目工程Gradle版本升级到了最新,然后构建项目时发现了这样一个警告提示: ?...我们可以通过点击Android Studio顶部导航栏Tools -> Kotlin -> Show Kotlin Bytecode来查看这段代码对应Kotlin字节码,然后在弹出窗口中点击Decompile...这样当下次再获取相同控件实例的话,就可以直接从HashMap缓存中获取了。 这就是kotlin-android-extensions插件实现原理,其实还是非常简单。...答案就是,为了不用在列表滚动时候频繁调用findViewById(),从而减少了一些没必要性能消耗。...另外,如果想要学习Kotlin和最新Android知识,可以参考我新书 《第一行代码 第3版》,点击此处查看详情。

2.7K31

关于Kotlin写界面时诸多控件点击事件

实现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写界面时诸多控件点击事件就是小编分享给大家全部内容了,希望能给大家一个参考。

1.1K20

Kotlin如何直接使用控件ID原理详析

前言 最近断断续续地把项目的界面部分代码由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.7K20

Android侧滑菜单之DrawerLayout用法详解

); 二)给抽屉里列表添加点击事件,动态添加碎片进入主视图 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()方法将碎片布局替换原来视图布局

1.9K10

Google挖坑后人埋-ViewBinding(上)

相信大部分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 欢迎大家访问

2.1K20

ViewBinding 与 Kotlin 委托双剑合璧

答: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 委托属性巧妙结合,告别垃圾代码!

1.6K20

Android:Jetpack之视图绑定——ViewBinding

使用这些架构开发出应用,从项目质量、代码可读性与可维护性来说,都更加出色,所以这些框架和技术逐渐流行起来。...→可观察数据持有者类,与常规Observable不同,它是具有生命周期感知; Navigation→应用内导航,Fragment管理框架,或者说路由; Paging→列表分页,可以轻松实现分页预加载以达到无限滑动效果...本节开始折腾,先带来一个超简单 → ViewBinding(视图绑定)。...先查HashMap中该id对应实例是否缓存,是返回,否findViewById获取实例存到HashMap中,同时把找到实例返回。...// 4、引用视图控件 binding.tvContent.text = "修改TextView文本" } } ④ Fragment class ContentFragment

1.2K30

2018 年初值得关注 25 个新 Android 库和项目

这个库提供: - 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

901100

安卓Navigation系列——入门篇

'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

2K51

Android:Jetpack之视图绑定——ViewBinding

使用这些架构开发出应用,从项目质量、代码可读性与可维护性来说,都更加出色,所以这些框架和技术逐渐流行起来。...→可观察数据持有者类,与常规Observable不同,它是具有生命周期感知; Navigation→应用内导航,Fragment管理框架,或者说路由; Paging→列表分页,可以轻松实现分页预加载以达到无限滑动效果...本节开始折腾,先带来一个超简单 → ViewBinding(视图绑定)。...先查HashMap中该id对应实例是否缓存,是返回,否findViewById获取实例存到HashMap中,同时把找到实例返回。...// 4、引用视图控件 binding.tvContent.text = "修改TextView文本" } } ④ Fragment class ContentFragment

98430
领券