- 为什么 Flutter 能最好地改变移动开发 (ALVINYEH 翻译)
- 为什么你应该开始使用 Kotlin (ALVINYEH 翻译)
- Flutter 到底有多快?我开发了秒表应用来弄清楚。 (ALVINYEH 翻译)
- 建立一个像科幻小说一样的虚拟世界:设计一个全球性的虚拟世界 (LeeSniper 翻译)
- 利用 Android 构建 TV 的未来 (JayZhaoBoy 翻译)
- 使用 leanback 的 DiffCallback:和 DiffUtil 回调之间的区别 (LeeSniper 翻译)
- 为 JavaScript 程序员准备的 Flutter 指南 (lsvih 翻译)
- 使用MVI构建响应式 APP — 第七部分 — TIMING (SINGLELIVEEVENT 问题) (pcdack 翻译)
- Google Play 控制台指南 (JayZhaoBoy 翻译)
- 从 SQLite 逐步迁移到 Room (IllllllIIl 翻译)
- 使用 MVI 编写响应式 APP—第六部分—状态恢复 (pcdack 翻译)
- Flutter — 五个你会爱上它的原因 (rockzhai 翻译)
- 如何在中国使用 Flutter (mysterytony 翻译)
- 使用 MVI 编写响应式 APP — 第 5 部分 — 简单的调试 (pcdack 翻译)
- 使用 MODEL-VIEW-INTENT 第四部分 — 独立 UI 组件 (pcdack 翻译)
- 第三方 SDK 的信任问题 (CACppuccino 翻译)
- 使用 MVI 开发响应式 APP — 第三部分 — 状态折叠器(state reducer) (pcdack 翻译)
- 大话(Observable 向 Observer 求婚)之我与 Rx Observable [Android RxJava2](这是什么鬼)第七话 (dieyidezui 翻译)
- Subject 和 Observable + Observer 的混淆指北[ Android RxJava2 ] ( 这什么鬼系列 ) 第八话 (rockzhai 翻译)
- Android 生命周期备忘录 — 第一部分: 单一 Activities (IllllllIIl 翻译)
- 玩转 Android paths (IllllllIIl 翻译)
- 大话(Summer vs winter Observable)之我与 Rx Observable[Android RxJava2](这是什么鬼)第六话 (hanliuxin5 翻译)
- 如何打造以人为本的移动游戏 (hanliuxin5 翻译)
- 开发者也是用户 - 第二部分:改善 UI 和 API 可用性的五条指导原则 (tanglie1993 翻译)
- 开发者也是用户 - 简介 (lsvih 翻译)
- 构建更具可用性的 UI 与 API 的 5 个方针 (lsvih 翻译)
- 函数式 Java 到函数式 Kotlin 的转换 (huanglizhuo 翻译)
- 开发者须知:女性用户和手机游戏 (corresponding 翻译)
- 像奥利奥一样的双重安全措施,尽在 Android Oreo (XPGSnail 翻译)
- ProGuard 在 Android 上的使用姿势 (dieyidezui 翻译)
- 智对订阅难点:教你如何应对工作中 10 种常见订阅问题 (pot-code 翻译)
- Android MVP 架构必要知识:第三部分(Dialog,ViewPager,RecyclerView 以及 Adapters) (woitaylor 翻译)
- app 里的 A/B 测试简介 (mnikn 翻译)
- 从应用探索者到初次购买者 (ppp-man 翻译)
- 用 CoordinatorLayout 处理滚动 (Feximin 翻译)
- Android 开发者如何函数式编程 (三) (miguoer 翻译)
- 全新 Android 注入器 : Dagger 2(三) (woitaylor 翻译)
- 全新 Android 注入器 : Dagger 2(二) (woitaylor 翻译)
- 全新 Android 注入器 : Dagger 2(一) (MummyDing 翻译)
- 缩小 APK,增加下载量 (tanglie1993 翻译)
- 在 Android O 上用到 MediaStyle 的提醒功能 (ppp-man 翻译)
- ViewModel:持久化、onSaveInstanceState()、UI 状态恢复和 Loader (Feximin 翻译)
- 理解音频焦点(第3/3部分):在应用中实施音频聚焦的 3 个步骤 (oaosj 翻译)
- 理解音频焦点(第2/3部分):更多的音频焦点用例 (oaosj 翻译)
- 理解音频焦点(第1/3部分):常见的音频焦点用例 (oaosj 翻译)
- ViewModels 简单入门指北 (huanglizhuo 翻译)
- ViewModel 和 LiveData:为设计模式打 Call 还是唱反调? (boileryao 翻译)
- 管中窥豹:RxJava 与 Kotlin 协程的对比 (phxnirvana 翻译)
- RxJava 中的错误处理 (tmpbook 翻译)
- 将 Android 项目迁移到 Kotlin 语言 (wilsonandusa 翻译)
- 函数式响应编程入门指南 (stormrabbit 翻译)
- 安卓界面导航初识 (horizon13th 翻译)
- 探索 Kotlin 的隐性成本(第三部分) (phxnirvana 翻译)
- 探索 Kotlin 中的隐性成本(第二部分) (Feximin 翻译)
- 探索 Kotlin 中的隐性成本(第一部分) (Feximin 翻译)
- 将 Kotlin 应用于现有 Java 代码的策略 (Luolc 翻译)
- 第一次走进 Android 中的 Kotlin 协程 (Feximin 翻译)
- Android 中的定时任务调度 (phxnirvana 翻译)
- Kotlin:小菜一碟 (CACppuccino 翻译)
- 说服Kotlin编译器代码安全 (wilsonandusa 翻译)
- 当设计模式遇上 Kotlin (boileryao 翻译)
- Kotlin 中我讨厌什么 (Zhiw 翻译)
- 再谈如何安全地在 Android 中存储令牌 (lovexiaov)
- Workcation App – 第四部分. 场景(Scenes)和 RecyclerView 的共享元素转场动画(Shared Element Transition) (stormrabbit)
- Workcation App – 第三部分. 带有动画的标记(Animated Markers) 与 RecyclerView 的互动 (stormrabbit)
- Workcation App – 第二部分 .带有动画的标记(Animating Markers) 与 MapOverlayLayout (stormrabbit)
- Workcation App – 第一部分 . 自定义 Fragment 转场动画 (stormrabbit)
- 使用 Espresso 和 Mockito 测试 MVP (skyar2009 翻译)
- 用 Dagger 2 实现依赖注入 (tanglie1993 翻译)
- 如何创建 BubblePicker – Android 多彩菜单动画 (hackerkevin 翻译)
- 通过测试来解耦Activity (mnikn 翻译)
- 函数式接口、默认方法、纯函数、函数的副作用、高阶函数、可变的和不可变的、函数式编程和 Lambda 表达式 - 响应式编程 [Android RxJava 2](这到底是什么)第三部分 (XHShirley 翻译)
- 开发者(也就是我)与Rx Observable 类的对话 [ Android RxJava2 ] ( 这到底是什么?) 第五部分 (stormrabbit 翻译)
- 使用 Espresso 隔离测试视图 (yazhi1992 翻译)
- RxJava 中的多线程 (phxnirvana 翻译)
- Android 如何实现气泡选择动画 (skyar2009 翻译)
- 一个人的 Android 开发 (BoilerYao 翻译)
- 我是如何做到在 5 分钟之内将应用大小减少 60% 的 (jifaxu 翻译)
- 拉模式和推模式,命令式和响应式 – 响应式编程 [Android RxJava2](这到底是什么):第二部分 (XHShirley 翻译)
- 离线支持:不再『稍后重试』 (skyar2009 翻译)
- 当发布安卓开源库时我希望知道的东西 (jifaxu 翻译)
- 单元测试试图告诉我们关于 Activity 的什么事情:第二部分 (tanglie1993 翻译)
- 面向无神论安卓开发:如何和为什么要干掉上帝对象 (Danny1451 翻译)
- Android 开发者如何使用函数式编程 (二) (tanglie1993 翻译)
- 单元测试试图告诉我们关于 Activity 的什么事情:第一部分 (tanglie1993 翻译)
- Android 开发者如何使用函数式编程(一) (skyar2009 翻译)
- Constraint Layout 动画 |动态 Constraint |用 Java 实现的 UI[Part3] (siegeout 翻译)
- RxJava 中的 Subscriptions 是怎样泄露内存的 (tanglie1993翻译)
- ConstraintLayout 可视化[Design]编辑器 (这到底是什么)[第四部分] (yazhi1992 翻译)
- Android Nougat 中通过 Intents 共享文件,你准备好了吗? (skyar2009 翻译)
- 观察者模式 – 响应式编程 [Android RxJava2](这到底是什么):第一部分 (Zhiwei Yu(Zhiw) 翻译)
- 为什么 Android 测试如此困难:历史版本 (tanglie1993 翻译)
- ConstraintLayout ( 这到底是什么 ) (小贴士及小技巧) 第二部分 (jamweak 翻译)
- Android MVP 架构必要知识:第二部分 (tanglie1993 翻译)
- RecyclerView 数据预取 (tanglie1993 翻译)
- Android MVP 架构必要知识:第一部分 (jifaxu 翻译)
- 安卓应用栏的滚动效果 (XHShirley 翻译)
- ConstraintLayout (这到底是什么) (jifaxu 翻译)
- 如何搭建安卓开发持续化集成环境(Ubuntu + Jenkins + SonarQube) (skyar2009 翻译)
- Model-View-Intent 模式下的响应式应用 - 第一部分 - Model(模型) (XHShirley 翻译)
- RxAndroid 中文教程 (Jamweak 翻译)
- Android 响应式编程的未来展望:RxJava 2 版本前瞻 (Goshin 翻译)
- SOLID 原则:权威指南 (XHShirley 翻译)
- Android 数据绑定之: RecyclerView (jamweak 翻译)
- Android 写测试用例的注意事项 (Zhiwei Yu 翻译)
- 使用约束控件创建界面 (王子建 翻译)
- 网络请求框架 Retrofit 2 使用入门 (Zhiw 翻译)
- Android 中的 Effective Java(速查表) (Jamweak 翻译)
- 彻底理解引用在 Android 和 Java 中的工作原理 (jacksonke 翻译)
- 利用好 Android Studio 中的 APK Analyzer (XHShirley 翻译)
- 在 Android 应用中监测来电信息 (PhxNirvana 翻译)
- Android 界面的性能优化 — 减少过度绘制 (Nicolas(Yifei) Li 翻译)
- 构建 Android APP 一定要绕过的 30 个坑 (Nicolas(Yifei) Li 翻译)
- Android 开发者如何通过运动视觉 API 进行机器学习?Part 1 — 人脸检测 (Nicolas(Yifei) Li 翻译)
- 再见,汉堡菜单,我们有了新的 Android 交互设计方案 (Xiaonan Shen 翻译)
- Android Material 搜索框实现详细说明 (siegeout 翻译)
- 探索 Firebase 在 Android 和 iOS 的使用: 远程配置 (Jamweak 翻译)
- Android 动画的灵魂—— Interpolator (siegeout 翻译)
- 探索 Firebase 在 Android 和 iOS 的使用: Analytics (分析模块) (yifili09 翻译)
- 如何通过 ArrayMap 和 SparseArray 优化 Android App (jamweak 翻译)
- Pury — 一个新的 Android App 性能分析工具 (owenlyn 翻译)
- 关于 Android Adapter,你的实现方式可能一直都有问题 (siegeout 翻译)
- 探索Android大杀器——Handler (jamweak 翻译)
- 如何测试 Android Service 里的 Singleton (2) (newt0n 翻译)
- 如何测试 Android Service 里的 Singleton (1) (newt0n 翻译)
- APK 里有什么? (newt0n 翻译)
- Activity 的正确打开方式 (Liz 翻译)
- 如何创建高度模块化的 Android 应用 (DeadLion 翻译)
- 使用强大的 Mockito 测试框架来测试你的代码 (edvardhua 翻译)
- Android 中美腻的下划线 (jamweak 翻译)
- 来瞧瞧 Android N 中的通知长成啥样了 (DeadLion 翻译)
- 深度讲解 Android 主题层级 (aidistan 翻译)
- 八个造成 Android 应用内存泄露的原因 (zhangzhaoqi 翻译)
- 怎样在 5 分钟内使 Drawer 在状态栏下可见? (Dwight 翻译)
- 怎样用 JRebel 启动 Android (edvardhua 翻译)
- Vector For All (slight return) (huanglizhuo 翻译)
- Vectors For All (almost) (edvardhua 翻译)
- Vectors For All (最终篇) (Jaeger 翻译)
- 为什么 Android 上 Canvas 画出的图形不够平滑? (Sausure 翻译)
- 使用GCM网络管理工具优化电池使用 (程大治 翻译)
- 用工厂流水线的方式来理解 RxJava 的概念 (Sausure 翻译)
- 在 Android N 预览版中使用 Java 8 的新特性 (markzhai 翻译)
- 创建一个基于 Kotlin 的 Android 项目(下集) (Jing KE 翻译)
- 创建一个基于 Kotlin 的 Android 项目(上集) (Jing KE 翻译)
- 使用 RxJava 封装现有的库 (尹述迪 翻译)
- 在 Android 下进行实时模糊渲染 (Sausre 翻译)
- Android 开发中利用异步来优化运行速度和性能 (edvardHua 翻译)
- 深入浅出 Android 权限(二) (Hugo Xie 翻译)
- 深入浅出 Android 权限(一) (Hugo Xie 翻译)
- 世界级的 Android 测试流程(一) (markzhai 翻译)
- 世界级的 Android 测试流程(二) (markzhai 翻译)
- 2015 年度 Android 开发者必备的 5 个开源库 (kassadin 翻译)
- 如何提高安卓代码的质量和语法 (yinshudi 翻译)
- 如何更高效地使用 okhttp (Brucezz 翻译)
- 每个 Android 开发者都应该读的 Android Studio Tips (Jaeger 翻译)
- MVVM模式介绍 (Sausure 翻译)
- Android 的一个 MVP 基础项目模板 (foolishgao 翻译)
- 让 Toolbar 随着 RecyclerView 的滚动而显示/隐藏 (MiJack 翻译)
- Android Guides - Github (SeniorZhai 翻译)
- 我希望在我写第一个安卓 APP 前知道的 6 件事情 (404neko 翻译)
- Android 上的数据格式 FlatBuffers 介绍 (lihb 翻译)