Kotlin Android
wjxbless
如果觉得简单,那就多思考
展开
-
获取Bitmap中主色调的取色器
颜色空间RGB色彩空间RGB颜色空间以R(红)、G(绿)、B(蓝)三种基本色为基础,进行不同程度的叠加,呈现不同的颜色–>三原色模式RGB颜色空间 可以使用一个立方体来表示颜色,黑、蓝、绿、青、红、紫、黄、白8种常见颜色分别位居立方体的8个顶点,通常将黑色置于三维直角坐标系的原点,绿蓝红分别分别置于xyz轴上,个参数的取值范围是:R : 0 - 255, G : 0 - 255, B : 0 - 255其中(0,0,0) ->(255,255,255)的提对角线表示从黑色到白色的灰度值原创 2020-12-19 22:57:18 · 1196 阅读 · 2 评论 -
Jetpack -- App StartUp
定义App StartUp是Google Jetpack新增的一个组件,该组件在App启动时提供了一个直接、高效的方式来初始化组件,同时开发者可以使用App Startup这个组件来简化启动顺序并且显示地设置初始化顺序,通过App Startup这个组件提供了一个ContentProvider来运行所有依赖项的初始化,避免第三方库单独通过ContentProvider进行初始化,从而提高了应用的启动速度,使用效果如下图所示:图片来自 Husayn Hakeem由上面两个图对比可见,App原创 2020-07-12 22:59:43 · 680 阅读 · 0 评论 -
ViewModel源码分析
ViewModel创建ViewModelProvider(this).get(CustomModel::class.java)点进源码查看ViewModelProvider实现// 实际上调用的方法是ViewModelProvider(activity.getViewModelStore, factory)public ViewModelProvider(@NonNull ViewModelStoreOwner owner) { this(owner.getViewModelStore原创 2020-05-16 21:12:35 · 586 阅读 · 0 评论 -
Jetpack -- WorkManager
简介WorkManager适合处理一些定时执行的任务,它可以根据操作系统的版本自动选择底层是使用AlarmManager实现还是JobScheduler,降低我们的使用成本,同时他还支持周期性任务、链式任务处理等功能。WorkManager可以在应用退出或者手机重启的情况下,还能够执行之前注册的任务主要功能添加网络可用性或充电状态等工作约束调度一次性或周期性异步任务监控和管理计划...原创 2020-05-03 19:58:56 · 658 阅读 · 0 评论 -
Jetpack -- Navigation
简介NavHost: 是一个存放页面的容器,同时也是一个控制器(Activity /Fragment)NavController:切换页面,需要定制切换路线NavGraph:利用图形化的方式定制切换路线Navigation组件配合ViewModel实现数据共享1.首先创建一个Activity, 两个Fragment以及一个ViewModelfragment的xml如下...原创 2020-04-25 23:05:27 · 185 阅读 · 0 评论 -
Kotlin Coroutine + retrofit + Okhttp3 网络请求实战篇
背景最近看到很多项目都将RxJava + Retrofit 替换成了 Coroutine + retrofit,首先Coroutine + retrofit学习成本相对于Rxjava来说较低,而且最重要的一点是Kotlin的下称实现线程切换的代码更加精简,逻辑相对更加清晰一些注意:没有学习过DSL 以及 协程 的可以阅读以下两篇Kotlin DSLKotlin 协程封装RxJava ...原创 2020-06-06 16:05:20 · 1455 阅读 · 0 评论 -
Jetpack组件结合MVVM架构的Kotlin版本WanAndroid来啦
WanAndroid-Kotlin 项目根据鸿神提供的WanAndroid开放Api来制作的WanAndroidApp, 基本实现了所有的功能,使用kotlin语言开发,基于Material Design+AndroidX + MVVM + ViewModel + LiveData + RxJava + Retrofit等优秀的开源框架,上次开发的 WanAndroidMvvm版本不是很完善,所...原创 2020-06-06 16:05:29 · 3941 阅读 · 0 评论 -
Kotlin--小抄(十一)协程
简介协程是一种并发设计模式,可以使用协程来简化异步代码为什么需要协程顺序执行的代码是同步的,即下面的工作要执行必须等待之前的工作执行完毕,每一行代码都会阻塞当前的线程,显然主线程阻塞会导致明显的卡顿 ,界面呈现速度缓慢或界面冻结,对触摸事件的响应速度很慢,所以我们需要将耗时的任务放到主线程之外运行多线程执行代码,可以在不同的线程上执行顺序的代码,然后通过异步函数完成线程之间的切换工作...原创 2020-04-18 20:43:21 · 487 阅读 · 0 评论 -
Kotlin-小抄(十)Kotlin创建DSL
DSL简介DSL (领域特定语言)指的是专注于特定问题领域的计算机语言,即对一个特定问题的方案模型更高层次的抽象表达,使之更加简单易懂。DSL只是问题解决方案模型的外部封装,这个模型可能是一个API库,也可能是一个完整的框架等在Android中比较典型的例子使用DSL框架Anko来替代传统的xml(类似Flutter创建布局的方式)如下代码块:UI { &nbs...原创 2020-04-18 17:00:59 · 351 阅读 · 0 评论 -
Jetpack -- LiveData使用与源码流程分析
简介LiveData是给定生命周期的一个数据持有类LiveData配合ViewModel可以将Controller中的逻辑更加简单,在数据进行变动的时候可以通过注入观察者来监听数据的变化LiveData可以感知实现LifecycleOwner组件的生命周期,只有在上述组件的激活状态 (STARTED, RESUMED) 才会通知观察者数据更新当组件的生命周期到了DESTROYED状态的时...原创 2020-03-24 15:24:26 · 532 阅读 · 0 评论 -
Kotlin-小抄(九)文件I/O操纵、正则表达式与多线程
文件I/O操作写入读取文件val file = File("test.txt")// 写入文件if (!file.exists()) { file.createNewFile()}file.writeText("hhhhhhh", Charset.defaultCharset()) // 覆盖写入字符串,默认"UTF-8"file.appendText("aaaaaa...原创 2020-02-15 23:08:24 · 282 阅读 · 0 评论 -
Kotlin-小抄(八)泛型
简介参数化类型:在Java5中引入该机制,将类型由原来的具体类型参数化(类型参数),然后在使用时传入具体的类型引入泛型原因:之前使用的是object[]数组,当在向集合添加元素的时候,没有对元素的类型进行检查,也就是说我们向集合中添加任意对象,编译器都不会报错当我们从集合中获取一个值的时候,不能都使用Object类型,需要做不进行类型检查的强制类型转换,所以容易出错泛型的...原创 2020-02-14 10:44:26 · 160 阅读 · 0 评论 -
Kotlin-小抄(七)集合类
简介在kotlin.collections包下,在Java类库的基础之上进行改造实现了不可变集合类,同时Kotlin的集合类中不仅仅可以持有普通对象,而且能够持有函数类型的变量集合类概述Kotlin集合类分为:可变集合类,不可变集合类Kotlin集合类继承层次创建集合类集合类创建方法ListlistOf()SetsetOf()Mapma...原创 2020-02-12 16:29:28 · 205 阅读 · 0 评论 -
Kotlin-小抄(六)扩展函数与属性
扩展函数在Kotlin中我们可以完全自由扩展任何类的方法和属性,在不修改原类的情况下,Kotlin能给一个类扩展新功能而无需继承该类eg:/*** 给String扩展一个firstChar函数*/fun String.firstChar(): String { if (this.length == 0) { return "" } retur...原创 2020-02-11 14:31:17 · 159 阅读 · 0 评论 -
Kotlin-小抄(五)函数与函数式编程
简介函数式编程是一种编程范式,它与命令式编程最大的不同是,函数式编程的焦点在于数据的映射,命令式编程的焦点是解决问题的步骤,函数式编程强调的是一种编程思维,解决问题的思考方式,也叫面向函数编程eg:@Test fun test() { val list = listOf(1, 2, 3, 4, 5) // 函数式编程打印偶数 pri...原创 2020-02-09 16:08:21 · 176 阅读 · 0 评论 -
Kotlin-小抄(四)类与面向对象编程
声明类空类使用class关键字声明类,可以声明一个空类(什么都不干)声明类和构造函数在Kotlin中可以在声明类的同时声明构造函数,声明构造函数直接在类名的后面使用括号将构造函数的参数列表包含即可// 通常使用这种class Person(var name : String, var age :Int, var sex : String) { // 声明类和构造函数 ...原创 2020-02-05 16:03:26 · 200 阅读 · 0 评论 -
Kotlin-小抄(三)类型系统
Java类型系统Kotlin类型系统上面两个图 对比之后,会发现Kotlin中全是包装类型,原始类型哪里去了?Kotlin只有包装类型,在编译器编译代码的时候,自动优化性能,把对应的包装类型拆箱为原始类型装箱和拆箱在Java中,从基本数字类型到引用数字类型的转换过程就是典型的装箱操作,反过来就是拆箱操作。在Kotlin中非空数字类型到Int到可空数字类型Int?需要进行...原创 2020-02-04 21:20:37 · 314 阅读 · 0 评论 -
kotlin-小抄(二)操作符和重载
操作符优先级表[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Y37ENyf-1580803598579)(en-resource://database/9281:0)]eg:重载操作符data class Counter(var index : Int)// 实现重载必须使用operator修饰符修饰一个从重载操作符函数operator fun Co...原创 2020-02-04 16:07:47 · 230 阅读 · 1 评论 -
Kotlin-小抄(一)入门与基础语法
kotlin特性:Kotlin是一种基于JVM的静态类型编程语言与Java及JVM的完全互操作性多平台:适合Android、浏览器和本地系统编程语法简洁不咿嗦(便于学习)富于表现力和高效的生产力支持类型推断 例如,我们可以只写 val number=23 编译器会推断这 Int;可以使用数据类 data class )以极简的方式创建 POJO;运算符重载相当简单快速、 方...原创 2019-06-04 21:39:47 · 275 阅读 · 0 评论