Kotlin&Anko基础教程大全 一
来源:互联网 发布:hbo 知乎 编辑:程序博客网 时间:2024/06/11 06:19
对于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 availablecompile 'org.jetbrains.anko:anko-support-v4:0.8.3' // In case you need support-v4 bindingscompile 'org.jetbrains.anko:anko-appcompat-v7:0.8.3' // For appcompat-v7 bindings
Anko的作用就是代替xml,我们使用Anko来完成布局
1 。 先让我们写一个最简单的例子来了解Anko的代码风格
import android.os.Bundleimport android.support.v7.app.AppCompatActivityimport 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.Bundleimport android.support.v7.app.AppCompatActivityimport 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.Bundleimport android.support.v7.app.AppCompatActivityimport 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.Bundleimport android.support.v7.app.AppCompatActivityimport org.jetbrains.anko.*class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) relativeLayout { button("Login") { onClick { toast("Hello!") } } } }}
感觉这代码和java代码没啥大的区别
再举个例子
import android.os.Bundleimport android.support.v7.app.AppCompatActivityimport 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.Colorimport android.os.Bundleimport android.support.v7.app.AppCompatActivityimport android.view.Viewimport 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.Bundleimport android.support.v7.app.AppCompatActivityimport android.widget.EditTextimport org.jetbrains.anko.editTextimport org.jetbrains.anko.styleimport org.jetbrains.anko.verticalLayoutclass 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就到此为止了,想要完全掌握还需去做点东西啊
再见
- Kotlin&Anko基础教程大全 一
- Kotlin&Anko基础教程大全 二
- Kotlin + anko
- android kotlin 一键配置 附anko
- 用Kotlin和Anko实现安卓UI(一)
- Kotlin Anko简单使用
- Android Kotlin anko 标题居中
- Kotlin&Anko, 扔掉XML开发Android应用
- android 3.0 kotlin开发(1) 引入 anko
- android studio3.0 kotlin配置Anko
- Android studio2.3.2 配置kotlin、Anko
- Kotlin Android UI利器之Anko Layouts
- kotlin学习笔记——sqlite(anko)
- Kotlin和anko融合进行Android开发
- Android知识体系梳理笔记五:Kotlin学习笔记一:类和继承以及Anko(全)的基本使用
- Android中kotlin的学习(anko + kotlin)
- Anko
- Kotlin开发Android笔记5:Anko for Android
- target\m2e-wtp\web-resources\META-INF\MANIFEST.MF (系统找不到指定的路径。)
- DFS A题
- 多重继承,钻石继承和虚继承
- leetcode--Compare Version Numbers
- 优化VoIP语音质量
- Kotlin&Anko基础教程大全 一
- ocjp认证的作用
- 下拉框支持输入且可以模糊匹配
- hud6082度度熊与邪恶大魔王(完全背包)
- HTML5新增标签以及扩展属性
- centos 7 部署 open-falcon 0.2.0[原文复制版]
- 查看表创建的sql脚本以及字段注释
- HDU 2616 Kill the monster
- mysql LImit 慢查询报警优化