安卓颜色透明度(android半透明颜色值)
安卓颜色透明度(android半透明颜色值),新营销网红网本栏目通过数据整理汇集了安卓颜色透明度(android半透明颜色值)相关信息,下面一起看看。
前言最近科特林的呼声又是日益高涨,前几天9012年谷歌超正析象管(Image Orthicon)正式将科特林从头等舱提升为科特林_第一。我也是接触了一段时间的科特林,给我的感觉就是简约,快速。无需繁琐的findId,高阶函数的应用,再加上科特林的空安全,更是将代码的崩溃率降到更低。
今天我们就来介绍一下今天的主角—安科
1.安科安科是JetBrains开发的一个强大的库,说起喷气大脑,那就牛逼了科特林语言是他们开发的,最流行的的开发工具智能理念都是他们开发的,作为也是基于想法的。好了,言归正传,安科是科特林官方开发的一个让开发机器人应用更快速更简单的科特林库,并且能让我们书写的代码更简单清楚更容易阅读。它包括多个部分
Anko Commons:是一个轻量级的库,它为意图、对话、日志等等提供了很多帮助;Anko布局一种快速且类型安全的方式来编写动态机器人布局;anko SQLite : a安卓SQLite的查询数字式用户线路和解析器集合;基于kotlinx.coroutines库的Anko Coroutines:实用程序如何使用添加依赖
依赖关系{实施组织。喷气大脑。anko : anko : $ anko _ version }这里面包括上面四个部分,你也可以只依赖一个部分,如下
依赖项{//Anko Commonsimplementation org。喷气大脑。Anko : Anko-commons : $ Anko _ version //Anko布局实现 org。喷气大脑。Anko : Anko-SDK 25: $ Anko _ version //SDK 15,sdk19,sdk21,sdk23也可用下面我们分别介绍这几个功能。
2 AnkoCommonsAnkoCommons对机器人开发者来说是一个工具集,包括但不限于下面这几个
意图对话框和烤日志资源和尺寸2.1意图前面已经提到,公共资源库是一个工具集,那意图主要是帮助简化活动之间的跳转。
传统的科特林启动新的活动的方式是创建一个意图,可能传递一些参数,将创建的目的通过语境的startActivity()传递,就像这样
val intent=Intent(this,someotheractivity :类。Java)意图。put extra( id ,5)intent.setFlag(Intent .FLAG_ACTIVITY_SINGLE_TOP)开始活动(意图)然鹅你用安科只需要这样
startActivity(intentFor("id到5)。singleTop())
如果想要传递多个参数,你也可以这样
开始活动SomeOtherActivity( id到5,“城市”到登巴萨’)还有一些关于目的的其它操作,如拨打等如下
2.2对话和祝酒这个库主要是用来快速搭建对话和吐司,具体包含以下几个
吐司纳克巴拉勒特(对话框)选择器进度对话框图阿斯坦科为我们提供了更加简单的烤使用,只需要一行代码即可实现
祝酒词("你好!")吐司(r . string。消息)长祝酒词(’哇,这样的时长)2.2.2 SnackBarsSnackBar是安德罗伊
d 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, Im Roy", "Have you tried turning it off and on again?") {yesButton { toast("Oh…") }noButton {}}.show()
代码比较简单,就不做解释。
2.Android Appcompat 中AlertDialogAnko还提供了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 youre 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
通常我们使用xml文件写我们的布局,他有一些缺点如不是类型安全,不是空安全,解析xml文件消耗更多的CPU和电量等等。而Anko Layout可以使用DSL(Domain Specific Language)动态创建我们的UI,并且它比我们使用Java动态创建布局方便很多主要是更简洁,它和拥有xml创建布局的层级关系,能让我们更容易阅读。(官方说的优点)
举个栗子
verticalLayout {val name = editText()button("Say Hello") {onClick { toast("Hello, ${name.text}!") }}}
上面的代码是不是很简单易懂,,默认的控件并不能满足我们的需求,例如我们会更改字体的颜色及大小,会设置宽度和高度,会设置margin,padding值,那么该如何实行呢,也很简单,因为它的逻辑和xml书写布局是一个套路。例如以下实现
val textView=textView("我是一个TextView"){textSize = sp(17).toFloat()textColor=0xff000.opaque}.lparams{margin=dip(10)height= dip(40)width= matchParent}
配合上前面Common库是不是很简单呢?
这里我们不需要setContentView。直接写在onCreate 中就行。
在上面创建UI过程中,我们直接把创建UI的代码写在onCreate 中了,,还有一种写法。我们创建一个内部类实行AnkoComponent接口,并重写createView ,该 返回一个View,也就是我们创建的布局。修改如下
class MyActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {super.onCreate(savedInstanceState, persistentState)MyActivityUI().setContentView(this)}}class MyActivityUI : AnkoComponent MyActivity {override fun createView(ui: AnkoContext MyActivity ) = with(ui) {verticalLayout {val name = editText()button("Say Hello") {onClick { ctx.toast("Hello, ${name.text}!") }}}}}
现在我们编译运行,发现效果和布局文件写的界面是一样的。它的性能是有优势的,其实吧并没有发觉性能优势。不管怎样,这种DSL确实便于阅读,也很容易上手,在上面的代码中,你可能注意到了dip(10),它表示将10dp转换为像素的意思,是Anko的扩展函数,说的扩展函数,如果阅读过Anko的源码我们发现里面大量的使用扩展函数,这也是Kotlin语言的优势之一。
这里就简单介绍下Layout的使用和优点。我想各位看官在实际开发中也不一定会用,因为不可视化用起来实在难以接受。不过这种见仁见智吧。
4.Anko SQLite: a query DSL and parser collection for Android SQLite;
Anko SQLite是一个查询解析SQLite的领域专用语言
SQLite 存在的不足
过多需要实现的模板代码;通过字符串实现 SQL 命令,容易出错,且编译时无法检查;每次需要手动关闭数据库;线程和同步访问的问题;
随着你应用的数据库越来越复杂,暴露出来的问题也会越多。所以也难怪很多人会选择 ORM 或者 NoSQL,但这带来的方便性是以增加应用大小和 数为代价的。
如果你打算使用 Kotlin 来开发 Android 应用,那么现在通过 Anko SQLite 就可以很方便的进行 SQLite 操作了。比如可以告别麻烦的 Cursor 和 ContentValue、内置安全机制,保证数据库在执行所有代码后能够关闭。
通过继承 ManagedSQLiteOpenHelper 类来实现数据库帮助类,推荐做法就是按照官方的实现
class DatabaseHelper(ctx: Context) : ManagedSQLiteOpenHelper(ctx, "LibraryDatabase", null, 1) {companion object {private var instance: DatabaseHelper? = null@Synchronizedfun Instance(context: Context): DatabaseHelper {if (instance == null) {instance = DatabaseHelper(context.applicationContext)}return instance!!}}override fun onCreate(database: SQLiteDatabase) {createTable(Book.TABLE_NAME, true, Book.COLUMN_ID to INTEGER + PRIMARY_KEY, Book.COLUMN_TITLE to TEXT, Book.COLUMN_AUTHOR to TEXT)}override fun onUpgrade(database: SQLiteDatabase, oldVersion: Int, newVersion: Int) {dropTable(Book.TABLE_NAME, true)}}
访问数据库的推荐做法是通过依赖注入,或者为 Context 添加一个 extension:
val Context.database: DatabaseHelperget() = DatabaseHelper.Instance(applicationContext)
下面这是一个简单的 model 类
data class Book(val id: Int, val title: String, val author: String) {companion object {val Book.COLUMN_ID = "id"val TABLE_NAME = "books"val COLUMN_TITLE = "title"val COLUMN_AUTHOR = "author"}}
当数据库准备好后,就可以通过 use 来进行操作了。比如
database.use {insert(Book.TABLE_NAME, Book.COLUMN_ID to 1, Book.COLUMN_TITLE to "2666", Book.COLUMN_AUTHOR to "Roberto Bolano")}
,让我们来比较一下常见库的大小
要注意这里 Anko SQLite 的依赖大小其实是包含了 Kotlin Runtim (method count: 6298, DEX size: 1117 KB) 和 Anko Commons module (method count: 982, DEX size: 174 KB) 的。如果你是通过 Kotlin 来开发,Anko SQLite 增加的大小其实并没有图表显示得那么多。
,如果你在使用 Kotlin 做开发并且数据库的复杂度不高,首推 Anko SQLite。但如果数据库结构非常复杂,DAO 和 SQL 查询可能会变得很痛苦,这时候 ORM 和 NoSQL 就是首选方案了。
5.Anko Coroutines: utilities based on the kotlinx.coroutines library.
Kotlin协程协程本质上是一个轻量级的线程,支持我们用同步写法写异步请求,而不用Callback。
doAsync(UI) {val data: Deferred Data = bg {// Runs in backgroundgetData()}// This code is executed on the UI threadshowData(data.await())}
我们可以用bg()在新的线程去做耗时操作,等返回结果再在UI线程进行操作。
具体协程教程我们可以看一下官方文档
Kotlin协程
6.
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.
Anko库用起来非常的简单方便,里面设计到DSL和扩展函数。
相关文章
粤语歌曲网(经典粤语歌曲汇总)
北京奥特莱斯(来北京必逛的12个商场)
豪杰超级解霸(还记得豪杰超级解霸吗?)
龚自珍的资料(清代诗人龚自珍一生功绩简介)
象牙塔是什么意思(“象牙塔”里怎么了?)
水色风信子(水培风信子容易养)
婧字怎么读
虞姬是哪里人(古代著名美人虞姬到底是哪里人?)
公办三本院校(我们还有哪些“三本”?)
电子酒柜(酒柜最全选购指南)
德州景点(德州市景区景点62个)
玉兰油官方网(OLAY发布高端臻粹系列)
更多安卓颜色透明度(android半透明颜色值)相关信息请关注本文章,本文仅仅做为展示!