android anko 插件,GitHub - czh235285/Anko-Core: 基于Kotlin+Anko+协程+Retrofit2的demo,完全采用anko DSL布局,也可以作为An...

Anko-Core

用于自己快速开发的框架,加入了许多项目通用的东西,免去重复造轮子,持续完善中...

主要集成谷歌推荐jetpack组件库。(抛弃了xml,采用anko dsl布局)

关于Anko

优点

页面构建速度快,已经使用anko做过几个完整项目,性能肉眼可见的比xml快几倍 使用Anko创建快400%的布局

比xml更简单的屏幕适配

代码布局更好的利用kotlin的扩展函数

可以在构建布局时就加入逻辑判断

缺点

不能预览,Android Studio3.3以前可以下插件预览,不过开发工具我基本都更新到最新的稳定版了

学习成本较高,熟练后开发速度比xml更快,不熟的话很慢

Anko库已经停止维护。(ps:停止维护不是因为不好,而是因为打算推compose)

我选择Anko的理由

性能,当测试、产品说你做的app比IOS的还流畅,你心里不爽吗?

优点真的太多了,就不说了, 说说针对它的缺点处理。首先,不能预览这个问题,由于超简单的适配方案,完全对着设计图一把梭,也不太需要预览,后面我会介绍适配方案。学习成本问题,作为程序员我觉得只有愿意和不愿意学的区别。停止维护,这个可能很多人比较介意,其实,Anko主要也就是一个扩展库,让动态布局变成dsl的写法,对于各种控件的扩展,Anko库里还是support包的,可以直接不引入,只引入基础库支持dsl布局,然后自己去扩展控件,我这边就这样做的了~

介绍

demo只有几个简单的页面,仅供参考学习。

网络请求 retrofit2.6+ViewModel+协程

大量扩展函数,提高开发速度

下拉刷新:谷歌原生SwipeRefreshLayout

adapter 自己封装的,支持空布局,header,footer,加载更多,多type。demo里有针对通用列表界面进行二次封装。

主要用于自己开发所用,第三方依赖全是自己常用的框架整合一起了,耦合较高,不建议直接使用,仅供参考,如果框架和我用的差不多,也可以直接用~

使用

use Gradle:

repositories {

maven { url "https://jitpack.io" }

google()

jcenter()

}

dependencies {

implementation 'c.core:Anko-Core:1.0.0'

}

扩展函数

最基本的shape,命名参数可以不写的,这里写出来方便理解

view.commonShape(

solidColor = "#f2f2f2".color,

radius = 2.pxf,

strokeColor = "#e5e5e5".color,

strokeWidth = 2

)

更多定制化的shape,边框/4个圆角大小不一样/渐变色

view.buildShape {

shapeStroke {

width = 2

color = "#ff0000".color

}

shapeRadius {

topLeft = 10.pxf

topRight = 20.pxf

bottomRight = 30.pxf

bottomLeft = 40.pxf

}

shapeGradient {

orientation = GradientDrawable.Orientation.LEFT_RIGHT

startColor = "#ffffff".color

endColor = "#333333".color

}

}

selector扩展,shapeDrawable中也可以直接使用上面buildShape中的方法,还有其他状态的就不全写了。

view.stateListDrawable {

defaultState {

shapeDrawable {

shapeSolidColor = "#ffffff".color

}

}

pressedState {

shapeDrawable {

shapeSolidColor = "#ff0000".color

}

}

unPressedState {

shapeDrawable {

shapeSolidColor = "#00ff00".color

}

}

}

还有很多实用的扩展函数,直接看源码吧~

Anko超简单的适配方案

适配原理

网上各种开源适配方案,目的基本都是让不同手机展示一样的内容,也就是进行百分比适配。

UI设计图上控件的宽度 / UI设计图宽度=设备上控件的真实宽度 / 设备的宽度

也就是

设备上控件的真实宽度 = UI设计图上控件的宽度 * (设备的宽度/ UI设计图宽度)

由于anko是代码布局,设备的宽度可以直接获取的,一个扩展函数就可以直接计算了,控件宽高直接按设计图上写即可。简单粗暴吧

举例

class MainActivityUI : AnkoComponent {

lateinit var magicIndicator: MagicIndicator

lateinit var viewPager: ViewPager

override fun createView(ui: AnkoContext) = with(ui) {

verticalLayout {

viewPager = noScrollViewPager {

id = Ids.viewPager

}.lparams(-1, 0, 1f)

line {}.lparams(-1, 1)

magicIndicator = magicIndicator {

}.lparams(-1, 133.px)

}

}

}

这是我demo中首页的布局代码。这个133.px后面的.px就是自己扩展的方法。

我这里设计图宽高默认是750*1334,配置方法

android {

defaultConfig {

manifestPlaceholders = [

designWidth: 750,

designHeight: 1334,

]

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值