
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
引言自上次用老旧的mvc做了一个仿微信项目之后,我给自己做了一个短期的规划,先把MVP+RxJava+Retrofit这新的安卓三剑客给学了,于是,经过一个多星期的折腾,总算是对MVP+RxJava+Retrofit入了门。经过这两年的洗礼,这三门技术不断成熟稳定,得到了广大程序猿的一致认可。网上有许多优秀的文章对这三门技术进行讲解,所以,本文只作为一个学习指引,罗列出本人学习 这三者和lambd
本项目由 CSDN_LQR 个人独立开发。本库GitHub地址:https://github.com/GitLqr/LQRNativePicSelect一、简述从 Android 7.0 开始,Android SDK 中的 StrictMode 策略禁止开发人员在应用外部公开 file:// URI。具体表现为,当我们在应用中使用包含 file:// URI 的 Intent 离开自己的应
一、简述本项目由 CSDN_LQR 个人独立开发。项目博客地址:http://www.jianshu.com/p/ae5e5ffdb1f1项目源码地址:LQRWeChatRongCloud项目DemoApp下载:Demo1、简单介绍一下:这个项目是本人独立开发的第二个高仿微信项目,仿最新版微信6.5.7(除图片选择器外)。本项目基于融云SDK,使用目前较火
具名参数具名参数就是在调用函数时,给函数的实参附上形参:fun sum(arg1: Int, arg2: Int) = arg1 + arg2fun main(vararg args: String) {sum(arg1 = 2, arg2 = 3)sum(arg2 = 3, arg1 = 2)}使用具名参数可以把实参精确的传递给指定形参,因此具名参数可以不用按顺序传入。变长参数vararg 可以
类成员类成员包括 成员方法 和 成员属性:class Artist(var name: String) { // 成员属性 namevar age = 18 // 成员属性 agefun dance(danceName: String) { // 成员方法 danceprintln("$name 正在跳 $danceName")}fun sing(singName: String) { // 成员
基本运算符常见的基本运算符有 +-*/%^? ,在 Kotlin 中,这些运算符都会有对应的具名函数:表达式翻译为a + ba.plus(b)a - ba.minus(b)a * ba.times(b)a / ba.div(b)a % ba.rem(b)、 a.mod(b) (已弃用)a…ba.rangeTo(b)除此之处,还有一些常用的操作符(统称运算符),例如 in、[]、() 等:表达式翻译
接口接口是一种约定或协议,需要使用 interface 定义:interface InputDevice {fun input(event: Any)}接口不能有状态,我们可以在接口中声明一个类似"属性"的变量 x,但它并不是一个属性,相当于只是声明 getX/setX 方法:interface InputDevice {//val version: String = "default" // I
forEach高阶函数 forEach 是可迭代对象的扩展方法,接收函数类型是 (T) -> Unit 的参数 action,forEach 会将 action 这个函数作用于可迭代对象中的每个元素,这是源码:/*** Performs the given [action] on each element.*/@kotlin.internal.HidesMemberspublic inlin
常量Kotlin 中的常量使用 val 修改,一旦定义值后"不可再修改",常量类型分 2 种:运行时常量(val):编译期不能确定它的值,代码中会保留变量对它的引用。编译期常量(const val):编译期就知道值,并且会把代码中所有对它的引用都替换成它的值。下面我们来举例看看,这两者在代码层面上的区别到底是什么。运行时常量(val)这是一段很简单的 Kotlin 代码,先定义一个常量 FINAL
分支语句Kotlin 中的分支语句有两种,分别是 if...else 和 when。if 表达式Kotlin 可以像 Java 那样,使用 if...else 语句,通过判断条件来修改变量的值:var name = ""if (local == "en") {name = "lqr"} else {name = "吴彦祖"}但这种写法还不够简洁,Kotlin 对 if...else 进行发加强,支







