Android Weekly Notes Issue #261

作者: 圣骑士wind | 来源:发表于2017-06-14 10:33 被阅读52次

    Android Weekly Issue #261

    June 11th, 2017
    Android Weekly Issue #261
    本期内容包括: Adaptive Icons; Kotlin实现的几种常用的设计模式; Android Instant App; Kotlin中的Ranges; 一个叫Graywater的库, 可以改善RecyclerView的性能; ItemDecoration的使用; 函数式编程; 提高Gradle的build的速度; 用RxJava 2包装Camera2 API.

    代码部分有一个Kotlin实现的RSS阅读器值得一看.

    ARTICLES & TUTORIALS

    Adaptive Icons and more

    关于Android O的Adaptive Icons, 这里是官方的文档: Adaptive Icons.

    这篇文章介绍了如何用Android Studio制作这种icon.

    Gang of Four Patterns in Kotlin

    用Kotlin实现的各种设计模式:

    • Decorator -> 用extension functions.
    • Builder -> 用apply.
    • Prototype -> 用datacopy.
    • Singleton -> 用object关键字.
    • Template Method -> 用extension functions.
    • Strategy -> 方法参数, typealias, 高阶函数.
    • Iterator -> interator().

    这是作者实现的repo: gof-in-kotlin.

    From Westinghouse to Android Instant apps

    作者讲了他和Instant App的故事.

    Musings on Kotlin Ranges

    作者讲了他发现的一些关于Kotlin的Ranges的有趣的事情:

    • IntRange如果初始值比结束值大, 会被认为是空的. 想要逆序的话就得用downTo或者reversed().
    • in range会被编译器优化为两个<=条件判断, 所以我们可以利用这点来简化我们本来的判断.
    • 几种range的for循环效率比较.

    Introducing Graywater for Android

    介绍一个叫Graywater的库, 处理RecyclerView中的复杂项目, 据说可以改善滚动性能, 减少内存使用, 而且提供了一种组件化的构建方式.

    Making the Domain Android App Instant

    Domain的Instant App实现, 概要介绍, 不涉及太多细节.
    文章后面说了一些Instant App的限制, 比如: 4MB大小; 只有有限的权限, intent和库.

    ItemDecoration - Avoid adding dividers to the view layout

    ItemDecoration的介绍.

    首先, 不要用在布局里加View的方法来加divider, 这对性能不好. 增加了多余的View, 还可能需要增加层级.

    其次, 加View的方式也有一些副作用, 比如左右滑动item动画的时候, divider会和View一起移动, 这显然不好看.

    最后, 加View的方式也不如ItemDecoration那样具有灵活性. 比如你想加不同长度的divider给不同位置的item.

    所以推荐使用ItemDecoration. 自动25.0.0开始, support库还添加了DividerItemDecoration类.

    注意:

    • 一个RecyclerView可以添加多个ItemDecoration.
    • onDraw()是在绘制item之前, onDrawOver()是在绘制item之后.

    Functional Programming for Android Developers — Part 3

    函数式编程教学第三部分, 主要讲高阶函数和Closures.

    前两部分见:

    How to speed up your slow Gradle builds

    Google I/O 2017关于如何提高gradle build速度的10个建议:

    • 1.使用最新的Gradle plugin.
    • 2.避免使用老的multidex, 在API 21以前会有性能影响.
    • 3.在开发时disable multi-APK.
    • 4.最小化包含的资源.
    • 5.在开发时关闭PNG优化.
    • 6.使用Instant Run.
    • 7.避免非故意的改动. 如把vesionCode和当前时间相关, 这样每次build就等于manifest会被改变. 还有Crashlytics会为每次build生成id. 可以在develop的时候关闭这些.
    • 8.不要使用动态的依赖版本.
    • 9.注意memory的设置. 在gradle.properties中, 如org.gradle.jvmargs=-Xmx2048m.
    • 10.使能缓存. 在gradle.properties中, org.gradle.caching=true.

    Reactive selfies with Camera2 API on Android - Part 1

    作者的一个教程, 用RxJava2包装Camera2的API.
    文章讲得很仔细, 项目代码见: Camera2API_rxJava2.

    Re-animation

    作者更新了他关于向量动画的文章, 因为support库25.4中加入了对老版本的兼容.

    LIBRARIES & CODE

    Karchitec

    Kotlin的RSS阅读器, 使用了Google的android architecture components库.

    SwiftKotlin

    一个工具, 可以把Swift代码转换为Kotlin代码.

    Graywater

    一个改善RecyclerView滚动性能的库.

    Fontify

    提供不同语言自定义字体和style的TextView, EditText和Button.

    最后, 欢迎订阅公众号: 圣骑士Wind:


    圣骑士Wind微信公众号.png

    相关文章

      网友评论

        本文标题:Android Weekly Notes Issue #261

        本文链接:https://www.haomeiwen.com/subject/gydsqxtx.html