这里需要传入view对象,这个可以是布局中的任意一个view对象 。
2.2.3 Alerts
Anko Alerts主要包括以下几个功能:
Android 默认dialogAndroid Appcompat 中AlertDialog自定义Dialog
1.Android 默认dialog通过以下代码就可以构建一个可以交互的Android 默认dialog 。
alert(\\”Hi, I\\’m Roy\\”, \\”Have you tried turning it off and on again?\\”) {yesButton { toast(\\”Oh…\\”) }noButton {}}.show()
代码比较简单,就不做解释 。
2.Android Appcompat 中AlertDialog另外Anko还提供了Appcompat的AlertDialog实现方式,如下:
alert(Appcompat, \\”Some text message\\”).show()
3.自定义Dialog什么,不能自定义dialog吗?怎么会,自定义dialog也是非常的简单
alert {customView {editText()}}.show()
2.2.4 Selectors (包含列表的Dialog)
我们平时创建列表Dialog是这样的:
val listItems = arrayOf(\\”Russia\\”, \\”USA\\”, \\”Japan\\”, \\”Australia\\”)//传数组val listDialog: AlertDialog.Builder = AlertDialog.Builder(this)listDialog.setItems(listItems) { p0, p1 ->toast(p1)}val dialog: AlertDialog = listDialog.create()dialog.show()val window: Window = dialog.windowval params: WindowManager.LayoutParams = window.attributesparams.y = 45 * ScreenUtils.getScreenDensity().toInt()params.gravity = Gravity.TOP or Gravity.RIGHTparams.width = ScreenUtils.getScreenWidth() / 2params.height = ViewGroup.LayoutParams.WRAP_CONTENTwindow.attributes = params
但是我们用Anko是这样的:
val countries = listOf(\\”Russia\\”, \\”USA\\”, \\”Japan\\”, \\”Australia\\”)//传listselector(\\”Where are you from?\\”, countries, { dialogInterface, i ->toast(\\”So you\\’re living in ${countries[i]}, right?\\”)})
看起来只是简化了dialog的创建过程 。
2.2.5 Progress dialogs
不显示进度的 Loading Dialg
pressDialog(\\”Please wait a minute.\\”, \\”Downloading…\\”)indeterminateProgressDialog(\\”Fetching the data…\\”)2.3 Logging
打印log辅助工具 。
Android SDK 提供 android.util.Log 类来提供一些 logging 方法,,这些方法都很实用,但是我们每次必须传递一个 Tag 参数,同时这个 Tag 信息必须是 String 类型的,这就略显麻烦 。不过现在我们可以通过 AnkoLogger 类摆脱这些恼人的问题:
class SomeActivity : Activity(), AnkoLogger {fun someMethod() {info(\\”Info message\\”)debug(42) // .toString() method will be called automatically}}
默认的 Tag 名是当前的类名( 本例中的是SomeActivity),但是通过重写 AnkoLogger 的 loggerTag 属性我们是可以来更改的,而且每个方法有两个版本:plain and lazy (inlined)
1.Lazy:
info(\\”String \\” + \\”concatenation\\”)info { \\”String \\” + \\”concatenation\\” }
2.plain:
class SomeActivity : Activity() {private val log = AnkoLogger(this.javaClass)private val logWithASpecificTag = AnkoLogger(\\”my_tag\\”)
private fun someMethod() {log.warning(\\”Big brother is watching you!\\”)}}
上面两种方法分别是不同Tag的实现方式 。
AnkoLogger中loggerTag 属性具体对照如下:2.4 Resources and dimensions
你可以在你的项目中使用Anko Resources and dimensions来简化你的代码,例如Color、Dimen等,颜色透明度直接色值.opaque就可以,尺寸的话直接使用dip(dipValue)、sp(spValue)就可以 。在这里面还有一个就是applyRecursively()用来控制子View的操作,如:
verticalLayout {textView{text = \\”EditText01\\”backgroundColor = 0xff000.opaquetextSize = 14f}textView {text = \\”EditText02\\”backgroundColor = 0x99.gray.opaquetextSize = 23f}}.applyRecursively {//如果是ViewGroup的话可以使用applyRecursively来为每个Child View进行设置view -> when(view){is TextView -> view.textColor = Color.RED}}3.Anko Layouts
- 富安娜家纺四件套颜色特点 富安娜家纺床上用品
- 情人节颜色代表什么
- 彩虹的七种颜色是什么 彩虹的七种颜色分别是
- 草莓的花是什么颜色 草莓的花有哪些颜色
- 学士服颜色分类是什么 学士服颜色分类的区别
- 什么颜色可以调成粉红色 哪两种颜色混合变粉红色
- 黄颜色的水果有哪些 有哪些黄颜色的水果
- 金丝楠木颜色 金丝楠木颜色是什么
- 颜色种类 颜色有哪些种类
- 浅蓝色和什么颜色最搭 浅蓝色衣服配什么颜色裤子
