转载请注明出处:王亟亟的大牛之路
从4月开始到现在 一直都在忙React-Native项目的事,途中基本没碰安卓代码,Kotlin这一块之前张涛/医生他们这些先行者开始写文章的时候就已经有所了解,直至”上位”后也没时间静下来钻研,最近逼着自己要静下心来攻克一下,所以写点东西记录一下。
内容各平台也许有重复的,我也不首发,只是自己的理解和整理,键盘侠就不要装逼了,谢谢
在”旧”的编译器Eclipse也做了支持,但是本文都是用AS操作的,用”EC”的恕我无法解决,请原谅
集成
AS 3.0自带集成了Kotlin的插件,但是并不是稳定”绿色”版本,出于强迫症的原因,并没有使用3.0
旧版可以使用下JetBrains plugin
如果一直在这里卡条,这里童工一个下载地址:https://plugins.jetbrains.com/plugin/6954-kotlin
安装完重启下AS就OK了
然后就是初始化一下项目,像这样
手改或者Configure调整都可以
此时 tools的转换按钮就可以使用了,java和kotlin代码可以无缝转换
此时你已经可以跑了,不信你试试!!
拓展
依赖注入相关也可以完美演绎,拓展插件如下
apply plugin: 'kotlin-android-extensions'
倒包的时候
import kotlinx.android.synthetic.main.<布局>.*
像这样
import kotlinx.android.synthetic.main.activity_main.*
简单的写一个触摸事件
package demo.wjj.com.kotlinandroiddemo
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.d("--->", "MainActivity onCreate")
setContentView(R.layout.activity_main)
button.text = "我是被改之后的按钮"
button.setOnClickListener { Toast.makeText(this,"MainActivity setOnClickListener",Toast.LENGTH_SHORT).show() }
}
override fun onDestroy() {
super.onDestroy()
Log.d("--->", "MainActivity onDestroy")
}
}
<?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="demo.wjj.com.kotlinandroiddemo.MainActivity">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是一个按钮" />
<TextView
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>
使用非常简单,给我的感觉更像Js(个人看法,不够深入,继续学习)
Kotlin调用Java类
首先,我们建一个简单的Java类
public class People {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public People(String s) {
name = s;
}
}
刚才的业务代码里做一些修改
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.d("--->", "MainActivity onCreate")
setContentView(R.layout.activity_main)
button.text = "我是被改之后的按钮"
button.setOnClickListener { Toast.makeText(this, "MainActivity setOnClickListener", Toast.LENGTH_SHORT).show() }
printObj.setOnClickListener {
val people = People("WangJJ")
Toast.makeText(this, people.name, Toast.LENGTH_SHORT).show()
}
}
override fun onDestroy() {
super.onDestroy()
Log.d("--->", "MainActivity onDestroy")
}
}
kotlin定义变量有几种姿势,像这样
val wjj:Int=1 // 立即赋值
val wjj1 = 2 // 自动推断出 `Int` 类型
val wjj2: Int // 如果没有初始值类型不能省略
wjj3 = 3 // 明确赋值
整体体验下来学习周期应该不会太长,语法也不算复杂,有基础的小伙伴可以轻易上手,我也会陆续跟进,之后写个Demo项目吧。
谢谢!