安卓重构系列-01使用Kotlin开发第一个Demo

第一个Kotlin安卓项目

  • 背景
    • 首先,你必须熟练掌握Kotlin这门编程语言,上手难度是不高的,而且真心很好用。
    • 如今,越来越多的安卓项目使用Kotlin开发,现在已经有30%的项目使用Kotlin进行开发。
    • 顺应时代,是每一个开发者的必备资质。
  • 创建项目
    • 新版的Android Studio可以在创建项目时勾选"Include kotlin support"表明这个项目可以使用Kotlin。
    • 那么,比起原来的Java项目,这个Include改动了什么呢。
      • module中build.gradle文件
        • // 使用Kotlin插件
        • apply plugin: 'kotlin-android'
        • // 使用Kotlin Android扩展插件
        • apply plugin: 'kotlin-android-extensions'
        • dependencies{ ...
        • // 添加Kotlin标准库
        • implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
        • ...}
      • project中build.gradle文件
        • dependencies { ...
        • classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        • ...}
    • 就是这些Kotlin的基础配置,使得开发改变。
    • 创建了一个名为Demo的项目,稍微改动了一些布局,得到一个简约的HelloWorld页面效果。
  • 遇到的问题
    • 初次使用可能会遇到不少问题,如果是比较熟练的Android开发者,应该很快可以上手这种开发模式。
    • IDE必须安装Kotlin插件,且buildTools和Gradle版本合适即可。
    • 遇到问题可以私戳我。
  • 补充说明
    • 关于这个代码其实有很多不同于Java开发的地方,例如控件没有绑定、变量声明的改变,这些我在后面会一一解释。

MainActivity.kt

package com.zc.demo

import android.os.Bundle
import android.support.design.widget.Snackbar
import android.support.v7.app.AppCompatActivity;
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast

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

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val context = this
        setContentView(R.layout.activity_main)
        setSupportActionBar(toolbar)
        btn.setOnClickListener {
            Toast.makeText(context, "Hello World!!!", Toast.LENGTH_LONG).show()
        }
        fab.setOnClickListener { view ->
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show()
        }
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.menu_main, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        return when (item.itemId) {
            R.id.action_settings -> true
            else -> super.onOptionsItemSelected(item)
        }
    }
}

运行结果

具体源码可以查看我的GitHub,里面的gradle配置是合适的,这个项目我会不断完善,欢迎star或者fork。

猜你喜欢

转载自blog.csdn.net/zhouchen1998/article/details/85106751