anko安卓笔记

优点总结

kotlin通过lambda表达式,将参数从对象简化成了函数,但还不够彻底.
仍然由许多非人类的定义方式.
而jetbrains想到了这一点,开发了众多方便书写的,另程序员快乐的函数和写法.
称为anko.

在一个枝叶繁多的树上有一些果子,果子需要剥皮再吃.
原生代码搬梯子,爬树,然后让人选择摘果子还是摘树叶,最后人吃果子
而anko表示我提供名叫一步到位连摘带洗还能削皮的专用工具.
如果你常常摘叶子那我也提供摘叶子的专用工具.

具体体现在

  1. 简化高频函数的使用
    1. 略去一些参数
    2. 分割成多个函数来减少参数量
  2. 简化高频操作的使用
    1. 通过变量直接关联只关心内容的页面元素

anko-common

致力于使用更少的代码,
让代码中的信息的占比更大.

intent

1
2
3
4
5
6
7
8
9
10
11
12
// 不传参
startactivity<SomeOtherActivity>()
// 传多个参数
startActivity<SomeOtherActivity>(
"id" to 5,
"name" to "lisa"
)
// 要求回传
startActivityForResult<SomeOtherActivity>(
1,
"keyword" to "searchme"
)

dialogs和toast

1
2
3
4
5
6
7
8
toast("Hi there!")
toast(R.string.message)
longToast("Wow, such duration")

alert("Hi, I'm Roy", "Have you tried turning it off and on again?") {
negativeButton(R.string.action_cancel_send) {}
positiveButton((R.string.action_confirm_send)) { BtnSendHandle().run() }
}.show()

log

1
2
3
4
5
6
class SomeActivity : Activity(), AnkoLogger {
fun someMethod() {
info("Info message")
debug(42) // .toString() method will be called automatically
}
}

resource简化

1
2
3
4
task_1_text.text = getText(R.string.task_1_1).toString

// 优化后
task_1_text.textResource = R.string.task_1_1

anko-layout

原生的安卓将布局代码放在xml文件中,
再运行时将xml转换成java代码(耗费一定的电)来使用.
anko提供一种兼具

  1. 像xml一样简单明了
  2. 像原生代码一样动态可变化

的方式编辑布局

如果用户仅仅关心的是一个元素的内容(而非颜色,可见性等等),
原先需要通过id获取对象然后使用对象的方法获取对象内容,
如今可以直接通过变量来操作.

anko-sqlite

固定使用字符串写sql的缺点是编译时不能检查,有可能出错.
因此大多数人选择使用ORM
anko对sqlite的操作好像就是改变了一些常用函数的使用方法使其依赖更少的字符串.
其他的比如自行实现一个用来map数据的模型,
自定义byId等类似orm用法的函数等,
都可以看需求使用.

anko带来的改变有

  1. 创建数据库使用了新的语法,各种to,
  2. insert(table~name~, ‘条件’)
  3. update(table~name~, set).whereSimple(‘条件’).exec
  4. select(表, 列).whereArgs(‘条件1’,‘条件2’,‘条件3’,…)
  5. 数据库操作都写在db.use内,若想在use内改变UI,可以使用async(){}块

anko-Coroutines

协程
kotlin自己有一些协程的定义,
而anko在这之上进一步封装

参考

  1. 掘金的教程总结得都挺好
  2. 对sql比较高的封装
  3. sql最简单的介绍
  4. 知乎在map类方面有更详细的说明
  5. 该博客对sql的使用方法有最详细的说明
  6. kotlin官方对协程的简单介绍