Kotlin是Google推荐的Android开发语言,相对于java,kotlin的代码更加简洁。kotlin可以结合anko实现xml布局的功能,可以结合kotterknife,RxKotlin提高开发效率。
首先安装Kotlin插件,File->Settings…(Ctrl+Alt+S),开发设置页面点击Plugins 搜索kotlin安装插件 安装成功后重新启动AS,您会看见下面这些
新建的时候你会发现多了一些东西
这样我们就可以创建自己的kotlin程序了。 gradle文件配置有了插件以后都是自动完成的,我们只需要给力的网速下载jar包就行了。 kotlin插件配置gradle方法如下 然后选择Android with gradle就可以了 如果不想使用插件配置的话,也可以手动配置。需要配置build.gradle文件
buildscript { ext.kotlin_version = '1.1.2-4' repositories { jcenter() mavenCentral()//告诉project 使用jcenter库 } dependencies { //告诉project使用android提供的2.3.2版本gradle classpath 'com.android.tools.build:gradle:2.3.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } //配置所有工程 allprojects { repositories { jcenter()//所用的project都是使用jcenter库 } } task clean(type: Delete) { delete rootProject.buildDir } apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { //配置kotlin文件源码存放目录 sourceSets { main.java.srcDirs += 'src/main/kotlin' } } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" }在Kotlin的文件中创建我们的第一个页面,下面是插件自动生成的代码
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) tv.text = "Hello MyKotlin" tv.textSize = 20.0f } }Kotlin中定义类的时候 ‘:’代表继承也就是java中extend override代表重新父类的方法类似与java中的@Override 方法定义使用fun关键字 (savedInstanceState: Bundle?) savedInstanceState是传入参数,Bundle是参数类型, ‘?’表示这个参数可以为空
build.gradle中如何引入了apply plugin: ‘kotlin-android-extensions’ Kotlin程序中使用xml可以不需要绑定控件,直接使用xml中控件的id
我们给刚刚定义的tv添加一个点击事件
class MainActivity : AppCompatActivity(), View.OnClickListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) tv.text = "Hello MyKotlin" tv.textSize = 20.0f tv.setOnClickListener(this@MainActivity) } override fun onClick(view: View) { when (view.id) { R.id.tv -> showToast("tv") else -> { } } } }这里我们遇到了when关键字,这个类似与java中的switch,它比switch更强大,when可以有返回值,可以参数的类型适配。
循环
for (i in 0..4) { }泛型
class Box<T>(t: T) { var value = t }函数
fun add(a: Int, b: Int): Int { return a + b }定义lambda表达式
//定义 private var mOnItemClickListener: ((ItemBean, Int) -> Unit)? = null //set方法 fun setOnItemClick(listener: (ItemBean, Int) -> Unit) { mOnItemClickListener = listener } //使用 mOnItemClickListener!!.invoke(itemBeanList[pos], pos) //使用set方法 mAdapter?.setOnItemClick({ bean, _ -> //What you want to do })未完待续……