当前位置:   article > 正文

Kotlin&Anko基础教程大全 一_kotlin ankio

kotlin ankio

对于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
  • 1
  • 2
  • 3
  • 4

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")
        }
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

这个例子非常简单,没有什么代码,都是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)
            }
        }

    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

属性含义:
• 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) }
        }


    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

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!")
                }
            }
        }


    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

感觉这代码和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!")
                    }
                }
            }
        }

    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

这样一来就基本上可以说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) }
        }

    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

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
        }}


    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

Anko就到此为止了,想要完全掌握还需去做点东西啊
再见

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/529871
推荐阅读
  

闽ICP备14008679号