当前位置:   article > 正文

简约之美Kotlin(一)Android Studio创建一个简单的Kotlin应用

简约之美kotlin

前言

笔者第一次接触到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'
  • 1

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" />
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

代码使用拓展功能


/*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"
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

看了上面的操作后,是不是觉得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)
  • 1
  • 2
  • 3
  • 4

3-1-2.Anko Intents写法

startActivity(intentFor<SecondActivity>("isNormal" to true).singleTop())
  • 1

3-1-3.Anko Intents不带标志位的写法

startActivity<SecondActivity>("isNormal" to true)
  • 1

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)
      }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

上面代码的效果图:

这里写图片描述

结尾

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/1009316
推荐阅读
相关标签
  

闽ICP备14008679号