Android开发的隐藏功能?

121

我很惊讶在我一直关注的隐藏功能系列中,还没有Android 隐藏功能文章。

这个隐藏功能系列对于刚接触某种语言的人来说非常棒。它可以在一个地方展示绳索和某些有价值的技巧,我认为这是一个绝妙的想法。即使是专家有时也会发现他们从未听说过的技巧。

我正在开始Android开发并且我想了解它的隐藏功能、技巧和陷阱。

那么,接下来就是:什么是Android的一些隐藏功能

6个回答

105

希望 Android 没有太多隐藏的功能 - 以下是一些较少人知道且非直观的 Android 功能,它们能大大简化你的生活并提升应用程序的质量。

  • 所有平台和非 Google 原生应用程序的源代码都可以从Android 开放源代码项目中浏览、下载、借用或窃取。
  • 使用资源框架,创建应用程序的本地化版本就像添加一个新的文件夹 (例如 values-fr),其中包含另一种语言 (例如法语) 的字符串 XML 文件一样简单。Android 将在运行时自动选择正确的文件夹。
    • 相同的资源框架还可以通过将其放在指定名称的文件夹中来为不同的硬件配置、屏幕像素密度和输入设备使用替代布局。
  • 自 Android 1.6 开始,你的应用程序可以生成结果,这些结果将显示在主屏幕快速搜索框搜索的结果中。这被称为自定义搜索建议
  • 利用意图和意图过滤器,你的应用程序可以发出和服务匿名请求以完成某个动作 (例如 Where 应用程序可以从 Open Table 应用程序中请求预订餐桌)。
    • 它们可以请求未知应用程序完成一个动作,而不需要知道哪些应用程序可以满足该请求
    • 你的应用程序可以为来自未知应用程序的请求完成操作,而无需知道将发送请求的应用程序是哪些。这样就可以创建“默认”Twitter 应用程序或预订应用程序等。
  • 使用闹钟,您可以设置您的应用在预定时间完成任务,即使您的应用程序没有运行。
    • 您可以使用setInexactRepeating方法来定期计划事件(例如服务器轮询或更新),从而节省大量电池寿命。 它会同步多个应用程序的警报以在同一时间发生而不是任意时间。
  • 使用首选项框架,您可以为应用创建与系统设置相同风格的设置屏幕。 甚至可以将系统设置屏幕(例如安全和位置)合并到您的应用程序设置层次结构中。
  • 使用AudioTrack和AudioRecord API,您可以直接从PCM音频缓冲区流式传输音频数据。

  • 35

    SDK中/tools目录下的工具值得一提:

    • 我们的设计师特别喜欢draw9patch,它有助于设计可伸缩的按钮。他从那里给我提供了资源,我将背景颜色更改为9-patch drawable,现在我们有了自定义的按钮、圆角等,可以根据文本进行拉伸。
    • ddms也集成到了Eclipse插件中。它非常强大,但我用它来截屏。
    • adb - 可以通过命令行与您的设备或模拟器交互。我使用它在桌面上的终端窗口中跟踪来自我的设备的日志,尽管我发现它对于安装和卸载表现不佳的应用程序非常有用。
    • sqlite3 - 与已安装的数据库进行交互,并尝试查询。
    • apkbuilderzipalignaapt - 适用于无头构建。
    • monkey用于模糊测试您的应用程序。
    我会把三个设计方面的要素,即性能, 响应速度连贯性单独列出来,并添加第四个为(电池)寿命编写代码
    尽管Javadoc有时可能有点简略,但将源代码放在那里供您查看无疑是非常有帮助的。
    另外,拥有大量由谷歌员工编写的示例应用程序进行构建、检查,然后查看他们如何实现也非常有用。

    1
    你错过了另一个不错的工具——layoutopt。 - 100rabh
    另一个我经常使用但现在缺失的好工具是HierarchyViewer。 - Artem Russakovskii

    25

    那我就先开始吧。


    我认为一个很好的隐藏特性是Android文档中的最佳实践(Best Practices)。其中列出了许多有关设计响应快速应用程序的重要提示。

    Best Practices 的章节如下:

    • 支持多种屏幕尺寸和分辨率
    • UI指南
      • 图标设计
      • 应用程序小部件设计
      • 活动和任务设计
      • 菜单设计
    • 性能设计
    • 响应性设计
    • 无缝设计

    另一个隐藏特性是这些文档可以离线使用,作为SDK的一部分。起初我每天早上在火车上加载几个页面,但在发现它们在SDK目录中后,就不再需要这样做了。


    如果您使用Eclipse,您会注意到它不能很好地格式化XML文件,而且当它这样做时,结果很不一致(有时它会将属性拆分成新的行,有时不会)。要修复它,您可以按Ctrl-Shift-F进行自动格式化。ctrl-shift-F使用的规则位于窗口->首选项->XML->XML文件->编辑器中。


    1
    最后一个肯定会成为我的工作流一部分。这已经让我烦恼了一个星期……谢谢你!! - Mikle

    14

    Android支持使用XML的<shape>作为类似SVG的绘图元素。然而,它们没有相应的文档说明。以下是我找到的最好的资料:

    http://escomic.net/217


    4
    还有一个网站http://idunnolol.com/android/drawables.html,提供关于形状所有XML特性的完整文档。形状在制作圆角背景、点击时改变颜色或者生成XML定义渐变背景时非常重要,可以代替自定义背景图片。 - Janusz
    能否将多个形状添加到一个XML文档中?例如,几个圆和矩形。 - skyfoot

    13

    关于最佳实践,您可能想查看Android编码风格:

    http://source.android.com/source/code-style.html

    以及Eclipse代码和导入格式化程序(android-formatting.xml、android.importorder),这些都可以在开发/ide/eclipse下的平台源代码中找到。


    2
    获取Eclipse格式化程序的代码需要跨越一些障碍,因此在此处查找:http://www.google.com/codesearch/p?hl=en#CRBM04-7BoA/ide/eclipse/android-formatting.xml&q=android-formatting&sa=N&cd=1&ct=rc - idbrii

    7

    hierarchyviewer在/tools目录下,它可以帮助你调试/分析视图布局:填充、定位、视图层次结构等等。

    有时候当我试图弄清楚为什么事物被布置成这样时,它节省了我很多时间。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接