【Android Kotlin】Android Studio创建一个简单的Kotlin应用
前言
第一次接触到Kotlin是在2016年,当时项目有1/3的功能已经用Kotlin进行编码。不管是和Java的交互还是语法的简洁性都已经支持很好。正是因为其语法的简洁性和空指针安全,所以这两年的工作的项目里都有使用Kotlin。不能说Google将其作为Android第一开发语言开发人员就要放弃Java而一意追随。只是作为一门基于JVM新语言,我觉得Kotlin值得大家尝试。
1、. Kotlin in Android Studio
第一次使用Koltin时,当时AS版本在2.2左右,只能通过外部插件的方式在AS中使用。而在AS3.0+以上,Kotlin已经被"捆绑"在AS中。接下来将在AS3.0+版本中介绍Kotlin的使用。
首先创建一个工程,3.0版本以上,此面板会有支持Koltin选项,勾选下一步即可。

选择Android版本

选择创建一个空的Activity,下一步

命名Activity,点击完成
OK,到这里,你的第一个Android Kotlin类就已经创建好了。

接下来我们看下app的build.gradle文件中,Kotlin的依赖已经被添加进来。

AS以上创建Kotlin文件的步骤还是很简单的,我们观察一下上图gradle中引入了 kotlin-android-extensions,从字面意思看是Kotlin Android的拓展。下面将介绍这个功能。

你的项目中是否曾经也出现过这样的代码,一堆的findViewById,写到手抽筋,代码太杂,或许你会说,我们用了ButterKnife,或者已经将findViewById做了封装抽取没有你这样复杂,的确上述方式是简单了很多,但是不管是第三方库还是封装findViewById,结果还是要写控件的Id,以及笔者在开发过程中还遇到过ButterKnife第三方库失效问题。而Kotlin将解放我们的双手,通过Android的拓展功能,获取控件对象无需添加任何代码,也能获取第三方库的效果。让我们一起摇摆(不,是用起来)!
2、Kotlin Android扩展
2-1.配置依赖
如上图所示位置
apply plugin: 'kotlin-android-extensions'
2-2.代码实现
XML布局文件声明一个id为textView文本控件。
<TextView
android:id="@+id/textView"
android:layout_width="100dp"
android:layout_height="100dp"
android:gravity="center"
android:textColor="@color/colorWhite"
android:textSize="16dp" />
代码使用拓展功能
//import kotlinx.android.synthetic.main.<layout>.
//这是导入指定布局中所有组件属性,如布局文件叫activity_main
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//直接使用id属性给控件设置值,告别findViewById
textView.text = "Hello Kotlin"
}
}
看了上面的操作后,是不是觉得Kotlin对于代码真的简约,我们在使用的过程中尽可能的避免控件的属性重复,尽管Android资源加载对两个相同id的控件也会分配不同的资源id,但是尽可能的不重复可以避免很多的意外。Kotlin拓展功能还有几个实验功能目前还没有正式开放,待正式开放时,将会把常用的功能在这里作补充。
3、Kotlin Anko库
Anko库,可以让Android的开发更加的简单,代码清晰易读,它主要由几个组成方式:
Anko Commons:intents,对话框,日志等帮助器Anko Layouts:动态Android布局Anko SQLite: Android SQLite的DSL和分析器集合Anko Coroutines:基于kotlinx.coroutines库的实用程序
这里对Anko库中几个常用的库和帮助类做简单的介绍,很多功能目前在开发中的实用性不是很高。
3-1.intents用法
3-1-1、Kotlin中跳转Activity基本写法
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("isNormal", true)
intent.setFlag(Intent.FLAG_ACTIVITY_SINGLE_TOP)
startActivity(intent)
3-1-2、Anko Intents写法
startActivity(intentFor<SecondActivity>("isNormal" to true).singleTop())
3-1-3、Anko Intents不带标志位的写法
startActivity<SecondActivity>("isNormal" to true)
3-2、Anko Layouts
在代码中进行动态布局,从开发习惯来说,这种写法对于目前安卓开发者来说很不"友好"。毕竟在XML中可以直接看到视图。所以这个功能点暂时不推荐使用,但是萝卜白菜各有所爱,有喜欢这种开发方式的同学可以尝试一波。
//纵向布局
verticalLayout {
//动态图片声明 lparams:设置view参数
imageView(R.mipmap.yww_1).lparams(width = dip(200), height = dip(400)) {
}
//EditText 声明 ,参数是EditText的值
val name = editText("I am EdiText")
//Button 声明
button("Akon Button") {
//Button 点击事件
onClick {
toast("Hello,${name.text}")
}
//Button 参数设置
}.lparams(width = wrapContent, height = wrapContent) {
horizontalMargin = dip(50)
topMargin = dip(30)
}
}
上面代码的执行效果图:

总结
本篇介绍了在AS中创建Kotlin的步骤,以及Kotlin For Android的拓展功能和Anko功能,下篇将正式开始我们的Kotlin之旅。
更多推荐



所有评论(0)