美文网首页
从 Java 到 Kotlin,Kotlin 学习之路(1) -

从 Java 到 Kotlin,Kotlin 学习之路(1) -

作者: 零星瓢虫 | 来源:发表于2021-03-15 23:57 被阅读0次

    Kotlin 简介

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的 Swift,由 JetBrains 设计开发并开源。
    Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。
    在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    Kotlin 的优点

    简洁: 大大减少样板代码的数量。
    安全: 避免空指针异常等整个类的错误。
    互操作性: 充分利用 JVM、Android 和浏览器的现有库。
    工具友好: 可用任何 Java IDE 或者使用命令行构建

    使用命令运行 kotlin 文件

    我们知道运行 java 文件,需要对 java 文件进行编译并且运行。
    同样,kotlin 也需要进行编译并且运行,所以需要下载相关 kotlin 库(类似与 java 库),同时配置相关环境能够编译 kotlin 文件;

    Kotlin 命令行编译工具下载地址:https://github.com/JetBrains/kotlin/releases/tag/v1.1.2-2 ,使用 1.1.2-2 版本,最新版本可在 git 查找;

    下载完成后,解压到指定目录,然后将 bin 目录添加到系统环境变量。bin 目录包含编译和运行 Kotlin 所需的脚本。

    kotlin.png

    这里需要注意 bin 中要包括 kotlinc-jvm 等文件,之前本人用最新版本的时候发现没有 kotlin-jvm 相关文件,调试了半天总是报错,换回版本后可正常运行;

    以下基于 Windows 操作;

    创建一个名为 hello.kt 文件,代码如下:

    hello.kt

    fun main(args: Array<String>) {
        println("hello kotlin!")
    }
    

    使用 Kotlin 编译器编译应用:

    kotlinc hello.kt 
    

    编译之后可以看到会生成几个文件,其中有一份 HelloKt.class 文件;

    hello.kt.png

    此时继续使用命令行:

    kotlin HelloKt
    
    HelloKt.png

    运行完成第一行代码;

    Android Studio 中 Kotlin 环境的搭建

    Android Studio 从 3.0(preview)版本开始将内置安装 Kotlin 插件。

    打开 Settings ,在右侧找到 Plugins 选项,搜索框输入 "Kotlin" 查找,点击 Search in repositories(仓库中搜索),然后安装即可,安装完成之后需要重启 Android Studio。


    `})80EL`)ABJLC$`MB8DZD4.png

    创建项目,并且配置 Kotlin;

    image.png

    项目创建一个 Empty Activity ;

    image.png

    配置 Language 选项为 Kotlin 语言;

    image.png

    查看项目;

    image.png

    可以看到,项目的结构和 java 项目类似,而相关 Activity 则运用了 Kotlin 语言进行编写,同时文件命名也以 .kt 结尾;

    接下来,继续查看项目和主工程下的 gradle 文件;

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    
    buildscript {
        ext.kotlin_version = '1.3.50'
        repositories {
            google()
            jcenter()
            
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.5.1'
            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 {
            google()
            jcenter()
            
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    
    

    项目中用到了 Kotlin 插件,其版本号为 1.3.50

    apply plugin: 'com.android.application'
    
    apply plugin: 'kotlin-android'
    
    apply plugin: 'kotlin-android-extensions'
    
    android {
        compileSdkVersion 29
        buildToolsVersion "29.0.2"
        defaultConfig {
            applicationId "com.example.kotlindemo"
            minSdkVersion 19
            targetSdkVersion 29
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
        implementation 'androidx.appcompat:appcompat:1.0.2'
        implementation 'androidx.core:core-ktx:1.0.2'
        implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test.ext:junit:1.1.0'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    }
    
    

    同时主工程也使用到了 Kotlin 插件,接下来在项目基础上创建一个 Kotlin 的类;

    image.png

    创建 TestActivity,补充相关代码;

    package com.example.kotlindemo
    
    import android.os.Bundle
    import androidx.appcompat.app.AppCompatActivity
    
    /**
     * ****************************************************************
     * 文件名称 : com.example.kotlindemo
     * 作 者 :   huhaiqiang
     * 邮箱 : huhaiqiang005@163.com
     * 创建时间 : 2021-03-13 16:42
     * 文件描述 :`
     * 版权声明 : Copyright (C) 
     * 修改历史 : 2021-03-13  1.00 初始版本
     *****************************************************************
     */
    class TestActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_test);
        }
    }
    

    既然写好了第二个页面,就顺便在第一个页面实现一下相关跳转吧;

    首先,对 activity_main 页面增加控件 id;

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <TextView
            android:id="@+id/hello_test"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    MainActivity 中运用 kotlin 语言实现跳转;

            hello_test.setOnClickListener(View.OnClickListener {
                var intent = Intent(this,TestActivity::class.java)
                startActivity(intent)
            })
    

    这里不用再通过 findViewById 方式获取到 View 再次进行设置监听,直接引用 id 即可。

    运行 app ,点击 MaiActivity 中的 TextView 即可实现跳转;

    java 转换成 kotlin

    这里先创建 Java 类

    public class TestSwitchActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_switch);
        }
    }
    

    然后在 Code 选项中 选择 转换 java 为 kotlin。转换完成后的效果;

    class TestSwitchActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_switch)
        }
    }
    
    kotlin转换前.png kotlin转换后.png

    同时也可以看到,转换前和转换后文件属性发生了变化;

    相关文章

      网友评论

          本文标题:从 Java 到 Kotlin,Kotlin 学习之路(1) -

          本文链接:https://www.haomeiwen.com/subject/cwuxcltx.html