简约之美Kotlin(一)Android(安卓)Studio创建一个简单的Kotlin应用
前言
笔者第一次接触到Kotlin是在2016年6月份,当时项目有1/3的功能已经用Kotlin进行编码。不管是和Java的交互还是语法的简洁性都已经支持很好。正是因为其语法的简洁性和空指针安全,所以这两年的工作的项目里都有使用Kotlin。不能说Google将其作为Android第一开发语言开发人员就要放弃Java而一意追随。只是作为一门基于JVM新语言,我觉得Kotlin值得大家尝试。这个专栏也是主要介绍Kotlin以及Android开发使用Kotlin遇到的问题。
1. Kotlin in Android Studio
第一次使用Koltin时,当时AS版本在2.2左右,只能通过外部插件的方式在AS中使用。而在AS3.0+以上,Kotlin已经被”捆绑”在AS中。接下来将在AS3.0+版本中介绍Kotlin的使用。
首先创建一个工程,3.0版本以上,此面板会有支持Koltin选项,勾选下一步即可。
选择Android版本
选择创建一个空的Activity,下一步
命名Activity,点击完成
OK,到这里,你的第一个Android Kotlin类就已经创建好了。
接下来我们看下app的build.gradle文件中,Kotlin的依赖已经被添加进来。
AS以上创建Kotlin文件的步骤还是很简单的,我们观察一下上图gradle中引入了 ‘kotlin-android-extensions’,从字面意思看是Kotlin Android的拓展。下面将介绍这个功能。
你的项目中是否曾经也出现过这样的代码,一堆的findViewById(),写到手抽筋,代码太杂,或许你会说,我们用了ButterKnife,或者已经将findViewById做了封装抽取没有你这样复杂,的确上述方式是简单了很多,但是不管是第三方库还是封装findViewById,结果还是要写控件的Id,以及笔者在开发过程中还遇到过ButterKnife第三方库失效问题。而Kotlin将解放我们的双手,通过Android的拓展功能,获取控件对象无需添加任何代码,也能获取第三方库的效果。让我们一起摇摆(不,是用起来)!
2.Kotlin Android扩展
2-1.配置依赖
如上图所示位置
apply plugin: 'kotlin-android-extensions'
2-2.代码实现
XML布局文件声明一个id为textView文本控件。
<TextView android:id="@+id/textView" android:layout_width="100dp" android:layout_height="100dp" android:gravity="center" android:textColor="@color/colorWhite" android:textSize="16dp" />
代码使用拓展功能
/*import kotlinx.android.synthetic.main..*/ /*这是导入指定布局中所有组件属性,如布局文件叫activity_main*/import kotlinx.android.synthetic.main.activity_main.*class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) /*直接使用id属性给控件设置值,告别findViewById*/ textView.text = "Hello Kotlin" }}
看了上面的操作后,是不是觉得Kotlin对于代码真的有简约之美,我们在使用的过程中尽可能的避免控件的属性(如id)重复,尽管Android资源加载对两个相同id的控件也会分配不同的资源id,但是尽可能的不重复可以避免很多的意外。Kotlin拓展功能还有几个实验功能目前还没有正式开放,待正式开放时,将会把常用的功能在这里作补充。
3.Kotlin Anko库
Anko库,可以让Android的开发更加的简单,代码清晰易读,它主要由几个组成方式:
Anko Commons:intents,对话框,日志等帮助器
Anko Layouts:动态Android布局
Anko SQLite: Android SQLite的DSL和分析器集合
Anko Coroutines:基于kotlinx.coroutines库的实用程序
这里对Anko库中几个常用的库和帮助类做简单的介绍,很多功能目前在开发中的实用性不是很高。
3-1.intents用法
3-1-1.Kotlin中跳转Activity基本写法
val intent = Intent(this, SecondActivity::class.java)intent.putExtra("isNormal", true)intent.setFlag(Intent.FLAG_ACTIVITY_SINGLE_TOP)startActivity(intent)
3-1-2.Anko Intents写法
startActivity(intentFor<SecondActivity>("isNormal" to true).singleTop())
3-1-3.Anko Intents不带标志位的写法
startActivity("isNormal" to true)
3-2.Anko Layouts
在代码中进行动态布局,从开发习惯来说,这种写法对于目前安卓开发者来说很不”友好”。毕竟在XML中可以直接看到视图。所以这个功能点暂时不推荐使用,但是萝卜白菜各有所爱,有喜欢这种开发方式的同学可以尝试一波。
/*纵向布局*/verticalLayout { /*动态图片声明 lparams:设置view参数 */ imageView(R.mipmap.yww_1).lparams(width = dip(200), height = dip(400)) { } /*EditText 声明 ,参数是EditText的值*/ val name = editText("I am EdiText") /*Button 声明*/ button("Akon Button") { /*Button 点击事件*/ onClick { toast("Hello,${name.text}") } /*Button 参数设置*/ }.lparams(width = wrapContent, height = wrapContent) { horizontalMargin = dip(50) topMargin = dip(30) }}
上面代码的效果图:
结尾
本篇介绍了在AS中创建Kotlin的步骤,以及Kotlin For Android的拓展功能和Anko功能,下篇将正式开始我们的Kotlin之旅。
更多相关文章
- android动态增加控件时控制样式的方法
- android 输入框等控件的移动
- Google 推出「Android(安卓)Beam」基於 NFC 技術的手機分享應用(
- android一键分享功能不使用任何第三方sdk
- 自个儿写Android的下拉刷新/上拉加载控件 (续)
- Android(安卓)UI控件之ListView实现圆角效果
- Android上超级好用的前端调试方法(adb reverse)
- android和PC(Python)通过USB(adb模式)基于Socket传输图像(视频)
- Android设计模式 观察者模式之eventbus