Android Weekly Notes Issue #261
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 -> 用
data类copy. - 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.
前两部分见:
- Functional Programming for Android Developers — Part 1
- Functional Programming for Android Developers — Part 2
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.
Android Weekly Notes Issue #261的更多相关文章
- Android Weekly Notes Issue #230
Android Weekly Notes Issue #230 November 6th, 2016 Android Weekly Issue #230. Android Weekly笔记, 本期内容 ...
- Android Weekly Notes Issue #227
Android Weekly Issue #227 October 16th, 2016 Android Weekly Issue #227. 本期内容包括: Google的Mobile Vision ...
- Android Weekly Notes Issue #237
Android Weekly Issue #237 December 25th, 2016 Android Weekly Issue #237 这是本年的最后一篇issue, 感谢大家. 本期内容包括 ...
- Android Weekly Notes Issue #229
Android Weekly Issue #229 October 30th, 2016 Android Weekly Issue #229 Android Weekly笔记, 本期内容包括: 性能库 ...
- Android Weekly Notes Issue #221
Android Weekly Issue #221 September 4th, 2016 Android Weekly Issue #221 ARTICLES & TUTORIALS And ...
- Android Weekly Notes Issue #219
Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...
- Android Weekly Notes Issue #236
Android Weekly Issue #236 December 18th, 2016 Android Weekly Issue #236 本期内容包括: Google的物联网平台Android ...
- Android Weekly Notes Issue #235
Android Weekly Issue #235 December 11th, 2016 Android Weekly Issue #235 本期内容包括: 开发一个自定义View并发布为开源库的完 ...
- Android Weekly Notes Issue #234
Android Weekly Issue #234 December 4th, 2016 Android Weekly Issue #234 本期内容包括: ConstraintLayout的使用; ...
随机推荐
- nx sdk
最近在做ns 任天堂略坑.. 他想做成一键安装,可总是有些问题,这样再去找就很麻烦了.都是包在里面的,要看很多文档 第一个问题是 NintendoSDK Configuration Manager 这 ...
- 2016.10.10 Failed to start component [StandardService[Catalina]]
Failed to start component [StandardService[Catalina]] 错误原因:有数据残留,点击clean(见下图) 解决办法: 右键点击servers下 ...
- POJ 3254 Corn Fields 状态压缩
这题对我真的非常难.实在做不出来,就去百度了,搜到了一种状压DP的方法.这是第一种 详细见凝视 #include <cstdio> #include <cstring> #in ...
- UNP学习笔记(第一章 简介)
环境搭建 1.下载解压unpv13e.tar.gz 2.进入目录执行 ./configurecd lib //进入lib目录make //执行make命令 3.将生成的libunp.a静态库复制到/u ...
- ZOJ - 3890 Wumpus(BFS基础题)
Wumpus Time Limit: 2 Seconds Memory Limit: 65536 KB One day Leon finds a very classic game call ...
- 【Excle数据透视】如何用含有单元格的数据来创建数据透视
取消合并单元格,填充相同内容项,然后创建数据透视表. 如下图:需要使用数据创建数据透视表 步骤一 开始→格式刷,然后对单元格区域G2:G15使用格式刷功能,保留合并单元格格式 步骤二 选中A2:A18 ...
- iOS开发之解析XML格式数据
XML格式的数据是一种数据的传输格式.因为它方便编写.结构清晰,所以深受程序猿的喜爱,非常多人都喜欢使用XML格式数据传输或者作为程序的配置信息. 如今我将来实如今iOS中解析XML格式数据,语言使用 ...
- jenkins构建一个go项目
Jenkins安装 最低配置: 不少于256M内存,不低于1G磁盘,jdk版本>=8 安装jdk1.8 yum install -y java-1.8.0-openjdk wget -O / ...
- mybatis性能优化之降低数据库连接
做性能优化的最重要的功能就是降低数据库的交互.非常多程序猿一般在开发的时候仅仅考虑简单的实现功能,无论业务简单复杂,仅仅要实现即可. mybatis有个重要的功能就是考虑在联合查询时技巧: <? ...
- dm8148 videoM3 link源代码解析
样例:从A8送一帧jpeg图片到videoM3解码,然后在将解码的数据传递到A8, 这个流程涉及的link源代码例如以下: dm8148 link之间数据传递 1)在A8上调用IpcBitsOutLi ...