快到极致的 Android 模拟器Genymotion | OkyCode 

作者:JerryXia | 发表于 , 阅读 (0)
安装由于Genymotion需要依赖运行环境VirtualBox,安装前需要先安装VirtualBox。Genymotion 和 VirtualBox都是一键式安装,而且官网也有详细教程,这里就不重复造轮子了。
VirtualBox 地址:https://www.virtualbox.org/wiki/Downloads/Genymotion 中文地址:http://www.genymotion.netGenymotion 英文地址:http://www.genymotion.com
安装好后是这样
你以为这样就好了么,你还需要添加一个虚拟机,当你满心欢喜的点击Add的时候,她却告诉你无法创建
Failed to deploy virtual deviceUnadle to create virtual device:This file is corrupt.
这就好比说,老子裤子都脱了,你却不让老子干。
遇到问题及解决 有问题就有解决办法,你不让我下载,我去添加离线下载总行了吧。首先进入Setting,查看 Virtual devices 
这里是我的
/Users/...阅读全文

Kotlin 类与对象 —— 泛型 | Ohmer's Blog

作者:JerryXia | 发表于 , 阅读 (0)
与java一样,Kotlin也提供泛型,为类型安全提供保证,消除类型强转的烦恼。
泛型定义好吧,如果只是简单声明一个泛型,和Java没有什么大的区别,你可以这样声明:
123class Box<T>(t: T) {    var value = t}然后可以这样使用
12345val box: Box<Int> = Box<Int>(1)// 或者val box = Box(1) // 编译器会进行类型推断泛型约束和类的继承一样,Kotlin中使用:代替extends对泛型的的类型上限进行约束。
1class SwipeRefreshableView<T : View>{}不过这里你可以进行多个类型的上限约束:
12345678910111213class SwipeRefreshableView<T>    where T : View,          T : Refreshable {}// 或者fun <T> cloneWhenGreater(list: List<T>, threshold: T): List<T>    where T : Comparable,...阅读全文

Kotlin 类与对象 —— 类(一) | Ohmer's Blog

作者:JerryXia | 发表于 , 阅读 (0)
类的声明kotlin用关键字class声明,声明一个类可以只声明头的部分,类的声明默认是final的。就像:
123class Persion//或者class Person(name: String)类的构造函数可以有很多,但是只有一个可以声明在类的头部,这个构造函数被称做“主构造函数”,其他的被称做“次构造函数”。构造函数使用constructor关键字,主构造函数在没有可见性修饰符和注解的情况下,constructor可以被省略。默认的情况下,所有的构造函数的可见性都是public,对于使用方来说是与类的可见性保持一致。
1class Customer public @Inject constructor(name: String) { ... }主构造函数没有自己的函数体,它的参数可以在类的初始化块(init修饰)访问,在类的属性初始化时也可以访问。所以,在主构造函数里面想要做的事情,可以放在类的初始化块中实现。
123456class Customer(name: String) { val customerKey = name.toUpperCase()    ini...阅读全文

Kotlin 类与对象 —— object | Ohmer's Blog

作者:JerryXia | 发表于 , 阅读 (0)
对象(object)表达式和对象声明Kotlin中提供关键object,与java中的“Object”不同(在java中“Object”是所有类的基类,等同于Kotlin的“Any”,参考java-interop),用于直接申明一个对象,有两种使用写法:对象表达式和对象声明
对象表达式通过对象表达式可以越过类的定义直接得到一个对象:
1234val point = object { var x: Int = 0 var y: Int = 0}这个对象可以继承于某个基类,或者实现其他接口:
123456open class Device(var name: String) {}interface Vedio {    fun play(){}}var television = object : Device("Sony"), Vedio{}这可以方便的实现一个匿名内部类的对象用于方法的参数中:
12345678window.addMouseListener(object : MouseAdapter() {    override fun mouseClicked(e: Mous...阅读全文