这里有新鲜出炉的精品教程,程序狗速度看过来!
Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
这篇文章主要教大家如何使用 Kotlin 进行 Android 开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Kotlin 是一门基于 JVM 的编程语言,它正成长为 Android 开发中用于替代 Java 语言的继承者。Java 是世界上使用最多的编程语言之一,当其他编程语言为更加便于开发者使用而不断进化时,Java 并没有像预期那样及时跟进。
Kotlin 是由 JetBrains 创建的基于 JVM 的编程语言,IntelliJ 正是 JetBrains 的杰作,而 Android Studio 是基于 IntelliJ 修改而来的。Kotlin 是一门包含很多函数式编程思想的面向对象编程语言。
Kotlin 生来就是为了弥补 Java 缺失的现代语言的特性,并极大的简化了代码,使得开发者可以编写尽量少的样板代码。据说是 Android 下的 swift 语言,而且是有 jetBrains 出品,有这么强大的 IDE 支持,一定错不了。
AndroidStudio 安装 Kotlin 开发插件:
点击 "Install JetBrains plugin"
输入 kotlin 搜索,安装下面那个 Kotlin Extension For Android 插件,安装后重启 AS。
创建 KotlinActivity:
新建 Android 工程,这一步和以前创建安卓工程的步骤类似,这个时候工程里面也没有跟 kotlin 有半毛钱的关系。
只不过在工程创建完成后,再新建 Activity 的时候选择 KotlinActivity:
不带分号结束的看起来就是舒服,习惯了 Lua 和 Python。
自动创建的界面布局文件和之前的没什么区别,依然是 xml 格式的。同时 manifest 里也会自动添加该 Activity 的声明。
配置 gradle:
如果 IDE 提示需要配置 Kotlin 的时候,就点击配置就好了,会自动在 project 和 module 的 build.gradle 里配置好。如果是手动配置的话,请在 project 的 build.gradle 里配置:
- buildscript {
- ext.kotlin_version = '1.0.2'
- repositories {
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:2.1.0'
- 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
- }
- }
在 module 的 build.gradle 里配置:
- apply plugin: 'com.android.application'
- apply plugin: 'kotlin-android'
- android {
- compileSdkVersion 23
- buildToolsVersion "23.0.2"
- defaultConfig {
- applicationId "com.example.demo_yunbu"
- minSdkVersion 15
- targetSdkVersion 23
- versionCode 1
- versionName "1.0"
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
- sourceSets {
- main.java.srcDirs += 'src/main/kotlin'
- }
- }
- dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'com.android.support:appcompat-v7:23.1.1'
- compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
- }
- repositories {
- mavenCentral()
- }
最后 IDE 提示 Sync Now,用用这些修改就好了。
最后我们在布局文件中添加一个 TextView 来演示控件的操作:
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/tvMessage"/>
然后在 Activity 代码里就可以直接使用变量 tvMessage 了,如果有如下提示:
只需要按 Alt+Enter 导入布局文件的引用即可,自动导入:
import kotlinx.android.synthetic.main.activity_main.*
然后可以直接使用变量 tvMessage 进行操作了,非常方便,再也不用每个控件用 findViewById 查找一遍了。
以下是完整的代码:
- package com.example.hellokotlin
- import android.content.Intent
- import android.support.v7.app.AppCompatActivity
- import android.os.Bundle
- import kotlinx.android.synthetic.main.activity_main.*
- class MainActivity : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- tvMessage.text = "hello kotlin!";
- btnOpenActivity2.text = "OpenActivity2"
- btnOpenActivity2.setOnClickListener({ startActivity(Intent(MainActivity@this, SecondActivity::class.java)) })
- }
- }
把之前的 java 代码转换为 Kotlin:
前面新建 android 工程的时候因为 MainActivity 并不是 KotlinActivity,因此需要转换一下,
选择菜单 Code->Convert Java File to Kotlin File
除了文件内容改变之外,文件的扩展名也从. java 变为了. kt。
编译,出现错误:
Error:(6, 8) Unresolved reference: kotlinx
Error:(13, 9) Unresolved reference: tvMessage
Error:Execution failed for task ':app:compileDebugKotlin'.
> Compilation error. See log for more details
提示缺少 kotlin,需要手动配置一下,在 module 的 build.gradle 里添加:
- buildscript {
- repositories {
- jcenter()
- }
- dependencies {
- classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
- }
- }
修改完成后 Sync Now 一次,编译通过,运行效果:
点击按钮后打开一个空白的页面,这里就不截图了。
使用 anko 创建界面:
前面的界面全部继续使用了 XML 来创建的,这里演示下使用 anko 创建界面。首先配置 gradle,在 project 的 gradle 里 buildscript 添加:
ext.anko_version = '0.8.2'
再在 module 的 gradle 里 dependencies 添加:
- // Anko
- compile "org.jetbrains.anko:anko-common:$anko_version"compile 'org.jetbrains.anko:anko-sdk15:0.8.2' // sdk19, sdk21, sdk23 are also available
- compile 'org.jetbrains.anko:anko-support-v4:0.8.2' // In case you need support-v4 bindings
- compile 'org.jetbrains.anko:anko-appcompat-v7:0.8.2' // For appcompat-v7 bindings
最后 Sync Now,成功后编辑 SecondActivity 的代码:
- package com.example.hellokotlin
- import android.support.v7.app.AppCompatActivity
- import android.os.Bundle
- import org.jetbrains.anko.*
- class SecondActivity : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- // setContentView(R.layout.activity_second)
- verticalLayout {
- padding = dip(30)
- editText {
- hint = "Name"
- textSize = 24f
- }
- editText {
- hint = "Password"
- textSize = 24f
- }
- button("Login") {
- textSize = 26f
- onClick { toast(button@this.text) }
- }
- }
- }
- }
这里注释掉了原来由 setContentView 来设置的 xml 布局,而使用了代码直接创建,使用起来简单直接了,但是缺点也很明显,不能做到界面设计阶段的实时预览效果,很难做到所见即所得,好在 xml 还能继续支持。运行看下效果,点击主界面的按钮打开第二个页面:
点击 Login 按钮弹出一个土司,文本就是该按钮的文本。
参考:
《Kotlin for android developers》中文版翻译
Getting started with Android and Kotlin
Unresolved reference: kotlinx
Android 开发必备知识:为什么说 Kotlin 值得一试
Kotlin 在 Android 工程中的应用
anko
使用 Kotlin 开发 Android 应用
来源: http://www.phperz.com/article/17/0827/337663.html