Android Weekly Issue #319
July 22nd, 2018
Android Weekly Issue #319
本期内容包括MotionLayout如何做动画的介绍,Kotlin when完备性的实现,以及如何Move一些Gradle的东西到Kotlin,还包括一个比较好的Kotlin Test库,以及如何用LiveData整合不同数据源,还有一个轻量级的Kotlin Eventbus的推荐.
Lib部分有Jake大神的Android与Chrome Extension的android sdk查看器,还有一个android黄瓜测试生成工具等…
NOTES
Creating Animations With MotionLayout for Android
通过定义MotionLayout布局xml,指定定义好的MotionScene就可以完成动画.
MotionScene内可以定义ConstraintSet指定位置,然后定义Transition指定起始Constraint,也可以指定KeyFrameSet包含多个KeyPostion,或者KeyCircle.
还可以绑定事件,OnClick,OnSwipe来启动动画.
When is “when” exhaustive?
为了防止大家写when的时候忘记写else导致问题,作者想出来了一些好办法.
如when {}.let{}或者扩展方法返回自己.
1 | val <T> T.exhaustive: T |
Android Studio - Taming the interface
AS的一些快捷键,有一些很多人没注意到的,如小窗口的大小调整,等等.配有动图.
Becoming Google Certified Associate Android Developer
Google推出了149美元考助理安卓工程师的认证,24小时完成一个project并提交,如果通过在线10分钟回答5个问题,就可以轻松通过…
如果不通过可以免费补考,如果还不过那就得交钱了…
只考安卓四大组件,不考语言知识,因为安卓更重要的是框架组件..
Maintainable Architecture – Daily Forecast
系列最后一节,主要讲了如何注入你的ViewModel,还给出了demo地址.
Cloud Continuous Integration on Android with Kotlin Project
文章介绍了如何大家CI,本篇作者使用的是Travis,并且添加了Jacoco生成覆盖率报告,并且push到Codecov.io上.
最后当然不要忘记加高大上的badge到你的README…
Moving Your Gradle Build Scripts to Kotlin
本篇文章实际上是个标题党,与之前介绍的用Kotlin DSL写gradle的文章不太一样.
这篇文章只是自己定义了一个plugin,并且可以在自己的buildSrc里面用kotlin声明一些变量, 然后在gradle里面去调用,比如说dependencies的版本.
之前的那篇文章使用了gradle 4.5.1以上的新特性,然后将gradle后面加上后缀kts即可,当然在buildSrc里面声明变量的同时还需要引用kotlin-dsl
插件.这样你的kts文件里就可以写成kotlin dsl风格了.这是题外话…可以查看#283的文章.
Data Driven Testing with KotlinTest
作者推荐一个叫KotlinTest的库可以提供很多有趣的assert方法.
来支持他自己的Data driven test的理念,来做数据的对比.
如forAll可以添加很多组数据,然后通过shouldBe进行判断.
1 | forAll( |
Reactive patterns using Transformations and MediatorLiveData
作者介绍了如何用MediatorLiveData+Transformations来实现RxJava类似于zip的功能来进行combine不同的DataSource.
在这之前作者介绍了使用LiveData过程中的一些注意事项以及解决办法.
如是否去Share一个LiveData需要值得考虑它会导致的问题,使用MediatorLiveData添加外部source会导致泄露,使用switchMap去解决问题的时候也一定注意需要在构造的时候用,因为map/switchMap都会创建新的LiveData,等等.
最后一句话写到,如果使用了AutoDisposal的Rxjava第三方控件,就没必须这么用LiveData了.
Delegate your Lifecycle to Kotlin
为了防止一些Activity或者Fragment的变量有跟生命周期同等的初始化与销毁,使用Kotlin的by
来交给代理来改变它的Value,代理通过很多方式都可以监听生命周期,如LifecycleObserver,或者RxLifeCycle,来实现setValue.
KDispatcher simple and light-weight event bus for Kotlin
一个Kotlin的轻量EventBus,而且是与平台无关的,backend也可以用.
LIBRARIES & CODE
wearfaceutils
Android Wear 表盘
pickle
Android 黄瓜测试代码生成器.
kotlintest
一个kotlin test framework, 可以写出 shouldBe should之类的assert.
SdkSearch
Jake Wharton大哥的android app跟chrome扩展,查询android sdk的.
ketro
Retrofit + LiveData的组合.
KDispatcher
Kotlin轻量级Event Bus