Kotlin和anko融合进行Android开发

使用Kotlin开发现代Android项目的入门指南 在"Dependencies"选项卡中,点击加号按钮,选择"Module Dependency"。在弹出的对话框中,选择"Kotlin/JVM"并点击"OK"。然后点击"Apply"和"OK"保存更改。在项目的"java"目录下,找到"com.example.yourprojectname"文件夹,并右键点击它。在"Kind"下拉菜单中选择"Activity",然后点击"OK"。在项目的"res"目录下,找到"layout"文件夹,并右键点击它。在项目模板中选择"空活动",然后点击"下一步"。 阅读详情

Kotlin和anko融合进行Android开发

在这里插入图片描述

kotlin是一门基于jvm的编程语言,最近进行了关于kotlin和 anko的研究。并且结合现在的APP设计模式,设想了初步的开发方式。并且准备应用在新的项目中。

Kotlin是大名鼎鼎的JB公司开发的jvm语言,官网地址为;http://kotlinlang.org/ 官网的介绍为:

Statically typed programming language for the JVM, Android and the browser

Kotlin的设计思想非常的轻量,尽可能的去复用java代码,不到万不得已的时候,一般不会自己去实现一套大而全的库。这使得Kotlin非常的轻量,集成到Android的project并不会很明显的影响最终的打包大小。 关于Kotlin的优点,自己总结了几点: 1,和Java的无缝调用,这在初期不需要投入非常大的精力,即使遇到搞不定的坑,也不必担心影响业务开发的进度,直接换成java就好了。 2,大量的语法糖,使得代码非常的简洁,熟悉之后的开发效率也要高于Java。例如扩展函数,简单的封装再也不需要写一大堆Utils工具类,直接灵活的给某些类添加扩展方法就可以了。例如:

inline fun Activity.toast(message : Int) {
     Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
 }

这样在Activity类中就多出了一个toast方法,实际上在anko中,也有大量已经写好的扩展方法,可以直接使用DSL语法去写UI。再例如when语句的写法:

when(x) {
1-> {}
2-> {}
}

复制

很明显,相比传统的Java写法,使用anko后,语言更加简洁。

switch(x) {
case 1:
 break;
case 2:
 break;
default:
 break;
}

3,更加安全,Kotlin似乎比较想消灭空引用,在Java中,调用一个null对象会抛出NullPointException,在Kotlin中,不能为空的对象,例如String对象,会写成:

var a: String? = "abc"

4,良好的生态环境和开发社区。Kotlin目前还是属于比较新的技术,很多人也都在尝试它的有点。包括Rx系列也出了RxKotlin,既RxJava的Kotlin版

#Kotlin和Anko使用 Anko的github地址为https://github.com/Kotlin/anko。集成anko的步骤如下: 首先在project的build文件加入如下代码:

dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"  //这是需要你加入的
    }

allprojects {
    repositories {
        jcenter()
        maven {url 'https://dl.bintray.com/jetbrains/anko'} //这是你需要加入的
    }
}

然后,在你app moudle的build文件里面添加依赖:

compile "org.jetbrains.anko:anko-sdk15:0.9.1" // So here it's 15 too
    compile "org.jetbrains.anko:anko-appcompat-v7:0.9.1"
    compile "org.jetbrains.anko:anko-design:0.9.1"
    compile "org.jetbrains.anko:anko-recyclerview-v7:0.9.1"

根据kotlin的优势,选择使用anko进行编写,不使用xml进行编写。 这样的好处在anko的github README文件中是这样描述的:

  1. 不安全
  2. 没有空安全
  3. 迫使你为了每一个布局去写很多相似甚至重复的代码
  4. XML在设备上浪费CPU时间和电量(应该是需要进行解析的原因) 不允许代码重用(没有完全理解,可能说的不是include标签而是自定义的layout)
  5. 至于Contract接口以及实体对象,可以直接使用Kotlin编写,第一为了语法简洁,第二不用写一大堆setter/getter方法。

具体的,首先编写MainActivity类,进行UI展示和事件等逻辑。

class MainActivity : AppCompatActivity(), MainContract.View {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }
}

接下来在onCreate中编写ui布局,登录布局比较简单,就是2个输入框和一个按钮,当然为了试用多点的常见控件,我在最上方添加了Toolbar。

relativeLayout {

            var mToolbar =
            toolbar(R.style.Base_ThemeOverlay_AppCompat_Dark_ActionBar) {
                id = ID_TOOLBAR
                title = "登录"
                backgroundColor = ContextCompat.getColor(this@MainActivity, R.color.colorPrimary)

                popupTheme = R.style.Base_ThemeOverlay_AppCompat_Light
                inflateMenu(R.menu.main)

                setNavigationIcon(R.mipmap.img_back_white)

                onMenuItemClick {
                    menuItem ->
                    val itemId = menuItem!!.itemId
                    when (itemId) {
                        R.id.menu_main -> {
                            toast(R.string.main_toast)
                        }
                    }
                    false
                    }

                lparams {
                    width = matchParent
                    height = wrapContent
                }

                setNavigationOnClickListener {
                    finish()
                }
            }

            var mUserEdit = editText {
                id = ID_USER_EDIT
                hint = "请输入同户名"
                maxLines=1

                lparams {
                    width = matchParent
                    height = wrapContent
                    margin=dip(8)
                    centerInParent()
                }
            }

            var mPsdEdit = editText {
                id= ID_PSD_EDIT
                hint="请输入密码"
                maxLines=1
                maxWidth = 16

                lparams {
                    width = matchParent
                    height = wrapContent
                    margin = dip(8)
                    below(ID_USER_EDIT)
                }
            }


            var mButton = button("登录") {
                id= ID_BTN_LOGIN

                onClick {
                    var username = mUserEdit.text.toString()
                    var password = mPsdEdit.text.toString()

                    mPresenter!!.login(username,password)
                }

                lparams {
                    width= matchParent
                    height = wrapContent
                    margin = dip(8)
                    below(ID_PSD_EDIT)
                }
            }
        }

代码中的id使用了常量,在Kotlin中没有static的概念,但是有一个companion object(伴随对象)可以模拟实现类似static的功能。

companion object static {
        val ID_TOOLBAR: Int = 1
        val ID_USER_EDIT: Int = 2
        val ID_PSD_EDIT: Int = 3
        val ID_BTN_LOGIN: Int = 4
    }

可以看到,这样编写UI的代码非常的简洁。而且可读性非常的高。相信对XML写布局比较熟悉的同学都能看懂这里面代码的含义。同时官方还出了一个Android Stduio插件,叫做anko SDL preview。可以很方便的让开发者预览编写的效果。接下来按照MVP的思想, 编写BaseView和BasePresenter接口。

interface BaseView<T> {
    fun setPresenter(presenter: T)
}
interface BasePresenter

使用Kotlin编写MainContract接口,这个接口建立起了V层和P层的通信。

interface MainContract {
    interface View : BaseView<Presenter> {
        fun login()
        fun loginNUll()
    }

    interface Presenter : BasePresenter {
        fun login(username: String, password: String)
    }
}

使用Java编写P层代码。

public class MainPresenter implements MainContract.Presenter {

    private MainContract.View mView;

    public MainPresenter(MainContract.View view) {
        mView = view;
        mView.setPresenter(this);
    }

    @Override
    public void login(String username, String password) {
        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
            mView.loginNUll();
            return;
        }
        mView.login();
    }
}

这里只是模拟了下登录的逻辑,并没有去真的实现一个登录 回到MainActivity,在这里加入我们的代码。

var mPresenter : MainContract.Presenter? = null
override fun setPresenter(presenter: MainContract.Presenter) {
    mPresenter = presenter!!
}

复制

实现V层应该实现的回调方法:

override fun loginNUll() {
    toast("用户名密码不得为空")
}

override fun login() {
    toast("执行登录逻辑...")
}

到这里,我们就完成了Kotlin和anko开发Android的实例,如果想要更加熟练的使用,还需要多加练习。

最后

更多Kotlin的学习资料可以扫描免费领取!

《高级Kotlin强化实战 》

第一章 Kotlin 入门教程

            ● Kotlin 概述

            ● Kotlin 与 Java 比较

            ● 巧用 Android Studio

            ● 认识 Kotlin 基本类型

            ● 走进 Kotlin 的数组

            ● 走进 Kotlin 的集合

            ● 完整代码

            ● 基础语法

img

第二章 Kotlin 实战避坑指南

            ● 方法入参是常量,不可修改

            ● 不要 Companion、INSTANCE?

            ● Java 重载,在 Kotlin 中怎么巧妙过渡一下?

            ● Kotlin 中的判空姿势

            ● Kotlin 复写 Java 父类中的方法

            ● Kotlin “狠”起来,连TODO都不放过!

            ● is、as` 中的坑

            ● Kotlin 中的 Property 的理解

            ● also 关键字

            ● takeIf 关键字

            ● 单例模式的写法

img

第三章 项目实战《Kotlin Jetpack 实战》

            ● 从一个膜拜大神的 Demo 开始

            ● Kotlin 写 Gradle 脚本是一种什么体验?

            ● Kotlin 编程的三重境界

            ● Kotlin 高阶函数

            ● Kotlin 泛型

            ● Kotlin 扩展

            ● Kotlin 委托

            ● 协程“不为人知”的调试技巧

            ● 图解协程:suspend

img

《史上最详Android版kotlin协程入门进阶实战 》

第一章 Kotlin协程的基础介绍

            ● 协程是什么

            ● 什么是Job 、Deferred 、协程作用域

            ● Kotlin协程的基础用法

img

第二章 kotlin协程的关键知识点初步讲解

            ● 协程调度器

            ● 协程上下文

            ● 协程启动模式

            ● 协程作用域

            ● 挂起函数

img

第三章 kotlin协程的异常处理

            ● 协程异常的产生流程

            ● 协程的异常处理

img

第四章 kotlin协程在Android中的基础应用

            ● Android使用kotlin协程

            ● 在Activity与Framgent中使用协程

            ● ViewModel中使用协程

            ● 其他环境下使用协程
Kotlin在Android开发中的应用与实践 Kotlin语言作为一种现代化的编程语言,已经在Android开发中变得越来越流行。本部分将简述Kotlin语言的背景、特点和优势,解释为何Kotlin在Android开发中得以广泛应用。背景:Kotlin语言由JetBrains公司于2011年推出,是一种基于Java虚拟机(JVM)的静态类型编程语言。Kotlin起初被设计为解决Java语言在开发效率和代码质量方面存在的一些问题,旨在提供一种更现代、更简洁、更安全的编程语言。 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化 第二百零一十一 软件开发模型01

编号类型模型领域模型中的知识点/因素/参数关联知识和法律法规1传统顺序模型瀑布模型 (Waterfall)通用软件开发、硬件紧密耦合系统、政府/军工项目、需求稳定的传统信息系统严格线性阶段:可行性研究→需求分析(SRS,含功能/非功能/接口/约束,使用IEEE 830模板)→系统设计(概要设计HLD:架构、模块划分、数据库ER图;详细设计LLD:伪代码、类图、接口定义)→实现(编码规范、代码审查、静态分析工具SonarQube)→测试(单元测试JUnit、集成测试、系统测试、验收测试UAT,测试计划提前编写

weixin_49199313的博客 149

用Kotlin的Anko库优雅开发Android应用--Anko库详细教程

前言 最近Kotlin的呼声又是日益高涨,前几天9012年Google IO正式将Kotlin从first _class提升为kotlin_first。我也是接触了一段时间的Kotlin,给我的感觉就是简约,快速。无需繁琐的findId,高阶函数的应用,再加上Kotlin的null 安全,更是将代码的崩溃率降到更低。 今天我们就来介绍一下今天的主角—Anko 1.Anko Anko是JetBrains开发的一个强大的库,说起JetBrains ,那就牛逼了,Kotlin语言是他们开发的,最流行的的开

feelinghappy的专栏 6428

Kotlin Android开发实践:从语法到架构的完整学习路径

在移动应用开发领域,编程语言的选择直接影响开发效率和代码质量。Kotlin作为一门现代静态类型语言,通过其简洁的语法设计、空安全机制和函数式编程特性,显著提升了Android开发的工程实践体验。其核心价值在于能够与Java无缝互操作,同时提供更安全的类型系统和更少的样板代码,这使得开发者可以更专注于业务逻辑而非语言细节。在Android开发场景中,Kotlin不仅简化了UI构建和异步任务处理,还能与Jetpack架构组件深度整合,实现更健壮的应用架构。本文聚焦于Kotlin在Android开发中的实际应用,

weixin_33519829的博客 245

探秘 Anko:轻量级的 Kotlin 脚本语言库

是一个由日本开发者 Mattn 创建的开源项目,它为 Kotlin 提供了一个简单易用的脚本环境,让编写 Android 应用程序变得更加简洁和高效。这个项目的主要目标是简化 Android 的 Java 代码,通过 Kotlin 的强大功能提供更优雅、可读性更强的语法。 ## 技术分析 ### Kotlin 和 Anko 的结合 Anko 建立在 Kotlin 之上,利用了 Kotlin ...

gitblog_00063的博客 647

基于Kotlin实现学生信息管理系统

移动开发综合课程设计》计算机科学与技术专业的一门实践课程,该课程设计是《移动应用开发技术》、《移动开发课程设计》、《移动应用高级开发技术》的后续课程,是一门实践性较强的课程。通过本实践课程的学习和练习,使学生掌握使用 Kotlin 语言和 Jetpack 框架等最新技术,开发一个实用的移动 App。通过对所学的理论知识、操作技能的综合应用,将一个个独立的知识技能进行融合、提升,形成一个完整的知识技能体系,提高分析问题、解决问题的能力,从而能熟练运用所学的编程技术解决现实中遇到的实际问题。

神仙别闹的自留地 1390

使用Anko快速构建Android布局

本文还有配套的精品资源,点击获取 简介:在Android开发中,使用Anko库可以显著提升布局构建的效率和简化代码。Anko提供了一种用Kotlin或Java语言替代XML布局的方式,称为DSL(领域特定语言),通过实例代码展示了如何使用Anko来创建嵌套视图、动态设置属性、布局权重和执行异步操作。它还包括一些自定义的UI组件和简化的Android SDK API,使代码更...

weixin_27645199的博客 1223

【亲测免费】 Anko 深度指南:Kotlin Android 开发利器

Anko 是一个专为 Kotlin Android 开发者设计的库,它旨在简化应用程序开发过程,提供一系列助手方法、DSL(领域特定语言)布局以及对 SQLite 和协程的支持。Anko 由以下几个主要部分组成: - **Anko Commons**:包含用于意图、对话框、日志记录等的实用工具。 - **Anko Layouts**:快速且类型安全的方式来编写动态 Android 布局。 - *...

gitblog_00210的博客 1374

Flutter加载本地HTML的优雅解决方案:轻松实现富文本展示

通过以上步骤,我们实现了Flutter加载本地HTML的完整流程,并简单介绍了如何通过WebView与HTML页面进行交互。HTML文件作为一种灵活、易维护的富文本展示方式,能有效提升Flutter应用的内容呈现能力。这种方法在展示新闻、资讯或帮助文档等内容时非常有用,能够让开发者灵活调整内容的样式和排版。希望这篇文章能对你在Flutter开发中的HTML加载有所帮助!

四楼没电梯的专栏 3641

Anko布局DSL架构解析:Kotlin声明式UI在Android开发中的实现机制

传统的Android UI开发长期依赖XML布局文件与Java/Kotlin代码分离的模式,这种架构虽然提供了视觉与逻辑的分离,但也带来了类型安全缺失、代码冗余和维护成本高等问题。Anko布局DSL作为JetBrains推出的Kotlin领域特定语言解决方案,通过编译时类型检查和声明式语法,为Android UI开发提供了全新的技术范式。 核心关键词:Anko布局DSL、Kotlin声明式UI、

gitblog_01043的博客 661

GEE AI: 利用 Satellite Embedding 语义搜索快速识别研究区目标斑块

摘要 本文介绍了一种基于Google Earth Engine的遥感语义搜索技术,利用Satellite Embedding数据集快速识别目标地物。该方法通过将光谱信息转化为高维向量,在武汉市的案例中展示了如何:1)定义研究区和样本点;2)加载预处理的Embedding数据;3)计算向量相似度;4)结合面积过滤优化结果。相比传统监督分类,该技术具有响应快速(无需模型训练)、抗季节干扰和精准界定等优势,特别适用于森林碳储量监测和土地利用检测等应用场景。文中提供了完整的GEE代码实现流程,包括样本定义、相似度计

此星光明博客 622

LMI线性矩阵不等式之非线性变量处理

​ 如果一个LMI线性矩阵不等式中的某项存在两个矩阵变量相乘,那么称该类情形为非线性矩阵不等式,而要直接求解时很困难的,而且LMI工具箱也无法求解非线性矩阵,所以需要通过变量替换法进行处理。 ​...

Mr.邹的博客 4549

3个技巧让你轻松掌握Kotlin DSL布局:告别XML的Android UI开发新体验

你是否还在为繁琐的XML布局文件而烦恼?是否厌倦了在findViewById和setOnClickListener之间来回切换?今天我要分享的Anko布局DSL技术,将彻底改变你编写Android UI的方式。这是一种基于Kotlin语言的声明式UI构建方法,让你能用更简洁、更直观的代码创建界面,同时享受类型安全和实时预览的优势。 ## 传统Android UI开发的痛点分析 在深入了解Ank

gitblog_00229的博客 402

2024“华为杯”中国研究生数学建模竞赛(A题)深度剖析_数学建模完整过程+详细思路+代码全解析

目标是优化风力涡轮机的功率调度,使其在给定的实时风速数据下,最小化涡轮机关键组件(如塔架和主轴)的疲劳损伤。问题的挑战在于,考虑通信延迟和测量噪声的同时,要确保功率输出与风速变化的响应快速且准确。

2401_82549447的博客 6628

发现新视界:「新养眼」——轻触即达的美女图集应用

发现新视界:「新养眼」——轻触即达的美女图集应用 项目介绍 在Android应用的浩瀚星海中,总有些独特的光芒引人注目。今天,我们聚焦于一款名为“新养眼”的应用程序,它是由热爱Kotlin编程的开发者倾心打造,站在巨人的肩膀上——基于MVPArms框架,全程以Kotlin语言书写,旨在为你提供一次从0到1打造个性化美图App的灵感之旅。启动时分,每一天都有一份来自gank.io的视觉惊喜等待着你,...

gitblog_00028的博客 443

从0到1打造工业级上位机:通信协议到架构设计的实战全流程

作为一名在工控领域摸爬滚打十余年的开发者,前阵子刚帮一家新能源工厂完成了一套工业上位机系统的从0到1搭建。从最初和PLC通信联调时的“连不上、传错数”,到最终系统7×24小时稳定运行,踩过的坑、攒下的实战经验,今天就毫无保留地拆解给各位同行。这篇文章会从通信层、数据层、UI层到架构层逐层深入,全是工业现场验证过的干货,新手也能跟着落地。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 661

4.1 AI Agent对比分析:Coze、Dify、LangGraph,如何选择Agent框架

本文对比分析了三大主流AI Agent框架:Coze(字节跳动平台,可视化开发,适合快速企业应用)、Dify(开源企业级方案,支持定制部署)和LangGraph(代码开发灵活,适合复杂需求)。选择指南建议:需要快速开发选Coze,需开源定制选Dify,复杂灵活需求选LangGraph。核心要点包括理解各框架特点、根据需求评估选择,并提供了实践建议。下节将介绍Coze平台的实战应用。

yonggeit的博客 3145

BitTorrent v2 不再是黑盒:Superseedr Merkle 树验证与混合 Swarm 完整详解

**Superseedr** 是一款运行在终端里的现代 **BitTorrent 客户端**(BitTorrent Client in your Terminal),用 Rust 编写,完整实现了 **BitTorrent v2** 协议(BEP 52),内置 **Merkle 树验证**引擎与 **Hybrid 混合 Swarm** 支持。对新手来说,"v2"、"Merkle 证明"、"hybr

gitblog_01054的博客 390

基于YOLOv8的人群聚集检测系统:含UI界面设计与数据集应用

人群聚集检测是智慧城市、公共安全和疫情防控等领域的重要任务。本文结合YOLOv8最新目标检测技术,设计并实现了一个高效的人群聚集检测系统,支持可视化UI界面操作,方便用户实时检测和分析视频中的人群密度。本文详细介绍了系统设计思路、使用的数据集、YOLOv8模型训练和推理过程,以及UI界面的开发与整合。最后通过实验验证了该系统的实用性和性能表现。更灵活的模型架构强化的特征融合网络(PAN++)自动混合精度训练支持支持多任务学习(目标检测+分类+分割)预训练模型丰富,适应多种应用场景。

YOLO 433

Functional-Light JS 实战解析:用第 11 章代码组装一个响应式股票行情组件

本篇指南以《Functional-Light JavaScript》第 11 章(manuscript/ch11.md)为骨架,深入剖析该书最终实战章节:如何综合运用全书十余章的功能式(FP)概念,构建一个由 RxJS 驱动的响应式股票行情(Stock Ticker)组件。文章将逐段讲解 `ch11-code/` 目录下的完整可运行源码,说明事件流如何从模拟服务器产生、经纯函数格式化、再被 DOM

gitblog_09289的博客 510

基于深度学习的生活垃圾检测与分类系统:YOLOv5、YOLOv6、YOLOv7与YOLOv8实现

本项目的目标是开发一个基于YOLO系列模型的生活垃圾检测与分类系统。数据集准备与标注:收集并标注生活垃圾图像数据集。模型训练:使用YOLOv5、YOLOv6、YOLOv7、YOLOv8等深度学习模型训练垃圾分类系统。UI界面设计:设计一个简洁的用户界面,支持图像或视频的上传与垃圾分类结果展示。实时垃圾检测与分类:通过摄像头进行实时垃圾检测和分类。结果展示与保存:展示检测结果,支持用户保存分类后的图像或视频。

YOLO 705

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

kotlin Anko的实际用法

学习kotlin,应该都多多少少的接触anko的用法 什么是anko?其实就是颠覆了我们平常写布局的方式,如果你学习过flutter,那你应该了解flutter的布局方式,跟android最大的不同就是没有xml布局,那么anko同理,就是用代码更快、更方便的实现布局效果 优点 我们平常的android写法中,都是通过去解析xml来实现布局,但是使用了anko,就是可以通过代码实现布局的方式...

lixiaolu1994的博客 1310

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

3步实现i茅台自动化预约:告别手动抢购的Java神器

还在为每天早起抢茅台而烦恼吗?手动预约不仅耗时耗力,成功率还低得可怜。现在,一款基于Java开发的i茅台自动预约系统——Campus-Imaotai,通过智能化的多账号管理和自动化预约流程,让你彻底告别手动抢购的繁琐。这款i茅台自动化工具采用Spring Boot架构,结合Redis缓存和MySQL数据库,为你提供高效的茅台预约解决方案,让抢购茅台变得轻松简单。 ## 🤔 为什么需要i茅台自动

gitblog_00016的博客 568

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android anko,Anko for Android

Anko 是一个使开发Android应用更简单更快捷的库,Anko使你的代码简洁易懂, 使开发者不用再在意Android SDK对Java版本的限制(目前还不支持Java8 =。= ).Anko版本的 hello world :verticalLayout {val name = editText()button("Say Hello") {onClick { toast("Hello, ${n...

weixin_29466339的博客 484

使用Anko简化Android应用开发

由Kotlin背后的组织JetBrains设计的Anko是一个开源库,可以从根本上改变您创建Android应用程序的方式。 它利用Kotlin的语法提供了大量的辅助函数,可以帮助您减少代码的冗长性,同时还可以提高其性能。 Anko可以兼作DSL,是领域特定语言的缩写,用于创建Android布局。 换句话说,它可以作为布局XML文件的一种类型安全,动态且可重用的替代方法,您可能已经知道,布局...

代码教主 1008

android anko 插件,anko - Android App快速开发框架

Anko is a Kotlin library which makes Android application development faster and easier. It makes your code clean and easy to read, and lets you forget about rough edges of the Android SDK for Jav...

weixin_33350741的博客 616
上一篇: 【Android面试】一个offer暖你一整天
下一篇: Android repo技巧:repo sync同步Android源码时减少同步时间和代码空间
网络安全-XG
博客等级 码龄5年 1万+粉丝 2752原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值