Android Studio 3中让Kotlin成为了默认语言,所以自己迫不及待的试用了一下,结果还是很让人激动的。
先分享一个Android Studio的下载地址:获取 Android Studio 预览版 | Android Studio。这个地址是Google专门来给中国使用的,不用翻墙。
我先建了一个工程,当然有新建工程的时候要勾选“Include Kotlin Support”,然后新建了工程后打开主文件,发现并没有什么区别嘛!特意对比了一下,第一个是Kotlin的类,第二个是Java的类:
Kotlin类
Java类
区别主要有以下几点:
1、扩展名不同了,毕竟Kotlin嘛,扩展名变成了kt,而不是java。
2、在java中为 Bundle savedInstanceState?而Kotlin中为 savedInstanceState: Bundle??。这一句中的学问就大了,也说明了两个问题。
a、Kotlin中类型是放在参数名后面的。如在Java等很多语言中声明一个整型的变量是这样的:
Int i = 100;,但在Kotlin里面是 var i:Int = 100?。为什么这么做呢,有很多说法,我个人觉得是有利于类型推测。关于类型推测,后面也会再讲。
b、Bundle后面有个?如果大家之前使用过C#大家可能见过这个东东。这个东东就是表示这个类型可以为null。举个栗子,你定义了一个人是不是党员这样一个属性,最合适的当然是bool类型的,但这也有个问题:是不是党员这个属性并没有写在脸上,所以很多人你并不知道他是不是党员,此时你怎么赋值,否吗???此时?就很有用了,此时bool值就有三种状态,是、否和未赋值。这个是不是很有用?这种特性还有一个好处,你可以在没有赋值之前就使用这个变量,是不是觉得这个能够解决“NullPointer”异常!
3、每一行后面的;(分号)没有了!
其实在Gradle文件中也有一些差别的,其实我们并不关心,我这里就不详细说了,如果大家有兴趣可以自己研究一下,其实就是增加了一些Kotlin的支持。
好,下面我们就开始做一件非常简单的事,就是给MainActivity增加一个Button,然后增加一个事件,然后显示一个简单的消息。
layout文件我就不贴出来了,非常简单。先用java写了一个事件监听(Button的名字叫btn_java):
1
2
3
4
5
6
7
|
final Button btn_java =(Button) findViewById(R.id.btn_java);
btn_java.setOnClickListener(new Button.OnClickListener(){//创建监听
public void onClick(View v) {
Toast.makeText(btn_java.getContext(),
”Hello World From Java!”,Toast.LENGTH_SHORT).show();
}
});
|
看起来还挺简单的嘛,下面再看看Kotlin的做法:
1
2
3
4
5
|
var btn_kt = R.id.btn_kt as Button
btn_kt.setOnClickListener {view ->
Toast.makeText(view.context,”Hello World From Kotlin!”,Toast.LENGTH_SHORT).show()
}
|
还不够简单?大家也这么觉得,当然还有更优雅的方法:
1
2
3
4
5
|
var btn_kt = R.id.btn_kt as Button
btn_kt.setOnClickListener {view ->
toast(“Hello World From Kotlin!”)
}
|
这个toast是什么鬼?当然这是有定义的:
1
2
3
|
fun AppCompatActivity.toast(message:CharSequence,duration: Int = Toast.LENGTH_SHORT) {
Toast.makeText(baseContext, message, duration).show()
}
|
这个方法就有讲究了,为什么是AppCompatActivity.toast ,和C#对比,又很快就明白了,是对AppCompatActivity的一个扩展,这个就叫做扩展函数。
扩展函数有什么用呢?再给大家举个栗子:自己要写一个TCP通信的类,Kotlin本身提供的TCP通信类非常完善,所以我就想使用这个类,但是每一次使用我都要初始化,例如设置网络环境,端口,超时等等,之前我们一般怎么做呢,我的做法是用类似于Helper的函数,有个扩展函数我们就有了新的选择。使我们可以像使用类本身的函数一样使用自己定义的函数。
就说到这里吧,其实还有更精彩的Lambda函数的使用,限于篇幅,这里就不多说了。
最后,把自己这个项目分享出来:MyApp
原创文章,转载请注明: 转载自TsonTec:测量解决方案提供者
本文链接地址: 在Android Studio 3中使用Kotlin