导航组件概览 | MAD Skills

2021-02-04
阅读 7 分钟
1.9k
这是一个新的系列文章,我们称之为 "Modern Android Development 技巧",简称为 "MAD Skills"。本系列文章致力于帮助开发者们打造更好的现代 Android 开发体验,敬请关注。今天为大家发布本系列文章中的第一篇: 导航 (Navigation) 组件概览。
封面图

Kotlin Vocabulary | Kotlin 默认参数

2021-01-30
阅读 6 分钟
3.4k
默认参数 是一个简短而易用的功能,它可以让您无需模版代码便可实现函数重载。和 Kotlin 所提供的许多其他功能一样,默认参数会给人一种魔法般的感觉。如果您想要知道其中的奥秘,请继续阅读,本文将会揭晓默认参数内部的工作原理。
封面图

在 Android Studio 里使用构建分析器提升构建性能

2021-01-29
阅读 4 分钟
3k
作为 Android 开发者工具团队的成员,我和团队成员们每天都抱着将 Android 打造成最好的移动开发者平台的想法来制作各种工具。这意味着我们会构建一些帮助您开发应用的工具,让您专注于编写应用。
封面图

Apply Changes 在 Android 11 中的增强特性

2021-01-28
阅读 2 分钟
2.3k
Apply Changes 是 Android Studio 中的一项功能,我们在 Android Studio 3.5 中引入了这项功能,以帮助开发者快速迭代您对应用所做的更改。Apply Changes 通过 JVMTI API 来判断是否可以使用此方式进行变更。在 Android 11 上,ART (Android 运行时) 扩展了 JVMTI API,引入了一个名为 Structural Class Redefinition (...
封面图

使用 Android 模拟器容器来实现持续集成测试

2021-01-26
阅读 2 分钟
2.4k
如今,借助我们预先构建好的 Android 模拟器容器,在持续集成和交付系统 (CI/CD) 上设置以及运行 Android 模拟器比以往任何时候都容易。这些容器可以让您轻松找到并运行正确版本的模拟器,而不必再因为依赖管理而头疼。其同时也让持续集成和交付系统增加自动化测试变得更为简单,而且不用担心维护大量实体设备所产生的花...
封面图

全新的 Fragment: 使用新的状态管理器

2021-01-20
阅读 5 分钟
3.4k
相比其它大多数 Android API,Fragments 近几年的变化要更大一些。最初它作为 Android 平台的一部分,后来成为 Android Support Library 的一部分,现在又以 AndroidX Fragments 的形式独立成为了 Jetpack 的一部分。
封面图

原理介绍 | Apply Changes 背后的秘密

2021-01-17
阅读 4 分钟
3.2k
在 Android 11 上,Android 运行时 (ART) 引入了一个名为 Structural Class Redefinition (类的结构性重定义) 的 JVMTI API 扩展。本文将介绍类的结构性重定义的功能,并介绍在实现该功能所遇到的问题,包含我们对问题的思考、权衡及解决方案。类的结构性重定义是一个运行时功能,它扩展了 Android 8 中引入的重定义类方...

Android Studio 4.1 中的本地内存分析

2021-01-15
阅读 4 分钟
5.4k
我们从大家的反馈了解到使用 C++ 调试本地内存非常困难,尤其在开发游戏的时候。在 Android Studio 4.1 中,Memory Profiler (内存分析器) 可以记录本地内存分配的调用栈。本地内存记录基于 Perfetto 后端实现,它是 Android 的新一代性能工具和问题追溯解决方案。

响应视窗属性动画 | 让您的软键盘动起来 (二)

2021-01-09
阅读 5 分钟
3.4k
在上一篇文章中,我们介绍了所有关于 "边到边" (edge-to-edge) 的 API 改动: 让您的软键盘动起来。在这篇文章中,我们会继续跟进软键盘动画这一实际任务。为了展示可以实现的效果,您可以查看下面这个来自同一个应用的示例,左边的是运行在 Android 10 上,而右边的是运行在 Android 11 上 (动画效果是实际速度的 20%):

使用 Jetpack DataStore 进行数据存储

2021-01-09
阅读 5 分钟
5.6k
作者 / Android 开发技术推广工程师 Florina Muntenescu 与 Google 软件工程师 Rohit Sathyanarayana

使用 R8 压缩您的应用

2021-01-06
阅读 4 分钟
4k
人们更倾向于安装并保留较小和安装占用空间更小的应用,在新兴市场中尤为明显。有了 R8 编译器,您可以通过压缩、混淆和优化,更全面的缩小应用体积。

Kotlin Vocabulary | Kotlin 委托代理

2020-12-26
阅读 6 分钟
2.3k
当然,委托在软件行业不是什么新鲜名词。委托 (Delegation) 是一种设计模式,在该模式中,对象会委托一个助手 (helper) 对象来处理请求,这个助手对象被称为代理。代理负责代表原始对象处理请求,并使结果可用于原始对象。

Android Studio 4.1 中 Design Tools 的改进

2020-12-25
阅读 7 分钟
4.2k
Android Studio 中的 Design Tools Suite 提供了一整套开发工具包,使得开发者们能高效地进行 UI 设计、原型设计、构建和调试代码。这些工具包括 Layout Editor (排版编辑器)、Navigation Editor (Navigation 编辑器)、Motion Editor (动作编辑器)、Resource Manager (资源管理器) 和 Layout Inspector (布局检查器) 等...

您离成功还差一本免费的《Android 11 开发者手册》

2020-12-21
阅读 1 分钟
2.8k
关注 Android 11 开发技巧和成功之道的开发者们,想必已经收藏了不少我们发布的文章——毕竟,想在 Android 11 上打造精彩的作品,需要全方位了解系统的新功能、新变化,更需要及时了解迁移应用的注意点,以及其他开发者的成功经验。那么,有没有一本 "秘笈" 能把这些内容完全收录进来呢?

运用 Flutter 快速构建高质量用户体验|Google Play 开发者播客节目 · 第十六期

2020-12-17
阅读 2 分钟
2.4k
如何更快、更轻松地构建成功的应用,同时满足用户的期望?这是一个不小的挑战。不过,我们正在研究如何让 Google 的 UI 工具包 Flutter 帮助开发者们创建精美应用的同时简化一些工作。本期节目,我们邀请到来自 eBay Motors 的 Larry Mckenzie 和 Corey Sprague,他们讨论了如何运用 Flutter,通过单个代码库来为移动端...

培养用户习惯,提升应用留存|Google Play 开发者播客节目 · 第十五期

2020-12-16
阅读 2 分钟
2.1k
为什么留存对于业务成功来说比其他措施更为重要?您是如何优化留存策略的呢?在本期节目中,Marcus Gners (Chief Strategy Officer and Co-founder, Lifesum) 和 Nir Eyal (Best selling author of 'Hooked' and 'Indistractable') 共同探讨习惯养成应用需要培养用户习惯以提升留存。如何有效地衡量这些指标?又该如何培...

Constraint Layout 2.0 用法详解

2020-12-12
阅读 4 分钟
3.1k
Constraint Layout 是最受欢迎的 Jetpack 库之一,它的 2.0 正式版本也发布啦 (目前最新版本 2.1.0-alpha1)!也许您已熟悉了 Constraint Layout 1.1 版本中的功能,并开始用它来快速构建复杂的页面布局,而新版本除了包含 1.1 版本中的所有功能之外,还在 Android Studio 中集成了可以直接预览 XML 的工具,甚至可以直接...

WeSing 用 Kotlin 和歌声连接用户 | Android 开发者故事

2020-12-11
阅读 2 分钟
2.1k
"WeSing 这个名字,本身就包含着我们的愿景——大家一起来唱歌吧!就像好友们总是相约去 K 歌一样,WeSing 希望通过歌声将更多的人聚集到一起。"—— Hary Zhang,Team Lead

Android Studio 和 Gradle 插件使用全新版本编号

2020-12-11
阅读 3 分钟
3.2k
第一版 Android Studio Arctic Fox (2020.3.1) 以及 Android Gradle 插件 (AGP) 的 7.0.0-alpha01 版双双在 Canary 通道已正式发布。在此版本中,我们调整了 Android Studio 和 Gradle 插件的版本编号方案。此项变更将 Gradle 插件从 Android Studio 的版本编号方案中剥离,并使 Android Studio 的每个版本对应于哪个年...

Android Studio 中的 Motion Editor 用法详解

2020-12-06
阅读 4 分钟
2.4k
在同 Android 开发者社区交流之中,我们深知动画效果的加入对于 UI 来说至关重要,它可以让 UI 看起来更加直观,同时还利于用户理解其所要表达的意图。但是,开发者们在 Android 应用中添加复杂的动画效果却有着较大的工作量。为了解决这一问题,我们使用 Motion Layout 构建了一组功能强大的 API,并为之提供了 Motion ...

开始切换到 Kotlin: 谷歌工程师给初学者的知识点总结

2020-12-05
阅读 7 分钟
1.9k
在 2019 年的 I/O 大会上,我们曾宣布 Kotlin 将会是 Android 应用开发的首选语言,但是,部分开发者们反馈仍不清楚如何切换到 Kotlin,如果团队中没有人熟悉 Kotlin,一开始直接使用 Kotlin 进行项目开发还是会令人生畏。

大众点评用 Kotlin 打造灵活稳定兼备的应用 | Android 开发者故事

2020-12-05
阅读 2 分钟
1.9k
大众点评是全球最早的消费点评网站之一,成立于 2003 年。进入移动互联网时代后,用户可以在手机上使用大众点评 APP 方便地查询任何一个城市里的餐厅、影院、商场、景点和酒店等信息,并且了解其他用户写下的评价。应用也会依据用户评价数据和专家评价来推出各种榜单,比如 "必系列" 榜单和 "黑珍珠" 系列餐厅评价体系,...

Kotlin Android Extensions 的未来计划

2020-12-04
阅读 1 分钟
2.9k
Synthetic 视图 : 您可以将调用 findViewById 替换为使用 kotlinx.android.synthetic 进行 UI 交互。

Dagger 导航从未如此简单 | Android Studio 4.1

2020-12-03
阅读 3 分钟
2.3k
在使用 Dagger 的项目中,您是否因为要弄清楚 Dagger 的依赖关系而产生疑惑?依赖项来自 @Inject 修饰的构造器、@Binds 还是 @Provides 修饰的方法?它有限定符吗?要搞清楚这个并非易事。

Kotlin Vocabulary | 揭秘协程中的 suspend 修饰符

2020-12-02
阅读 9 分钟
2.3k
Kotlin 协程把 suspend 修饰符引入到了我们 Android 开发者的日常开发中。您是否好奇它的底层工作原理呢?编译器是如何转换我们的代码,使其能够挂起和恢复协程操作的呢?

跨平台游戏的挑战和机遇 | Google Play 开发者播客节目 · 第十四期

2020-12-02
阅读 2 分钟
5.3k
手游为端游和主机游戏开发者提供了绝佳的机会。通过手游化,游戏开发者为玩家提供了随时随地参与游戏的平台,从而扩大玩家基数并且提高用户留存率。在本期节目中,Jen Donahoe (Marketing Growth Lead - Teamfight Tactics, Riot Games) 将与我们共同探讨 —— Riot 将游戏带入移动市场所面临的挑战和机遇。

知识点 | ViewModel 四种集成方式

2020-11-30
阅读 10 分钟
4.5k
ViewModel 库一发布,便成为了 Jetpack 中的核心组件之一。我们在 2019 年做的一份开发者问卷显示,超过 40% 的 Android 开发者已经在自己的应用中使用了 ViewModel。ViewModel 可以将数据层与 UI 分离,而这种架构不仅可以简化 UI 的生命周期的控制,也能让代码获得更好的可测试性。如果想了解更多,可以参考 ViewModel...

协程中的取消和异常 | 核心概念介绍

2020-11-30
阅读 4 分钟
2.4k
在之前的文章里,我们为各位开发者分享了在 Android 中使用协程的一些基础知识,包括在 Android 协程的 背景介绍、上手指南 和 代码实战。本次系列文章 "协程中的取消和异常" 也是 Android 协程相关的内容,我们将与大家深入探讨协程中关于取消操作和异常处理的知识点和技巧。

在 Android 上进行高刷新率渲染

2020-11-29
阅读 4 分钟
5.2k
长久以来,手机屏幕刷新率都是 60Hz。应用和游戏开发者也习惯了假定刷新率为 60Hz,也就是每 16.6ms 生成一帧,而且这样开发出来的应用和游戏都会正常进行。但现在的情况已经不同了。最新的旗舰级设备往往会搭载刷新率更高的屏幕,可以带来更流畅的动画效果、更低的延迟,从而获得更好的整体用户体验。还有一些设备支持...

Kotlin Vocabulary | 内联类 inline class

2020-11-29
阅读 6 分钟
1.9k
类型安全帮助我们防止出现错误以及避免回过头去调试错误。对于 Android 资源文件,比如 String、Font 或 Animation 资源,我们可以使用 androidx.annotations,通过使用像 @StringRes、@FontRes 这样的注解,就可以让代码检查工具 (如 Lint) 限制我们只能传递正确类型的参数: