kotlin
文章平均质量分 92
AI老猴子
这个作者很懒,什么都没留下…
展开
-
compose快码一编--气泡升起和水滴下坠动画
今天用compose来构建一个气泡上升粘连动画和水滴下坠动画,Github源码点击这里,欢迎大家star。原文链接🔗☞如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。原创 2023-01-25 22:51:11 · 237 阅读 · 0 评论 -
Kotlin Flow 探索
CoroutineScope 会跟踪它使用 launch 或 async 创建的所有协程。您可以随时调用 scope.cancel() 以取消正在进行的工作(即正在运行的协程)。在 Android 中,某些 KTX 库为某些生命周期类提供自己的 CoroutineScope。例如,ViewModel 有 viewModelScope,Lifecycle 有 lifecycleScope。不过,与调度程序不同,CoroutineScope 不运行协程。Kotlin 提供了为 UI 组件使用的。原创 2023-01-13 11:46:21 · 204 阅读 · 0 评论 -
【Kotlin疑惑】在Kotlin类中重载一个算术运算符,并把该运算符声明为扩展函数会发生什么?
此时调用’+'运算符报错如下对错误进行解读 由于接收者类型无法匹配导致无法从候选方法中找到可以应用的分析三种不同方式重载的plus函数把kotlin代码反编译成java代码 通过反编译后我们可以发现此时plus函数处于PointKt类中,这也符合了我们之前篇章中说到“扩展函数并不是类的一部分,而是声明在类之外的”,在java中它把这个函数声明在了有着相似类名的类中,并且是一个静态函数。作为拓展函数的plus有着两个参数,kotlin在调用’+'时在java中被编译成下图[外链图片转存失败,源站可能有防盗链机原创 2022-06-09 21:44:21 · 210 阅读 · 0 评论 -
【Kotlin学习】运算符重载及其他约定——重载算术运算符、比较运算符、集合与区间的约定
定义一个plus运算符注意!如何使用关键字来声明plus函数。用于重载运算符的所有函数都需要用该关键字标记,用来表示你打算把这个函数作为相应的约定的实现,并且不是碰巧地定义一个同名函数在使用了operator修饰符声明了plus函数后,你就可以直接使用+号来求和除了把这个运算符声明为一个成员函数外,也可以把它定义为一个扩展函数这是给第三方库的类定义约定扩展函数的常用模式自定义类型的运算符,基本上和标准数字类型的运算符有着同样的优先级从java调用kotlin的运算符只需要像普通函数那样调用它们就行。当k原创 2022-06-07 22:03:37 · 218 阅读 · 0 评论 -
【Kotlin学习】类、对象和接口——定义类继承结构
下图声明了一个拥有名为click的单抽象方法的接口,所有实现该接口的非抽象类都要提供这一方法的实现kotlin使用冒号代替了extends和implements关键字,和java一样,一个类可实现多个接口但只能继承一个类在kotlin中使用override修饰符是强制要求的,这会避免先写出实现方法在添加抽象方法造成的意外重写接口的方法可以有一个默认实现,在Java8中需要你在这样的实现上标注default关键字,而kotlin没有特殊的注解,只需要提供一个方法体现在再定义一个Focusable接口,其原创 2022-06-02 21:48:03 · 235 阅读 · 0 评论 -
【Kotlin学习】类、对象和接口——带非默认构造方法或属性的类、数据类和类委托、object关键字
在java中一个类可以生命一个或多个构造方法,kotlin也一样,但做出了一点修改,它区分了主构造方法(通常是主要而简洁的初始化类的方法,并且在类体外部声明)和从/次构造方法(在类体内部声明)。同样也允许在初始化语句块中添加额外的初始化逻辑在kotlin基础中我们见过如何声明一个类通常来讲,类的所有声明都在花括号中,而这一段被括号围起来的语句块叫作主构造方法。它有两个目的1.表明构造方法的参数2.定义使用这些参数初始化的属性。可以编写的用来完成同样事情的最明确的代码关键字用来开始一个主构造方法或从构原创 2022-05-31 22:00:22 · 305 阅读 · 0 评论 -
【Kotlin学习】高阶函数的控制流——lambda的返回语句和匿名函数
高阶函数的控制流lambda中的返回语句:从一个封闭的函数返回在一个普通循环中使用return在传递给forEach的lambda中使用return如果你在lambda中使用return关键字,他会从调用lambda的函数中返回,并不只是从lambda返回。这样的return语句叫作非局部返回,因为它从一个比包含return的代码块更大的代码块中返回了。我们可以类比在java中的for循环和synchronized代码块,显然会从函数中返回要注意只有在以lambda作为参数的函数是内联函数的时原创 2022-05-28 17:29:04 · 158 阅读 · 0 评论 -
【Kotlin学习】Lambda编程——序列、使用Java函数式接口、with和apply函数
惰性集合操作:序列map和filter函数会及早的创建中间集合,也就说每一步的中间结果都被存储在一个临时列表。序列给了你执行这些操作的另一种选择,可以避免创建这些临时中间对象。filter和map都会返回一个列表,这意味着上图的链式调用会创建两个列表:一个保存filter函数的结果,一个保存map函数的结果。当元素很多时这种方式非常低效把操作变成序列 上图没有创建任何用于存储元素的中间集合kotlin惰性集合操作的入口就是Sequence接口,这个接口表示一个可以逐个列举元素的元素序列,它只提供原创 2022-05-25 17:25:29 · 290 阅读 · 0 评论 -
【Kotlin学习】Kotlin中的注解
声明并应用注解应用注解在kotlin中使用注解的方法和java一样,以@字符作为注解名字的前缀,并放在要注解的声明的最前面使用JUnit框架可以用@Test标记一个测试方法注意!在AndroidStudio中想要使用该注解需要到对应的test目录中才能标记成功@Deprecated注解它的含义和java中一样,kotlin用replaceWith参数增强了它,让你可以提供一个替代者的(匹配)模式,以支持平滑地过渡到API新版本 实参在括号中传递,就和常规函数的调用一样。用了这种声明后,若有原创 2022-05-23 16:52:14 · 3267 阅读 · 0 评论 -
【Kotlin学习】Kotlin的类型系统——基本数据类型和其他基本类型、集合与数组
基本数据类型和其他基本类型基本数据类型:Int、Boolean及其他kotlin并不区分基本数据类型和包装类型,你使用的永远是同一个类型。在运行时,数字类型会尽可能地使用最高效的方式来表示。Int类型会被编译成java基本数据类型int。不可行的例外是泛型类,比如集合。用作泛型类型参数的基本数据类型会被编译成对应的java包装类型。整数类型——Byte、Short、Int、Long浮点数类型——Float、Double字符类型——Char布尔类型——Boolean可空的基本数据类型:Int?、原创 2022-05-19 17:14:19 · 679 阅读 · 0 评论 -
kotlin嵌套,扩展,继承-构造函数,
1,Java不能函数内部定义函数;为什么要有嵌套函数?让一些代码块独立,不让外部和内部的其他方法访问,但要注意:(1)如果嵌套函数内部想访问其他嵌套函数,必须是在其他嵌套函数定义之后;(2)嵌套函数可以访问外部的属性。2,kotlin与Java一大区别:扩展函数与属性。思考:如何在已有类基础上添加属性和方法?继承,扩展,(一)扩展方法kotlin&Java默认没有open的就是final的,即不能被继承,也就无法通过继承添加属性和方法eg:String类,并且系统默认的final或op原创 2022-05-17 17:47:57 · 268 阅读 · 0 评论 -
如何用 Kotlin + 动画 快速实现一款游戏,快速上手
前言前些日子开发过一款小游戏,kotlin快速实现一款小游戏,糖果雨来啦,但由于时间的原因,只开发完成了基础版。如今,我对它进行了升级,新增了进阶版与困难版,分享给大家。成果展示现在这款游戏包含三个版本,分别为:基础版:糖果只会在屏幕最上方生成,然后从上往下掉落。进阶版:糖果只会在屏幕中间生成,然后向四周发散困难版:糖果会在屏幕四个角随机生成,然后向大致对角方向发散。基础版进阶版困难版[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Xt原创 2022-05-13 17:23:30 · 1002 阅读 · 0 评论 -
「设计模式(二) - 观察者模式」
一、回复TD退订日常生活中,这种短信无处不在,各种广告,在互联网高速发展的今天,个人信息可以说是透明的。没有任何隐私可言,类似这种通知其实跟我们开发过程使用的观察者模式(Observer Pattern)如出一辙。更贴切的像初中时代,英语学习的周报订阅,一个班级大部分还是会订阅,基本上一周一期。这个算是比较典型的观察者模式也即-发布-订阅。可以这样理解,Publishers+Subscribers=Obeserver Pattern。像这种一对多的关系,一个对象状态的改变,所有订阅它的对象都会被通知到并进原创 2022-02-25 13:44:01 · 372 阅读 · 0 评论 -
「Jetpack - Lifecycle梳理」
「Jetpack - Lifecycle梳理」一、写在前面谷歌推出Jetpack系列已经有一段时间了,作为AAC(Android Architecture Components)架构组件基础,使开发的过程越来越规范化,遵循谷歌推荐的最佳做法不仅使App更加健壮;体验更优。代码层面更加简洁(Jetpack内部帮我们处理了很多)优雅,消除了冗余的样板代码。关于Jetpack系列的解析,大佬们输出了很多优秀的文章。学到了很多,这里还是自己系统的梳理一遍,构建自己的知识体系,包括LiveData、ViewM原创 2022-02-24 22:24:22 · 160 阅读 · 0 评论 -
「 Dart 」Dart 中的类
类在 Dart 中所有对象都是某个类的实例,所有类继承了 Object 类。构造函数import 'dart:math';// 定义类class Point { num x = 0, y = 0; // Point(this.x, this.y); // 构造器 // 或者 Point(x, y) { this.x = x; this.y = y; print('这是构造函数,在实例化时触发'); } // 实例方法 num distan原创 2022-02-24 21:41:56 · 2781 阅读 · 0 评论 -
《Android编程权威指南》之深入学习intent和任务(一)
《Android编程权威指南》第 23 章,本章将创建新应用啦,叫 NerdLauncher,然后技术点是关于隐式 intent 和 intent 过滤器。本章应用呢,将会展示设备上的其他应用,还可以启动其他应用。一、创建 NerdLauncher 项目创建项目,添加 RecyclerView 用于显示 App 列表。<?xml version="1.0" encoding="utf-8"?><androidx.recyclerview.widget.RecyclerView xm原创 2022-02-24 20:17:20 · 350 阅读 · 0 评论 -
[重识 Java] Map集合-HashMap源码解析 我学废了~
背景HashMap在平时工作中使用频率高的离谱。 要说不熟悉吧? 天天用哪里不熟悉了?面试的时候,面试官:哦,那你说说底层怎么实现的吧?我:额,这个,我记得好像是通过hash计算存储到数组,还有链表和红黑树的转变过程、装载因子等,具体怎么实现的不是很清楚,平时有看过网上很多文章,不过不记得了。。但是呢,要从本质上提升自己,还是要沉下心来去深入的学习,只有基础牢固了才能更好在平时工作的运用~本文会从以下几个方面来进行学习:基本原理: 从整体的角度,简单介绍HashMap的原理和涉及到一些概念操作原创 2022-02-24 16:59:11 · 2396 阅读 · 0 评论 -
[译]Flutter缓存管理库flutter_cache_manager
本文翻译自pub: flutter_cache_manager | Flutter Package (flutter-io.cn)译时版本: flutter_cache_manager 3.3.0v2的破坏性改动CacheManager v2 当配置自定义 CacheManager 时引入了一些破坏性改动。 查看页面最下方改动的说明flutter_cache_managerCacheManager 用于下载和缓存应用缓存目录中的文件。 缓存多长时间可通过各种设置来修改。 它使用 Cache-Co原创 2022-02-24 16:22:54 · 3494 阅读 · 0 评论 -
一文读懂 Java 和 Kotlin 的泛型难点
Java 和 Kotlin 的泛型算作是一块挺大的知识难点了,涉及到很多很难理解的概念:泛型型参、泛型实参、类型参数、不变、型变、协变、逆变、内联等等。本篇文章就将 Java 和 Kotlin 结合着一起讲,按照我的个人理解来阐述泛型的各个知识难点,希望对你有所帮助 ????????一、泛型类型泛型允许你定义带类型形参的数据类型,当这种类型的实例被创建出来后,类型形参便被替换为称为类型实参的具体类型。例如,对于 List<T>,List 称为基础类型,T 便是类型型参,T 可以是任意类型,当原创 2021-05-10 21:28:28 · 580 阅读 · 5 评论