- 博客(220)
- 收藏
- 关注
原创 Android 编写架构的规范
对于架构设计,Google一直想要规范开发者的开发习惯,但是在上层应用开发中又太过于灵活,所以一直没有形成统一的规范,即便如此,Google几乎在1-2年的时间范围内,都会推出一种新的架构设计模式,以此来优化此前的架构模式,从MVP,到MVVM,再到现在的MVI。那么在这篇文章中,我将会根据Google的开发者文档中给出的建议,通过实际的代码实现来深入说明架构的准则。
2025-03-14 16:56:53
892
原创 基于 kotlin版本的 Android的MVI架构
MVI即Model-View-Intent,它受Cycle.js前端框架的启发,提倡一种单向数据流的设计思想,非常适合数据驱动型的UI展示项目:Model: 与其他MVVM中的Model不同的是,MVI的Model主要指UI状态(State)。当前界面展示的内容无非就是UI状态的一个快照:例如数据加载过程、控件位置等都是一种UI状态View: 与其他MVX中的View一致,可能是一个Activity、Fragment或者任意UI承载单元。
2025-02-27 13:06:31
1084
原创 kotlin 知识点 七 泛型的高级特性
接下来就是神奇的地方了,Intent 接收的第二个参数本来应该是一个具体Activity 的Class类型,但由于现在T已经是一个。MyClass < T >的泛型类,其中A是B的子类型,同时 MyClass< B > 又是 MyClass < A >的子类型,Person类型,实际获得的会是一个Student的实例,但由于Person是Student的父类,向上。既然List是只读的,也。中是不合法的,而在Kotlin 中,借助泛型实化功能就可以使用T::class.java这样的语法了。
2025-02-24 16:19:19
1119
原创 kotlin 知识点六 使用infix函数构建更可读的语法
的contains()函数而已。但是加上了infix关键字之后,beginsWith()函数就变成了一个infix函数,这样除了传统。startsWith()函数的用法虽然非常简单,但是借助infix函数,我们可以使用一种更具可读。另外,infix函数由于其语法糖格式的特殊性,有两个比较严格的限制:首先,infix函数是。这里只是将to()函数改名成了with()函数,其他实现逻辑是相同的,因此相信没有什么解释。可以看到,这里使用定义泛型函数的方式将to()函数定义到了A类型下,并且接收一个B类型的。
2025-02-24 16:05:22
383
原创 kotlin 知识点五 泛型和委托
Delegate类的setValue()方法,当获取MyClass中p属性的值时,就会调用Delegate类的。动调用Delegate类的getValue()方法,当给p属性赋值的时候会自动调用Delegate类的。这里我们将MyClass类的泛型指定成Int类型,于是method()方法就可以接收一个Int类型的。有没有什么解决方案呢?在Java 中确实没有,但是在Kotlin 中可以通过类委托的功能来解决。Kotlin 中委托使用的关键字是by,我们只需要在接口声明的后面使用by关键字,再接上受委托。
2025-02-24 16:02:19
1025
原创 kotlin 知识点四 高阶函数详解 什么是内联函数
Kotlin 的标准函数,如run、apply函数这几个函数有一个共同的特点:它们都会要求我们传入一个Lambda 表达式作为参数。像这种接收Lambda 参数的函数就可以称为具有函数式编程风格的API,而如果你想要定义自己的函数式API,那就得借助高阶函数来实现了,这也是我们本节Kotlin 课堂所要重点学习的内容。首先来看一下高阶函数的定义。如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称为高阶函数。
2025-02-24 15:53:42
886
原创 kotlin 知识点三 扩展函数和运算符重载
函数,使它的API变得更加丰富。注意这里的代码变化,现在我们将lettersCount()方法定义成了String类的扩展函数,那。数中,我们将当前Money对象的value和参数传入的Money对象的value相加,然后将得到的。运算符重载使用的是operator关键字,只要在指定函数的前面加上operator关键字,就可以。但值得高兴的是,Kotlin 对扩展函数进行了很好的支持,因此这个。然并没有固定的要求,但是我建议向哪个类中添加扩展函数,就定义一个同名的Kotlin 文件,这。
2025-02-24 15:36:18
787
原创 Kotlin 知识点二 延迟初始化和密封类
虽然我们会在onCreate()方法中对adapter进行初始化,同时能确保onClick()方法必然在。onCreate()方法之后才会调用,但是我们在onClick()方法中调用adapter的任何方法时仍。下面我们通过一个具体的例子来看一下吧,就使用刚刚的UIBestP ractice 项目来作为例子。行结果只可能是Success或者Failure,这个else条件是永远走不到的,所以我们在这里直接。Result接口,用于表示未知的执行结果,但是忘记在getResultMsg()方法中添加相应的条。
2025-02-24 15:27:46
764
原创 kotlin 知识点一 变量和函数
在Kotlin中定义变量的方式和Java 区别很大,在Java 中如果想要定义一个变量,需要在变量前面声明这个变量的类型,比如说int a表示a是一个整型变量,String b表示b是一个字符串变量。而Kotlin中定义一个变量,只允许在变量前声明两种关键字:val和var。val(value 的简写)用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应Java 中的final变量。
2025-02-24 15:19:21
988
原创 Flutter---适配高版本studio运行里面的Android项目报错
【代码】Flutter---适配高版本studio运行里面的Android项目报错。
2024-09-30 13:37:56
1258
原创 Flutter ---制定项目中的android sdk路径,避免自动切换
【代码】Flutter ---制定项目中的android sdk路径,避免自动切换。
2024-09-30 13:32:40
193
原创 viewpager2+tablayout+fragment 实现 滑动 在fragment 设置两个按钮 可以控制左右能不能滑动
自定义viewpager2。activity 代码。
2024-04-17 11:46:15
253
原创 Android不同module里面跳转activity 利用Meta-data标签实现
【代码】Android不同module里面跳转activity 利用Meta-data标签实现。
2024-04-09 09:36:19
223
原创 Android 给GridLayoutManager recycle 设置item间距
【代码】Android 给GridLayoutManager recycle 设置item间距。
2023-12-27 09:14:08
1243
原创 配置vue 环境
,然后编辑path,新建,为:C:\Program Files\nodejs\。第一步:“此电脑”-右键-“属性”-“高级系统设置”-“高级”-“环境变量”第二步(我的为:C:\Program Files\nodejs。
2023-11-01 16:33:28
216
原创 Flutter 错误must be a valid Dart package name
【代码】Flutter 错误must be a valid Dart package name。
2022-11-13 11:06:13
2385
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人