新闻
教程
Android动态布局入门及NinePatchChunk解密
相信每一个Android开发者,在接触“Hello World”的时候,就形成了一个观念:Android UI布局是通过layout目录下的XML文件定义的。使用XML定义布局的方式,有着结构清晰、可预览等优势,因而极为通用。可是,偏偏在某些场景下,布局是需要根据运行时的状态变化的,无法使用XML预先定义。这时候,我们只能通过JavaCode控制,在程序运行时,动态的实现对应的布局。
解析ViewTreeObserver源码,体会观察者模式、Android消息传递(上)
ViewTreeObserver 是被用来注册监听视图树的观察者,在视图树发生全局改变时将收到通知。本系列文章将从 ViewTreeObserver 源码出发,带你剖析 ViewTreeObserver 的设计及使用,并间接体会观察者模式、Android消息传递机制在其中的使用。
Android 动态链接库加载原理及 HotFix 方案介绍
随着项目中动态链接库越来越多,我们也遇到了很多奇怪的问题,比如只在某一种 OS 上会出现的 java.lang.UnsatisfiedLinkError,但是明明我们动态库名称没错,ABI 也没错,方法也能对应的上,而且还只出现在某一些机型上,搞的我们百思不得其解。为了找到出现千奇百怪问题的原因,和能够提供一个方式来解决一些比较奇怪的动态库加载的问题,我发现了解一下 so 的加载流程是非常有必要的了,便于我们发现问题和解决问题,这就是本文的由来。
-
移动 app 的 UI 自动化测试长久以来一直是一个难点,难点在于 UI 的”变”, 变化导致自动化用例的大量维护。从分层测试的角度,自动化测试应该逐层进行。最大量实现自动化测试的应该是单元测试,最容易实现也最容易在早期发现问题;其次是接口级测试,以验证逻辑为目的进行自动化,由于接口的相对稳定,自动化测试成本相对也可以接受;自动化成本最大的便是 UI 级自动化测试,然而 UI 界面是直接反馈给用户的效果展示,适度的尤其是 BVT 级的自动化测试也是非常必要的。
-
Style和Theme主要用来实现白天模式和夜间模式。一个Style是一系列属性的集合,用来指定View或者Window的外观和格式。它可以指定的属性包括高度, Padding, 文字颜色,文字尺寸,背景颜色等等
-
簡而言之,這是一系列的新手Android技能樹介紹文章。我在網路上看到的文章大多是離散的題目,譬如深入研究頗析某個議題或是某種新技術的展示,這個文章可能可以幫助類似我一樣,接觸學習Android時,沒有前人指導的人,這類人可能學到某個程度,有點卡關但不知道卡在哪,不太知道系統性的往哪發展研究的人看的。這系列的文章,估計4-5篇。
-
Freeline是蚂蚁聚宝团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部开源,稳定性方面:完善的基线对齐,进程级别异常隔离机制。性能方面:内部采用了类似Facebook的开源工具buck的多工程多任务并发思想:端口扫描,代码扫描,并发编译,并发dx,并发merge dex等策略,在多核机器上有明显加速效果
React Native 0.31 Bundle 预加载优化
使用 React Native 开发混合应用的过程中,我们在打完 bundle 进 release 包后,会发现第一次进入页面(React 的 Activity)会有一个短暂的白屏过程(在真机上近 1秒,在模拟器上比较快,在 200毫秒 左右),而且在完全退出后再进入,仍然会有这个白屏。仔细查看加载过程(其实猜猜都能知道)后可以发现,这个过程就是在加载我们的 js bundle,通常即便是一个小的 RN 应用(混合应用中的子业务),也会动辄到 1MB 的大小,除非是完整的 RN 应用,可以把这个当做是启动速度,否则这样的加载速度都是对用户体验的很大伤害。
-
之前写过一篇关于 Android 录屏的文章:Android Lollipop (5.0) 屏幕录制实现,现在又有个需求就是将录下来的视频选取一小段转为 GIF 文件,不仅时间段可以手动选取,而且还需要支持截取视频的局部区域转为 GIF,网上调研了一下技术方案,觉得还是有必要把实现过程拿出来分享下,有需要的可以直接拿过去用。
-
internationalization (国际化)简称 i18n,因为在i和n之间还有18个字符,localization(本地化),简称L10n。一般用语言地区的形式表示一种语言,如zhCN表示简体中文。Android 对i18n和L10n提供了非常好的支持。Android没有专门的API来提供国际化,而是通过对不同resource的命名来达到国际化的目的,同时这种命名方法还可用于对硬件的区分,如不同的屏幕分辨率用不同的图片。
开源库&项目
-
一个轻量级的 Android 应用开发框架
-
本类库可以对ImageView,View Background,Drawable和Bitmap添加风格与设置亮度、对比度
-
Epoxy is an Android library for building complex screens in a RecyclerView
-
一个号称最快速的依赖注入框架
-
仿饿了么点击购物效果
-
一个重新对 SharedPreference 进行包装,并且使用 256位AES加密内容的库,加密的 Key 存储在 device's KeyStore。
-
Android拼图支持库,想法来自Layout for Instagram
-
学习RxJava操作符的APP
-
A simple library that creates BottomSheets according to the Material Design specs
-
一个 Material Design 风格的电影 App
-
Infinite cycle ViewPager with two-way orientation and interactive effect
-
仿多邻国的 ViewPage 卡片效果
工具
-
一个NodeJS环境下,基于TinyPNG服务的,批量压缩任意数量图片的工具
-
阿里开源的一个基于动态替换的编译方案
-
一款用 python 写的开源 HLS 码流分析工具
技术之外
版权声明
欢迎自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 4.0
捐赠
如果你觉得Android开发技术周报对您有所帮助,请考虑对本周报捐赠支持。支持我把Android开发技术周报做的更好,帮助更多的人,金额随意,您的捐赠将用于支付服务器和邮件推送服务的费用。去捐赠