第一个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.demoimport 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.Toastimport 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 = thissetContentView(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 -> trueelse -> super.onOptionsItemSelected(item)}}
}

运行结果

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

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

  1. 安卓入门系列-01开发工具Android Studio的安装

    Android Studio的安装 背景 谷歌在早几年就关闭了第三方支持,现在官方主推的开发工具就是Android Studio,所以我的安卓开发也是从as开始的. 步骤 下载IDE 像安卓这类开发, ...

  2. BDW01手把手系列01:BDW01开发板基于TencentOS Tiny之helloworld!

    Hello world BDW01是一个接口资源十分丰富的物联网开发板. 本文先介绍开发板资源,然后是开发环境安装,环境搭建,最后在串口上输出创建的两个任务打印. 一.开发板BDW01入门介绍 1. ...

  3. 【vue系列-01】vue初级入门以及demo实现详解

    vue的初级入门 1,vue是什么 2,vue的特点 2.1,采用组件化模式 2.2,声明式编码 2.3,虚拟DOM + Diff算法 3,vue的环境的基本配置和使用 3.1,在浏览器安装开发工具 ...

  4. 安卓入门系列-09一个实战小项目(备忘录Memo)

    一个简单的安卓平台下的备忘录 背景 之前已经介绍了不少的控件(TextView和ListView等等)以及开发中最常见的组件(Activity)(Service的权重在我心中没有Activity重要, ...

  5. java转安卓快吗_安卓Kotlin开发系列之Java快速转Kotlin

    原标题:安卓Kotlin开发系列之Java快速转Kotlin 自从Kotlin被宣布为Android开发语言的官方支持后,如今可谓是火的一塌糊涂,作为一名Android程序员,如何快速爬坑?今天为大家 ...

  6. PHP扩展开发系列01 - 我要成为一名老司机

    PHP扩展开发系列01 - 我要成为一名老司机 1. 关于扩展的教程貌似挺全了,为啥还写? 记录下我写扩展的历程 自认为会写的更容易理解 我的宗旨就是 "先用再识" 代码写着写着就 ...

  7. 【安卓开发系列 -- APP】APP 开发基础技术整理

    [安卓开发系列 -- APP]APP 开发基础技术整理 [1]Android Studio APP 项目目录布局  [2]活动的生命周期 活动的状态 : 1. 运行状态,一个活动位于返回栈栈顶时,活动 ...

  8. python ai 教学_【Python AI教学】从零开始学Python AI开发系列01

    原标题:[Python AI教学]从零开始学Python AI开发系列01 欢迎开启新的旅程. 从2016年开始,AI人工智能的热潮扑面而来.而在机器学习和深度学习领域,Python位于最受欢迎的编程 ...

  9. Auto.js Pro安卓免ROOT引流脚本开发系列教程27网易公开课(5)-UI界面构建

    课程内容 脚本前端UI界面的构建 创建话术输入框(随机话术) 创建勾选框(性别选择.话术前加入昵称.话术后添加随机符号表情) 开发文档 在线文档 APP名称 网易公开课 APP版本 安卓客户端:v6. ...

最新文章

  1. Linux环境安装卸载JDK以及安装Tomcat和发布Java的web程序
  2. 夜宵虽好,可不要贪“杯”哦
  3. python3.6安装pyqt5-Python3.6安装PyQt5的方法
  4. 北京内推 | 微软亚洲互联网工程院(STCA)招聘NLP算法实习生
  5. Vue利用Vue.extend()实现自定义弹出框
  6. OpenGL实现3D立体显示
  7. php mysql 单例模式_PHP单例模式_PHP单例模式数据库连接类
  8. php 子进程_PHP 多进程入门
  9. 算法——排序——插入排序图解动画
  10. 如何给Mac电脑的磁盘进行分区?
  11. 模糊C均值聚类算法---图像分割(python)
  12. verilog语法检查
  13. 电脑重装系统后c盘数据能恢复吗?
  14. 【小程序从0到1】小程序常用组件一览
  15. 【每日一练】56—CSS实现一款实用的响应式卡片悬停效果
  16. 取名算法之用JAVA实现姓名测试
  17. 一只喵的西行记-9 喵林英雄虹猫梦
  18. P5723 【深基4.例13】质数口袋
  19. 构造方法调用另一个构造方法
  20. ubuntu下查看电脑系统信息

热门文章

  1. AUTOMAKE\AUTOCONF
  2. Parallel Old收集器
  3. springboot集成rocketmq消费者
  4. web开发中常用的概念
  5. 数据库-事务-事务的特征
  6. 数据库-日期计算-获取年月日
  7. 数组的定义格式二_静态初始化
  8. 字典-字典和列表组合的应用场景
  9. spring项目概念-BeanFactoryApplicationContext
  10. JAVA程序中 + 号的使用