赞
踩
对于Kotlin的环境配置我就不说了,不知道的朋友可以看以下链接
Kotlin学习过程 一 Kotlin插件安装和第一个Kotlin app - z979451341的博客 - CSDN博客
http://blog.csdn.net/z979451341/article/details/73028391
在module的build.gradle里加
compile 'org.jetbrains.anko:anko-sdk15:0.8.3' // sdk19, sdk21, sdk23 are also available
compile 'org.jetbrains.anko:anko-support-v4:0.8.3' // In case you need support-v4 bindings
compile 'org.jetbrains.anko:anko-appcompat-v7:0.8.3' // For appcompat-v7 bindings
Anko的作用就是代替xml,我们使用Anko来完成布局
1 。 先让我们写一个最简单的例子来了解Anko的代码风格
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import org.jetbrains.anko.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
verticalLayout {
button("Ok")
button("Cancel")
}
}
}
这个例子非常简单,没有什么代码,都是button(“”),甚至可以button(),而这样的使用对象有TextView, EditText, Button , ImageView。这样的配置默认是android:layout_width=”match_parent”
android:layout_height=”wrap_content”
还有就是verticalLayout相当于vertical的LinearLayout
2 .让我说一下关于控件的Layouts 和 LayoutParams属性
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import org.jetbrains.anko.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
linearLayout {
button("Login") {
textSize = 26f
}.lparams(width = wrapContent) {
horizontalMargin = dip(5)
topMargin = dip(10)
}
}
}
}
属性含义:
• horizontalMargin 同时设置 left 和 right margins,
• verticalMargin 同时设置 top 和 bottom
• margin 同时设置4个方向的 margins.
还有就是我们还可以使用relativeLayout,和我们在xml使用的一样有些命令不能使用或者效果不同与linearLayout
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import org.jetbrains.anko.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val ID_OK = 1
relativeLayout {
button("Ok") {
id = ID_OK
}.lparams { alignParentTop() }
button("Cancel").lparams { below(ID_OK) }
}
}
}
3 。 给控件设置Listener
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import org.jetbrains.anko.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
relativeLayout {
button("Login") {
onClick {
toast("Hello!")
}
}
}
}
}
感觉这代码和java代码没啥大的区别
再举个例子
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import org.jetbrains.anko.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
relativeLayout {
seekBar {
onSeekBarChangeListener {
onProgressChanged { seekBar, progress, fromUser ->
toast("Hello!")
}
}
}
}
}
}
这样一来就基本上可以说Listener使用Anko能够完全实现
4 。 include的使用
import android.graphics.Color
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import org.jetbrains.anko.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
relativeLayout {
include<View>(R.layout.activity_main) {
backgroundColor = Color.RED
}.lparams(width = matchParent) { margin = dip(12) }
}
}
}
5 。Styles,能够对ViewGroup里的View赋予一样的属性
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.widget.EditText
import org.jetbrains.anko.editText
import org.jetbrains.anko.style
import org.jetbrains.anko.verticalLayout
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
verticalLayout {
editText {
hint = "Name"
}
editText {
hint = "Password"
}
}.style { view -> when(view) {
is EditText -> view.textSize = 20f
}}
}
}
Anko就到此为止了,想要完全掌握还需去做点东西啊
再见
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。