前言

笔者第一次接触到Kotlin是在2016年6月份,当时项目有1/3的功能已经用Kotlin进行编码。不管是和Java的交互还是语法的简洁性都已经支持很好。正是因为其语法的简洁性和空指针安全,所以这两年的工作的项目里都有使用Kotlin。不能说Google将其作为Android第一开发语言开发人员就要放弃Java而一意追随。只是作为一门基于JVM新语言,我觉得Kotlin值得大家尝试。这个专栏也是主要介绍Kotlin以及Android开发使用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..*//*这是导入指定布局中所有组件属性,如布局文件叫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对于代码真的有简约之美,我们在使用的过程中尽可能的避免控件的属性(如id)重复,尽管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("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之旅。

更多相关文章

  1. android动态增加控件时控制样式的方法
  2. android 输入框等控件的移动
  3. Google 推出「Android(安卓)Beam」基於 NFC 技術的手機分享應用(
  4. android一键分享功能不使用任何第三方sdk
  5. 自个儿写Android的下拉刷新/上拉加载控件 (续)
  6. Android(安卓)UI控件之ListView实现圆角效果
  7. Android上超级好用的前端调试方法(adb reverse)
  8. android和PC(Python)通过USB(adb模式)基于Socket传输图像(视频)
  9. Android设计模式 观察者模式之eventbus

随机推荐

  1. 安卓布局文件中控件的各种属性的含义
  2. Android(安卓)WebView在4.4版本以上无法
  3. Mac下Android Studio搭建
  4. Android中的几种网络请求方式详解
  5. MPAndroidChart项目实战(六)——自定义1MPA
  6. Android Activity概述
  7. Android电话功能各部分深入探讨
  8. android studio学习日记
  9. android保存文件到手机内存
  10. Android(安卓)判断网络是否可用 & 获取IP