android Kotlin的第一个项目

时间:2022-04-13 20:08:09

版权声明:本文为 xu_song 原创文章,可以随意转载,但必须在明确位置注明出处!!!
由于2017 google I/O 大会 kotlin成了android的官方语言,我们做android的童鞋是不是坐不住了,想来看一下这一门语言的真面目呢。大家也不用担心现在java 和kotlin二门语言可以进行并行的开发,我觉得新的功能可以尝试用kotlin去写,但是老的代码也要用java去维护。这只是我个人的意见。
第一次用markdown来写博客,有写的不好的地方请大家指正
现在我们了解一下用kotlin来写android的一些准备工作

首先下载一个android studio 3.0 preview

现在这个工具还是preview版本,正式版本还没有出来,估计马上就会出来了,听说增加了很多新的功能。
这个是下载的地址 android studio 3.0 preview
这个是下载好的图片,android studio的图标也变成黄色的了
android Kotlin的第一个项目

新建一个项目

你会看见有一些变化,多了一些功能增加了,看图说画,以前的版本是没有这样的功能的
android Kotlin的第一个项目
后面的步骤就和原来一样的了,直到新建一个工程完成
注意 第一次新建项目可能会要等一下,因为第一次下载新的gradle 及gradle构建工具

kotlin的第一个项目完成了

展示了我们程序员同志们的经典 Hello World
android Kotlin的第一个项目
这样是不是太简单,太没有追求了吧,竟然写了要写一个有一点技术含量的对吧。

第一次看到这样的代码是不是很好奇,感觉很奇怪,呵呵,慢慢就习惯了

  1. 我们来看一下工程 build文件里面的相关配制
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

ext.kotlin_version = '1.1.2-4'
repositories {
maven { url 'https://maven.google.com' }
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.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 {
jcenter()
maven { url 'https://maven.google.com' }
mavenCentral()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version”这个应该是kotlin的构建工具了

2.我们来看一下app工程的build文件配制

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "test.xs.com.application"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
compile 'com.android.support:appcompat-v7:25.3.1'
testCompile 'junit:junit:4.12'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
}

apply plugin: ‘kotlin-android’
apply plugin: ‘kotlin-android-extensions’
这两个注意要引入,第二个是直接使用控件,不需要findbyId函数就可以使用控件了

写一个页面跳转的功能

从一个界面跳转到另一个界面,我们来看一下代码这个是MainActivity的主要代码

package test.xs.com.application

import android.content.Context
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {


/** 上下文 */
var context: Context? = null


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
context = this
setupViews()

}

override fun onStart() {
super.onStart()
Log.d("","onStart()===================="+Constant.Companion.LIST_PAGE_NUMBER+A.L)

}



fun setupViews() {
button.setOnClickListener({
startActivity(Intent(context,SecondActivity::class.java))
finish()
})

}

override fun onDestroy() {
super.onDestroy()
Log.d("","onDestroy()====================")
}
}

1.class MainActivity : AppCompatActivity() 有了解过c++的都知道这是继承了对吧

2.override fun onCreate(savedInstanceState: Bundle?) 这个fun表示方法,override重写对吧,savedInstanceState: Bundle?这个?号是什么意思,kotlin是一门对空检查比较严格的语言,表示这个savedInstanceState可以为空 其它的一些生命周期函数也是一样的

3.其实这一看就明白重写了AppCompatActivity的onCreate方法

4.var context: Context? = null 这个看着了比较好奇,就是定义了一个context变量,现在kotlin定义全局变量这样定义了,要记住哦

5.代码里没有一个分号是不是感觉很比别扭,这也是kotlin的一大特点呀,简洁

6.setupViews()函数里直接使用button,都没有初始化,不会报空指针吧,不会的
这一行import kotlinx.android.synthetic.main.activity_main.*代码已经做好了初始化直接可以使用布局里的控件,是不是感觉很爽呀,省了很多事

7.跳转到SecondActivity第二个界面,setupViews()函数里面的代码完全看不懂对吧记住了
在kotlin里面新建一个对象是不需要new关键字的 直接这样startActivity(Intent(context,SecondActivity::class.java))

Kotlin的一些其它特性

  1. 全局静态变量
    我们新建了一个常量类Constant
package test.xs.com.application

/**
* Created by xusong on 17/6/2.
*/

class Constant {
companion object {
/** 列表条数 */
val LIST_PAGE_NUMBER:Int = 10

fun stringIsEmty(str: String): Boolean {
if (str.equals("") || str == null) {
return true
}
return false
}
}
}

静态的变量要写在这个 companion object里面
这个用法也要注意我们看一下这个val LIST_PAGE_NUMBER:Int = 10 这个常量的用法

Log.d("","onStart()===================="+Constant.Companion.LIST_PAGE_NUMBER)

2.静态方法
这个是也是一样的了也是要写在companion object这个里面的
这个用法还是一样的
val result = Constant.stringIsEmty(“”)

3.变量
var变量 val常量

就写到这里了 很久没有写博客了,写的不好以后慢慢改进,这个主要是学习一下kotlin,当然这个只讲了一点点kotlin还有一些还多其它强大的功能,有机会再学习学习和大家一起探讨
最后这个是这个项目的源码
源码下载