Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

Kotlin学习记录(一)——搭建环境到输出Hello World!

$
0
0

写在前面:

几年前因为工作需要从一个渣渣Java后端开发(别误会,哈哈,是说我自己当时的水平渣渣奋斗)转到了前端Android开发。那会老板发话了,给你个公司内部的项目自己练手去吧,赶紧搞好,学会了开始接客(之前的公司是外包嘛偷笑)。当时就琢磨着可以把自己自学Android的经过能写下来,但是实在没经住后来客人实在太多了,在一个又一个敷衍出的外包项目中,我就这样又删了当初建的自学分组。最近,抽出时间自学Kotlin,又想起了当初没干的事,琢磨着怎么着也得补一发。这是第一次写系列的文章,有啥不如,各位看官还请担待点,多多给小的提意见奋斗


关于Kotlin:

Kotlin,它是JetBrains开发的基于JVM的语言。JVM是啥?这.....(这都不知道,确定不是来逗我的尴尬),JetBrains可能很多人不认识,但是它的另一个产品大家肯定是知道的,没错,就是Android Studio!官方的Android IDE!

Kotlin是兼容Java的,但是它比Java更安全(比如:空安全),更简洁(这点就慢慢感受吧,岂止是少写了几行代码那么简单吗?)。

关于Kotlin说了这么多冠冕堂皇的话是不是觉得看不下去了?抱着试一试态度的人是不是这会更关心学习Kotlin的成本和难度?好吧,如果你是一名有Java开发基础的攻城狮,那它真的....很简单~!不信吗?跟我一起来试一试吧!大笑


环境搭建:

Android使用Kotlin的开发环境主要还是在Android Studio上,如果还有在使用Eclipse的童靴,Kotlin也是可以的,但是听说有很多的不足,具体的就自己尝试吧!本文,只针对Android Studio。

Android Studio 3.0+的版本将支持Kotlin的,可以直接下载使用。

如果是3.0之前的AS,也是可以通过插件的方式使用Kotlin的,具体方式如下:

现在我们的AS就可以理解Kotlin了,就和编译Java一样,编译运行Kotlin了。

创建项目:

使用Android studio新建一个项目(默认都是有过使用Android studio开发Android常识的)


如果你是AS3.0版本的,那么在新建的时候记得勾选Include Kotlin support,如图:


这样,新建项目完成后,大家会发现MainActivity的代码是这样的:


package com.lipeng.myapplication

import android.support.v7.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}


没错,这就是Kotlin的代码啦!

如果你不是3.0+的版本,那么就需要先配置一下Gradle了,配置需要修改整个项目的build.gradle和module的build.gradle。分别如下:


父类的build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    ext.kotlin_version = '1.1.2-4'  //存储当前的Kotlin版本,可以根据实时变动
    ext.anko_version = '0.8.2'  //存储当前anko库的版本

    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'

        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$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
}

module的build.gradle:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'	//记得这两个东西o~
apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.lipeng.kotlintest"
        minSdkVersion 14
        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'
        }
    }
}

buildscript {
    repositories {
        jcenter() }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
    }
}

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 'com.android.support:appcompat-v7:25.3.0'
    testCompile 'junit:junit:4.12'


    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    compile "org.jetbrains.anko:anko-common:$anko_version"  //这库是一个用来简化Android任务的Kotlin}

配置完成后,MainActivity怎么办呢?Kotlin plugin提供了一个可以把Java代码转换为Kotlin的特性:

在MainActivity类中,code  >   Convert Java File to Kotlin File。


好啦,一切准备就绪,是不是已经迫不及待运行了呢?别着急,我们做点有趣的改动,初步认识一下kotlin的简洁!


输出“这真是美好的一天”:


(注:后续的所有示例都在AS3.0上完成)

我们在activity_main.xml中给默认的TextView增加一个ID:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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="com.lipeng.kotlinstudy.MainActivity">
    <TextView
        android:id="@+id/tv_hello"
        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" />
</android.support.constraint.ConstraintLayout>

然后我们在MainActivity中这样:


package com.lipeng.kotlinstudy

import android.app.Activity
import android.os.Bundle

import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : Activity() {

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

        tv_hello.text="这真是美好的一天"
    }

}

是不是觉得很茫然,注意:

import kotlinx.android.synthetic.main.activity_main.*

对的,然后你就可以再Activity直接通过id使用view了,就这样简单,findViewById是什么鬼?

至于.text="这真是美好的一天"就相当于Java中的:tv_hello.setText("这真是美好的一天");,因为Kotlin和Java的互操作性,Kotlin是像操作属性一样,去操作Java库中的getter/setter方法。可以使用tv_hello.text代替tv_hello.setText,而且这样使用是没有任何性能开销的。具体的后续再说...


然后大家应该注意到一个地方,Kotlin中是不使用“;”的,是不是挺好,每次敲完都要小拇指点一下的习惯将离你远去。


还等什么,现在运行APP:这真是美好的一天偷笑



Kotlin学习记录(二)—— Kotlin的变量、属性、类、构造函数、继承、方法

作者:u011732740 发表于2017/6/8 14:20:35 原文链接
阅读:64 评论:2 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>