Android开发技术周报 Issue#61
教程
-
Android FrameWork 基于libGDX实现高性能动画特效(粒子特效/烟花效果篇)
工作原因最早想做一个烟花绽放的特效,最初方案是播放Gif或者自己绘制帧动画,但是这种方案的弊端在于动画效果死板,播放元素无法更换,而且资源对于空间的占用恐怕也是日后的一大隐患。之后便考虑到粒子效果代码来实现,粒子效果比较容易找到的是一些java层实现的案例或框架,但对于计算密度如此之大的粒子效果来说,效果惨不忍睹,差一些的机器(CPU性能)上面那特效还不如没有。
-
Android M DeepLinks AppLinks 详解
在Android M中Google做了很多优化性能、提升用户体验的事情,比如说:App权限、Google Now on Tap、Doze省电系统、AppLinks、DeepLinks等。最近工作接触到了AppLinks、DeepLinks这两个提升用户体验的优化,于是将自己对这两个优化的分析理解记录了下来。
-
性能优化涉及面很广。一般而言,性能优化指降低响应时间和提高系统吞吐量两个方面,但在流量高峰时候,性能问题往往会表现为服务可用性下降,所以性能优化也可以包括提高服务可用性。在某些情况下,降低响应时间、提高系统吞吐量和提高服务可用性三者相互矛盾,不可兼得。例如:增加缓存可以降低平均响应时间,但是处理线程数量会因为缓存过大而有所限制,从而降低系统吞吐量;为了提高服务可用性,对异常请求重复调用是一个常用的做法,但是这会提高响应时间并降低系统吞吐量。
-
InstaMaterial:正确处理RecyclerView动画
我们生活在一个app不仅要能用还要流畅和好看的年代。不同与几年前,我们对ListView adapter唯一要做的事情就是调用notifyDataSetChanged(),屏幕一闪,显示新的数据,完事。今天,在RenderThread的时代,MaterialDesign动画以及过渡效果的app应该完全展示出所发生的事情。用户应该看到什么时候它的集合发生了改变或者什么时候新的元素出现(或者被移除)。
-
Android开发生态圈的节奏非常之快。每周都会有新的工具诞生,类库的更新,博客的发表以及技术探讨。如果你外出度假一个月,当你回来的时候可能已经发布了新版本的Support Library或者Play Services。我与Ribot Team一起做Android应用已经超过三年了。这段时间,我们所构建的Android应用架构和技术也在不断地演变。本文将向您阐述我们的经验,错误以及架构变化背后的原因。
-
Android内存优化是我们性能优化工作中比较重要的一环,这里其实主要包括两方面的工作: 优化RAM,即降低运行时内存。这里的目的是防止程序发生OOM异常,以及降低程序由于内存过大被LMK机制杀死的概率。另一方面,不合理的内存使用会使GC大大增多,从而导致程序变卡。优化ROM,即降低程序占ROM的体积。这里主要是为了降低程序占用的空间,防止由于ROM空间不足导致程序无法安装。
-
Promise模式是一种异步编程模式 。它使得我们可以先开始一个任务的执行,并得到一个用于获取该任务执行结果的凭据对象,而不必等待该任务执行完毕就可以继续执行其他操作。等到我们需要该任务的执行结果时,再调用凭据对象的相关方法来获取。这样就避免了不必要的等待,增加了系统的并发性。
-
Android开发者选项,看起来很简单的事情,其实很多同学对它了解得不够,Google用心良苦得为我们设计了这么多小开关都是有它的作用的,今天也花了点时间,过了一遍全部的30多个开关,从中整理出15个对日常Android开发比较有帮助的选项。
-
EventBus 是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent, Handler, BroadCast 在 Fragment,Activity,Service,线程之间传递消息.优点是开销小,使用方便,可以很大程度上降低它们之间的耦合,使得我们的代码更加简洁,耦合性更低,提升我们的代码质量。
-
EventBus 是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent, Handler, BroadCast 在 Fragment,Activity,Service,线程之间传递消息.优点是开销小,使用方便,可以很大程度上降低它们之间的耦合,使得我们的代码更加简洁,耦合性更低,提升我们的代码质量。
-
EventBus 是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent, Handler, BroadCast 在 Fragment,Activity,Service,线程之间传递消息.优点是开销小,使用方便,可以很大程度上降低它们之间的耦合,使得我们的代码更加简洁,耦合性更低,提升我们的代码质量。 类似的库还有 Otto ,今天就带大家一起研读 EventBus 的源码.
-
H5,即 HTML5,是新一代的 HTML 标准,加入很多新的特性。离线存储(也可称为缓存机制)是其中一个非常重要的特性。H5 引入的离线存储,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。H5 应用程序缓存为应用带来三个优势:离线浏览 用户可在应用离线时使用它们,速度 已缓存资源加载得更快,减少服务器负载 浏览器将只从服务器下载更新过或更改过的资源。
-
什么是Overdraw?Overdraw就是过度绘制,是指在一帧的时间内(16.67ms)像素被绘制了多次,理论上一个像素每次只绘制一次是最优的,但是由于重叠的布局导致一些像素会被多次绘制,而每次绘制都会对应到CPU的一组绘图命令和GPU的一些操作,当这个操作耗时超过16.67ms时,就会出现掉帧现象,也就是我们所说的卡顿,所以对重叠不可见元素的重复绘制会产生额外的开销,需要尽量减少Overdraw的发生。
-
最近付费购买了Travis CI,Travis CI的收费模式很有意思,不是按项目或者用户,而是按工作进程收费,比如初级版本是$129/月,总共提供2个工作进程。在项目不多的情况下,除了用于跑单元测试外,不免想利用的更充分一些,因此抽空搭建了一套基于Travis CI的Android自动发布工作流。
-
我相信每一个安卓开发者都会同意 2015年安卓开发者大会上宣布的最大事情就是 Android Studio 2.0和安卓模拟器2.0,其中安卓模拟器2.0宣称运行和部署应用的速度比第一个版本快得超乎寻常。几个小时前,安卓开发者团队刚刚把这个最新的模拟器公之于众。让我们向你展示一下这个安卓模拟器上至今为止最大的更新,你一定不希望错过。
开源库&项目
-
中文的Fresco源码解读。
-
百万哥说是史上最强的下拉刷新类库分析,没有之一。
-
一个可以在转场时显示 View 粉碎动画效果的控件。
-
显示文本时带有动画效果的 TextView。
-
帮你轻松实现波浪式加载,提供高度定制(各种姿势),总有一种玩法适合你。
-
一个富文本编辑器控件。
-
一个可以实现摩天轮转动效果的 LayoutManager。
-
一个追踪事件和崩溃的分析工具聚合器。
-
一个简单的 Android 标签控件。
-
一个用来下金币,下红包的View。
-
选中框切换动画,适用于电视。
-
自定义时间线控件。
-
Auro
一个音乐播放器。
工具
-
适用于 Git 仓库的分布式代码审查系统。
-
一个可以将其他依赖合并或者嵌入生成的 aar 文件里的 Gradle 脚本。
设计
-
为什么Material Design没在国产App中流行起来?
两年前,Larry Page 就任谷歌 CEO 后下的第一个命令就是将谷歌所有的产品重新设计一遍。于是谷歌搜索首席设计师 Jon Wiley 花了两个月时间将谷歌系列产品改头换面。从那时起,谷歌开始重视设计,Material Design 的概念自此呼之欲出。
-
深度解析:为什么Sketch和Photoshop输出的图片色彩有差异
之前有用户提过类似的问题,他发现在photoshop中图片的色彩和sketch中图片的色彩不一致。下面看看静电翻译的一篇bohemiancoding团队发表的博文,详细阐述了这种现象产生的原因和解决办法。不要排斥这篇深度技术文章, 我们需要知道原理,才能工作的更好。
技术之外
-
我从高中就开始接触计算机并开始编程,我非常喜欢编程,我一直以为我会写一辈子代码。我从毕业就一直做技术,开始一年是做 Java 语言的服务器开发,开发过网易邮箱和微博的后台,后来转而做 iOS 开发。因为喜欢,我几乎把我所有的非工作时间也投入到技术中去。当然,并非是把工作带回家,而是专研技术或者从事技术写作。