前言
文章插图
最近Kotlin的呼声又是日益高涨,前几天9012年Google IO正式将Kotlin从first _class提升为kotlin_first 。我也是接触了一段时间的Kotlin,给我的感觉就是简约,快速 。无需繁琐的findId,高阶函数的应用,再加上Kotlin的null 安全,更是将代码的崩溃率降到更低 。
【android按钮透明效果 android颜色透明度怎么设置】今天我们就来介绍一下今天的主角—Anko
1.Anko
Anko是JetBrains开发的一个强大的库,说起JetBrains ,那就牛逼了,Kotlin语言是他们开发的,最流行的的开发工具intellij idea都是他们开发的,AS也是基于IDEA的 。好了,言归正传,Anko是Kotlin官方开发的一个让开发Android应用更快速更简单的Kotlin库,并且能让我们书写的代码更简单清楚更容易阅读 。它包括多个部分
Anko Commons: a lightweight library full of helpers for intents, dialogs, logging and so on;Anko Layouts: a fast and type-safe way to write dynamic Android layouts;Anko SQLite: a query DSL and parser collection for Android SQLite;Anko Coroutines: utilities based on the kotlinx.coroutines library.1.1 如何使用
添加依赖
dependencies {implementation \\”org.jetbrains.anko:anko:$anko_version\\”}
这里面包括上面四个部分,当然你也可以只依赖一个部分,如下:
dependencies {// Anko Commonsimplementation \\”org.jetbrains.anko:anko-commons:$anko_version\\”
// Anko Layoutsimplementation \\”org.jetbrains.anko:anko-sdk25:$anko_version\\” // sdk15, sdk19, sdk21, sdk23 are also availableimplementation \\”org.jetbrains.anko:anko-appcompat-v7:$anko_version\\”
// Coroutine listeners for Anko Layoutsimplementation \\”org.jetbrains.anko:anko-sdk25-coroutines:$anko_version\\”implementation \\”org.jetbrains.anko:anko-appcompat-v7-coroutines:$anko_version\\”
// Anko SQLiteimplementation \\”org.jetbrains.anko:anko-sqlite:$anko_version\\”}
下面我们分别介绍这几个功能 。
2 AnkoCommons
AnkoCommons对Android开发者来说是一个工具集,包括但不限于下面这几个
IntentsDialogs and toastsLoggingResources and dimensions2.1 Intents
前面已经提到,Commons 库是一个工具集,那Intents主要是帮助简化Activity之间的跳转 。
传统的 Kotlin 启动新的 Activity 的方式是创建一个 Intent,同时可能传递一些参数,最后将创建的 Intent 通过 Context 的 startActivity() 方法传递,就像这样:
val intent = Intent(this, SomeOtherActivity::class.java)intent.putExtra(\\”id\\”, 5)intent.setFlag(Intent.FLAG_ACTIVITY_SINGLE_TOP)startActivity(intent)
然鹅你用Anko只需要这样:
startActivity(intentFor(“id” to 5).singleTop())
如果想要传递多个参数,你也可以这样
startActivity(\\”id\\” to 5,\\”city\\” to \\”Denpasar\\”)
当然还有一些关于Intent的其它操作,如:拨打电话等:如下
2.2 Dialogs and toasts
这个库主要是用来快速搭建Dialog和toast,具体包含以下几个
ToastSnackBarAlert (Dialog)SelectorsProgress dialogs2.2.1 Toast
Anko为我们提供了更加简单的Toast使用,只需要一行代码即可实现
toast(\\”Hi there!\\”)toast(R.string.message)longToast(\\”Wow, such duration\\”)2.2.2 SnackBars
SnackBar是 Android Support Library 22.2.0 里面新增提供的一个控件,我们可以简单的把它理解成一个加强版的Toast,或者是一个轻量级的Dialog 。我们可以用下面代码快速创建snackbar 。
view.snackbar(\\”Hi there!\\”)view.snackbar(R.string.message)view.longSnackbar(\\”Wow, such duration\\”)view.snackbar(\\”Action, reaction\\”, \\”Click me!\\”) { doStuff() }
这里需要传入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
- 北极熊的皮肤是,为什么北极熊的毛是透明的,而皮肤是黑色的?
- 海康威视网络硬盘录像机怎么恢复出厂 海康威视网络硬盘录像机恢复出厂按钮在哪
- 做透明胶带的机器有那些
- 透明胶痕迹如何去掉,透明胶的痕迹如何去除
- 车上lo按钮什么意思
- 女郎透明内衣是什么
- 卡宴后视镜加热按钮在哪里
- qq名片怎么弄成透明的啊?
- 大众汽车暖风是哪个按钮
- 车的ac按钮是什么意思