- 2019 年的 Android 网络 —— Retrofit 与 Kotlin 协程 (Feximin 翻译)
- Android 模拟器:Project Marble 中的改进 (qiuyuezhong 翻译)
- Kotlin Clean 架构 (JasonWu1111 翻译)
- 区域设置更改和 AndroidViewModel 反面模式 (solerji 翻译)
- 思考实践:用 Go 实现 Flutter (suhanyujie 翻译)
- Android 数据绑定库 — 从可观察域到 LiveData 仅需两步 (gs666 翻译)
- 改善 Android Studio 的构建速度 (qiuyuezhong 翻译)
- Android中的简易协程:viewModelScope (twang1727 翻译)
- 高效地在 Flutter 中使用 BLoC 模式 (LucaslEliane 翻译)
- Flutter 布局备忘录 (EmilyQiRabbit 翻译)
- 关于 Flutter 页面路由过渡动画,你所需要知道的一切 (EmilyQiRabbit 翻译)
- Android Studio Project Marble: Apply Changes (qiuyuezhong 翻译)
- WorkManager 基础入门 (gs666 翻译)
- C++ 和 Android 本地 Activity 初探 (Feximin 翻译)
- Room 🔗 Coroutines (Feximin 翻译)
- 谷歌寻踪圣诞老人应用(Santa Tracker)迁移到 Android App Bundle 记录 (phxnirvana 翻译)
- 通过 Play Cloud 的 ART 优化配置提升应用性能 (nanjingboy 翻译)
- 用 Flutter 打造一个圆形滑块(Slider) (DevMcryYu 翻译)
- Kotlin 标准方法备忘 (Feximin 翻译)
- 依赖注入在多模块工程中的应用 (Mirosalva 翻译)
- Workmanager 简介 (gs666 翻译)
- Data Binding 库使用的经验教训 (Mirosalva 翻译)
- Plaid 应用迁移到 AndroidX 的实践经历 (Mirosalva 翻译)
- Android 生命周期备忘录 — 第三部分:Fragments (Qiuk17 翻译)
- Android 生命周期备忘录 —— 第四部分:ViewModels、半透明 Activities 及启动模式 (xiaxiayang 翻译)
- 在 Android 应用中使用矢量资源 (YueYongDev 翻译)
- MDC-104 Flutter:Material 高级组件(Flutter) (DevMcryYu 翻译)
- Android 生命周期备忘录 — 第二部分:多 Activity (gs666 翻译)
- Flutter 异步编程:Future、Isolate 和事件循环 (nanjingboy 翻译)
- 转化通用安卓音乐播放器为 instant 应用 (Mirosalva 翻译)
- 绘制路径:Android 中矢量图渲染 (xiaxiayang 翻译)
- 介绍一款使用 Flutter 编写的 Flutter 组件、应用生成器 (jerryOnlyZRJ 翻译)
- Widget - State - Context - InheritedWidget (nanjingboy 翻译)
- Flutter 从 0 到 1 第二部分 (hongruqi 翻译)
- 我与 Flutter 的一年 (ssshooter 翻译)
- 为什么你的应用需要对各种尺寸屏幕做适配优化? (Mirosalva 翻译)
- Android Dev Summit 2018 应用(instant app 的总结 + 开源) (DevMcryYu 翻译)
- MDC-103 Flutter: Material Theming 的颜色、形状、高度和类型(Flutter) (DevMcryYu 翻译)
- PWA 会取代原生移动应用吗? (jerryOnlyZRJ 翻译)
- 13 个你应该选择/考虑使用 Flutter 的理由 (YueYongDev 翻译)
- 充分利用多摄像头 API (xiaxiayang 翻译)
- 轻松发布私有 APP (Qiuk17 翻译)
- Flutter 从 0 到 1 (hongruqi 翻译)
- Android 上一次编写,到处测试 (gs666 翻译)
- 格子拼贴 — 关于模块化的故事 (snpmyn 翻译)
- Android 中的 MVP:如何使 Presenter 层系统化 (Moosphan 翻译)
- MDC-102 Flutter:Material 结构和布局(Flutter) (DevMcryYu 翻译)
- MDC-101 Flutter:Material Components(MDC)基础(Flutter) (DevMcryYu 翻译)
- 使用自定义文件模板加快你的应用开发速度 (nanjingboy 翻译)
- 当 Kotlin 中的监听器包含多个方法时,如何让它 “巧夺天工”? (Moosphan 翻译)
- 了解 Android 的矢量图片格式:
VectorDrawable
(HarderChen 翻译) - Android 内核控制流完整性 (nanjingboy 翻译)
- 同时使用多个相机流 (zx-Zhu 翻译)
- Kotlin 协程高级使用技巧 (nanjingboy 翻译)
- 使用 Flutter,Material Theming 和官方材质组件(MDC)构建美观,灵活的用户界面 (DevMcryYu 翻译)
- 为用户提供安全可靠的体验 (YueYongDev 翻译)
- 在 Android 上实现 Google Inbox 的样式动画 (YueYongDev 翻译)
- 回答有关 Flutter App 开发的问题 (YueYongDev 翻译)
- 更好的数据,更明智的决策 (BriFuture 翻译)
- 如何在东南亚拓展您的应用业务 (jianboy 翻译)
- 正确实现 linkedPurchaseToken 以避免重复订阅 (yuwhuawang 翻译)
- Android 的多摄像头支持 (luoqiuyu 翻译)
- React Native 对 Flutter: 哪一个对创业公司更加友好? (tanglie1993 翻译)
- Flutter 的英雄和流氓们 —— 为 Flutterverse 带来平衡 (DateBro 翻译)
- 如何将 Stackdriver 连接到智能家居服务器以进行错误记录 (Starriers 翻译)
- 写一个完整的 Flutter App 是什么感觉 (tanglie1993 翻译)
- 深入 Flutter 之手势 (MeFelixWang 翻译)
- 挑战 Flutter 之 YouTube (MeFelixWang 翻译)
- 挑战 Flutter 之 Twitter (MeFelixWang 翻译)
- 测试原生,Flutter 和 React Native 移动开发之间的性能差异。 (LeeSniper 翻译)
- 如何用 Flutter 来创建一个带有底部导航栏的应用程序 (geniusq1981 翻译)
- Slidable:一个 Flutter 的故事 (YueYongDev 翻译)
- 在 Flutter 中实现微光闪烁效果 (geniusq1981 翻译)
- 为什么每个 Android 开发者都应该尝试 Flutter (ALVINYEH 翻译)
- 移动技术在改善财务健康方面的作用 (DateBro 翻译)
- 在 Flutter 中解析复杂的 JSON (DateBro 翻译)
- Kotlin 揭秘:理解速记 Lambda 语法 (androidxiao 翻译)
- 深入了解 Flutter (DateBro 翻译)
- 使用 Flutter 制作 3D 翻转动画 (ALVINYEH 翻译)
- Flutter 实用指南:给初学者的 6 个小帖士 (ALVINYEH 翻译)
- 用 Flutter 写一个待办事项应用 (DateBro 翻译)
- Flutter 系列入门教程五:网格 (YueYongDev 翻译)
- Flutter 中的原生应用程序状态 (Starriers 翻译)
- 实用 ProGuard 规则示例 (DerekDick 翻译)
- Flutter 挑战之 WhatsApp (YueYongDev 翻译)
- 为什么你需要关注一下 Flutter (DateBro 翻译)
- 如何在 Flutter 中设计 LinearLayout? (androidxiao 翻译)
- 使用 Flutter 的 GestureDetector 构建自定义滑块 (ALVINYEH 翻译)
- Flutter 组件到底是什么? (ALVINYEH 翻译)
- 海量视频时代下的内容发现之旅 (Yuhanlolo 翻译)
- React Native:回顾 Udacity 移动工程团队的使用历程 (pkuwwt 翻译)
- 如何避免拍脑袋想出的产品优先策略 (bobmayuze 翻译)
- Android 应用和游戏的无障碍开发介绍 (geniusq1981 翻译)
- 如何用 Android vitals 解决应用程序的质量问题 (LeeSniper 翻译)
- 在 SnackBar,Navigation 和其他事件中使用 LiveData(SingleLiveEvent 案例) (wzasd 翻译)
- PWA 再进化,可以生成一个安卓原生的 WebAPK 了 (Yuhanlolo 翻译)
- 如何针对 Android 优化您的应用(Go 版) (androidxiao 翻译)
- 带你领略 ConstraintLayout 1.1 的新功能 (Moosphan 翻译)
- 在 Android P 中使用默认的 TLS 来保护你的用户 (hanliuxin5 翻译)
- 介绍 Google Play 上新的优质 Android 应用与游戏 (sisibeloved 翻译)
- 情景活动感知识别的 Transition API 新特性面向全体开发者开放 (wzasd 翻译)
- 通过安全浏览保护 WebView (androidxiao 翻译)
- 使用 Span 来修改文本样式的优质体验 (wzasd 翻译)
- Windows Insets 和 Fragment 过渡动画 (LeeSniper 翻译)
- Android 支持库 21.1.0 中的 Loaders (dreamhb 翻译)
- Android Studio 切换至 D8 dexer (Starriers 翻译)
- 移动游戏发行的新时代 (IllllllIIl 翻译)
- 在 Google I/O 2018 观看 Flutter 的正确姿势 (wzasd 翻译)
- 更为详细的地图、导航和助手功能 —— Google I/O 2018 的 Android 应用更新 (sisibeloved 翻译)
- 论 Android 中 Span 的正确打开方式 (tanglie1993 翻译)
- 为什么 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 翻译)