Kotlin学习记录(一)——搭建环境到输出Hello World!
来源:互联网 发布:利达信tk832 软件 编辑:程序博客网 时间:2024/05/29 18:49
写在前面:
几年前因为工作需要从一个渣渣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.myapplicationimport android.support.v7.app.AppCompatActivityimport android.os.Bundleclass MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) }}
如果你不是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.kotlinstudyimport android.app.Activityimport android.os.Bundleimport 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的变量、属性、类、构造函数、继承、方法
- Kotlin学习记录(一)——搭建环境到输出Hello World!
- MonoDroid学习笔记(一)—— 搭建MonoDroid开发环境及Hello World
- MonoDroid学习笔记(一)—— 搭建MonoDroid开发环境及Hello World
- MonoDroid学习笔记(一)—— 搭建MonoDroid开发环境及Hello World
- MonoDroid学习笔记(一)—— 搭建MonoDroid开发环境及Hello World
- Kotlin学习(一)——环境搭建
- Spring环境搭建与输出“Hello world”
- 搭建 ESP32 开发环境 — Hello World
- React Native(一):搭建开发环境、出Hello World
- Kotlin学习(二)——基本命令行操作hello world
- Hello Kotlin(二)环境搭建
- Kotlin 学习(1) -- Hello World
- 初识Kotlin(一) Kotlin环境搭建
- Python入门(一)——环境的搭建,创建第一个Python项目:Hello World
- Python入门(一)——环境的搭建,创建第一个Python项目:Hello World
- Kotlin笔记(一)——Hello Kotlin
- Flex学习笔记(一)——Hello World
- iOS开发学习笔记(一)——Hello,World!
- c++中的变量作用范围
- 在信息时代,亚媒网泛家居行业要如何发展?
- Java多线程中join方法_保证线程执行完后再销毁activity
- java基础教程:数据类型(6)
- 理解java中==、equals()、hashCode()
- Kotlin学习记录(一)——搭建环境到输出Hello World!
- Pandas GroupBy对象 索引与迭代
- C/C++时间函数time/localtime/mktime/ctime/strftime使用方法
- Java常量的应用
- 006--swift基础语法(switch、for循环、for反序遍历)
- 通讯录1.5
- 笔试之排序算法(二)
- redis学习网站
- 小米手环iOS开发实战(一):iOS蓝牙框架CoreBluetooth