自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 Android 利用socket 来实现 自动升级apk

下载类downloadmanager。2.创建manager。

2024-10-28 11:28:15 473 1

原创 Android 利用责任链模式来实现 解析不同的json对象

【代码】Android 利用责任链模式来实现 解析不同的json对象。

2024-10-28 10:48:39 408

原创 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解析json串的时候由于没有字段从而报错

【代码】Android解析json串的时候由于没有字段从而报错。

2024-04-12 10:35:39 229

原创 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

原创 Android 小知识 修改页面高度

【代码】【无标题】

2023-10-25 17:06:28 250

原创 Flutter 错误must be a valid Dart package name

【代码】Flutter 错误must be a valid Dart package name。

2022-11-13 11:06:13 2385

原创 Flutter (八)Log 工具类

Flutter log 工具类

2022-09-28 10:51:30 1433

原创 Flutter (七) 格式化日期工具类

Flutter 日期工具类

2022-09-28 10:49:05 1244

原创 Flutter工具类(六)loading弹窗

Flutter 弹窗

2022-09-28 10:40:11 1414

原创 Flutter工具类(五) 国际化

国际化配置Flutter

2022-09-27 10:11:46 835

原创 Flutter生命周期应用

生命周期监控

2022-09-27 10:00:18 287

原创 Flutter 工具类 (四)屏幕宽高 状态栏高度

屏幕款到

2022-09-27 09:51:37 1375

原创 Flutter 工具类 (三) 吐司 Toast

Flutter 工具类 吐司

2022-09-27 09:41:47 571

原创 Flutter工具类 (二) 图片加载框架

Flutter 图片加载

2022-09-27 09:38:28 724 1

原创 Flutter 工具类(一) sp

Flutter 工具类 sp

2022-09-27 09:31:51 1166

原创 Flutter 打包APK aab

Flutter 打包小技巧

2022-09-01 12:11:44 2755

转载 Android代码混淆配置:ProGuard

混淆

2022-08-15 13:56:40 1265

原创 Android开发 retrofit 正常使用

retrofit

2022-08-08 11:39:00 431

原创 Android跳转系统电话页面

手机号

2022-07-27 14:32:19 918

原创 Kotlin 和java 版本编写 json数据

Kotlin

2022-07-14 10:20:30 564

原创 Retrofit 涉及的设计模式

retrofit

2022-06-05 16:24:28 814

原创 Retrofit 源码解析简洁篇

retrofit 源码解析简洁篇

2022-06-04 09:56:29 295

原创 Android 键盘工具类

键盘

2022-06-03 15:26:28 337

原创 Editext 手机号3-4-4格式

3-4-4

2022-06-03 15:20:34 215

原创 Android 播放音效工具类

音效工具类

2022-06-03 15:18:03 531

原创 Android 仿照微信查看大图

查看大图

2022-06-03 09:41:48 898

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除