Android学习之kotlin (四)
Kotlin高阶函数此Kotlin支持多种方式来调用高阶函数,比如另一个函数、Lambda表达式、匿名函数、成员引用等。其中,Lambda表达式是最常见也是最普遍的高阶函数调用方式
1 定义高阶函数1234567891011121314151617181920fun plus(num1: Int, num2: Int): Int { return num1 + num2}fun minus(num1: Int, num2: Int): Int { return num1 - num2}fun num1AndNum2(num1: Int, num2: Int, operation: (Int, Int) -> Int): Int { val result = operation(num1, num2) return result}fun main() { val num1 = 100 val num2 = 80 val result1 = num1AndNum2(num1, num2, ::plus) val r ...
Android学习之kotlin (三)
Kotlin扩展函数和运算符重载1 扩展函数扩展函数表示即使在不修改某个类的源码的情况下,仍然可以打开这个类,向该类添加新的函数。
定义扩展函数只需要在函数名的前面加上一个ClassName.的语法结构,就表示将该函数添加到指定类当中了。
123fun ClassName.methodName(param1: Int, param2: Int): Int { return 0}
2 运算符重载符重载使用的是operator关键字,只要在指定函数的前面加上operator关键字,就可以实现运算符重载的功能了。
以加号运算符为例,如果想要实现让两个对象相加的功能,那么它的语法结构如下:
12345class Obj { operator fun plus(obj: Obj): Obj { // 处理相加的逻辑 }}
实现字符串的连乘, 定义为顶层函数:
123456789operator fun String.times(n : Int): String { val builder = StringBuil ...
Android学习之kotlin (二)
Kotlin标准函数和静态方法1 标准函数with、run和applywith函数接收两个参数:第一个参数可以是一个任意类型的对象,第二个参数是一个Lambda表达式。with函数会在Lambda表达式中提供第一个参数对象的上下文,并使用Lambda表达式中的最后一行代码作为返回值返回
1234val result = with(obj) { // 这里是obj的上下文 "value" // with函数的返回值}
run函数的用法和使用场景其实和with函数是非常类似的,只是稍微做了一些语法改动而已。首先run函数通常不会直接调用,而是要在某个对象的基础上调用;其次run函数只接收一个Lambda参数,并且会在Lambda表达式中提供调用对象的上下文。其他方面和with函数是一样的,包括也会使用Lambda表达式中的最后一行代码作为返回值返回
1234val result = obj.run { // 这里是obj的上下文 "value" // run函数的返回值}
apply函数和run函数也是极其类似的,都要在某个对象上调用,并且只接收 ...
Android学习之Activity
1 Activity 的启动模式启动模式一共有4种,分别是standard、singleTop、singleTask和singleInstance,可以在|AndroidManifest.xml中通过给标签指定,android: launchMode属性来选择启动模式
1.1 standard Activity默认的启动模式,在不进行显式指定的情况下,所有Activity都会自动使用这种启动模式。
1.2 singleTop在启动Activity时如果发现返回栈的栈顶已经是该Activity,则认为可以直接使用它,不会再创建新的Activity实例。不过当Activity并未处于栈顶位置时,再启动Activity还是会创建新的实例的。
1.3 singleTask每次启动该Activity时,系统首先会在返回栈中检查是否存在该Activity的实例,如果发现已经存在则直接使用该实例,并把在这个Activity之上的所有其他Activity统统出栈,如果没有发现就会创建一个新的Activity实例。
1.4 singleInstance有一个单独的返回栈来管理这个Activity,不管是 ...
Android学习之kotlin (一)
Kotlin基本1、继承与构造函数Kotlin中默认类不可以被继承,使用open关键字之后才可以被继承。
12345// 父类open class Person{}// 子类继承父类class Studen : Person() {}
Kotlin将构造函数分成了两种:主构造函数和次构造函数。
Kotlin规定,当一个类既有主构造函数又有次构造函数时,所有的次构造函数都必须调用主构造函数(包括间接调用)
12345678910// 父类open class Person(val name:String, val age: Int){}// 带参数的主构造函数class Student(val sno: String, val grade: Int, name, age) : Person(name, age) {}// 次构造函数class Student(val sno: String, val grade: Int, name, age) : Person(name, age) { c ...
$.ajax 报400错误
$.ajax 报400错误今天在实际的项目中将jQuery的$.ajax请求方式由get改为post,发现报400错误;原因是由于contentType设置错误
Get1contentType: "application/json;charset=utf-8"
Post1contentType: "application/x-www-form-urlencoded;charset=UTF-8"
默认不设置也没问题
Javajava后端@RequestMapping的Method保持默认设置即可,可接受GET、POST、PUT、DELETE等请求。
RxAndroid学习
RxAndroid 入门学习
参考RxAndroid入门
1、响应式编程具体的在上面的参考文献中说的已经非常清楚了,个人理解就是化繁为简,将多层次的嵌套变成流水式,是的代码更加清晰易读。
2、Android怎么用使用RxAndroid添加如下依赖:
123456789allprojects { repositories { maven { url "https://oss.jfrog.org/libs-snapshot" } }}dependencies { implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' implementation 'io.reactivex.rxjava3:rxjava:3.0.0'}
最新的依赖以及源码可以访问RxAndroid GitHub主页
Observable和Observe非常典型的观察者 ...
Android学习笔记-字符串的加解密
Android学习笔记(一)
#### 要点
1、在存储密钥时,要在Android环境下调试,不然下面的代码会报Not found 'AndroidKeyStore',根本原因是在PC java环境下与Android下load的方式不同。
12KeyStore keyStore = KeyStore.getInstance(alias);keyStore.load(null);
2、如果要设置自己的初始向量IV,关闭自动生成随机初始向量IV,需要设置以下代码:
1setRandomizedEncryptionRequired(false)
自定义初始向量IV长度为12byte,即iv = byte[12]
3、在byte[] 与String不能够等价的转换,即装换是不可逆的,将一个byte数组转换为String后再转换为byte[],两者等价了。因此在加密的时候使用了Base64来做转码功能。
4、IV只支持GCMParameterSpec iv = new GCMParameterSpec(128, sIv.getBytes("UTF-8") ...
AcFun Banner一览
AcFun Banner
AcFun 13周年壁纸
CSS3选择器
1.CSS3新增加的选择器:参考tomorrownan的博客:css3新增选择器。
2.动态伪类选择器锚点伪类::link,:visited
用户行为伪类::hover,active,:focus
3.属性选择器
选择器
功能描述
E[attribute]
选取带有指定属性的元素
E[attribute=value]
选取带有指定属性和值的元素
E[attr^=“val”]
匹配属性attr的值以指定值”val”开头的每个元素
E[attr$=“val”]
匹配属性attr的值以指定值”val”结尾的元素
E[attr*=“val”]
匹配属性attr的值包含字符串”val”元素
3.UI元素状态伪类:enabled,:disabled,:checked.
4.结构伪类选择器Elemnet:nth-child(n)等,其中n必须从1开始,odd表示奇数,even表示偶数。
选择
功能描述
:root
选择匹配文档的根元素
E:nth-child(n)
选择所有在其父元素中的第n个位置的匹配E的子元素
E:nth-last-child(n ...