关于kotlin的简单使用

前言我就不介绍了,想要了解的可以去看下官方文档下面是kotlin中文的文档:

https://www.gitbook.com/book/wangjiegulu/kotlin-for-android-developers-zh

我使用的Android studio2.3.2,需要下载kotlin插件,添加步骤:

Android Studio中打开Settings,选择Plugins选项,输入kotlin,没有安装的会有提示,或者直接点击Browse Repositories,在打开的新窗口中搜索Kotlin,如下图所示。

关于kotlin的简单使用

 
关于kotlin的简单使用

我这是已经安装过得,如果未安装会出现install的按钮,点击安装,安装完成后重启Android studio即可。

重启后我们可以去尝试新建kotlin项目,这时候新建的时候就会多出了选项:

关于kotlin的简单使用

这时候就可以选择新建了,新建的时候会弹出对话框点击OK即可;接下来会进行了自动配置,等配置完成后build.gradle

会是这样的:

buildscript {
    ext.kotlin_version = '1.1.2-4'
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
其中红色标注为kotlin的自动配置,到这里已经算完成kotlin的配置了,接下来就是实践了,下面是我用的方式:

关于kotlin的简单使用

可以看下code最下方有Convert Java File to Kotlin File这一项,这个选项可以将java类转换成kotlin类,我首先做的就是找一个activity转换成kotlin形式的,用意就是看看转换后官方是怎么写的,这样更有利于学习,下面是转换后的代码:

class KotlinDemoActivity : AppCompatActivity(), View.OnClickListener {
    private var textView: TextView? = null
    private var img: ImageView? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_kotiln_test)
        initView()
        setOnlick()
        getObj(9)
    }

    private fun setOnlick() {
        textView!!.setOnClickListener(this)
        img!!.setOnClickListener(this)
    }

    private fun initView() {
        textView = findViewById(R.id.text_view) as TextView
        textView!!.text = cons.toString()
        img = findViewById(R.id.imageView) as ImageView
        img!!.setImageResource(R.mipmap.ic_launcher)
    }

    private val cons: Int
        get() {
            val a = 10
            val b = 12
            val c = 1
            return a + b * a - c / a
        }

    private fun getObj(obj: Any): String {
        if (obj is String) {
            return obj
        }
        return ""
    }

    override fun onClick(v: View) {
        when (v.id) {
            R.id.text_view -> Toast.makeText(this@KotlinDemoActivity, R.string.click_text, Toast.LENGTH_SHORT).show()
            R.id.imageView -> {
                Toast.makeText(this@KotlinDemoActivity, "img", Toast.LENGTH_SHORT).show()
                val intent = Intent()
                intent.setClass(this@KotlinDemoActivity, KotilnTest::class.java)
                intent.putExtra("img", "ssss")
                startActivity(intent)
            }
        }
    }
}
这是官方转换后的;

我们在网上查阅资料的时候也会遇到这种情况:不用调用什么findviewById的方式直接给组件赋值:

text_view.text = "ssssgggg"
其中text_view 是组件的ID,后面就相当于setText();但是有的同学整了好久就是调不出来text,其实这还需要在gradle中配置一段代码:

apply plugin: 'kotlin-android-extensions'
就这段,配上以后就能放弃findviewById的方法