【翻译】创建好看的Android布局是一个不小的挑战,当你花了几个小时为多个设备调整它们时,你通常不想重新调整它们,但它是繁琐的嵌套布局通常效率很低。幸运的是,AndroidSDK中有一个工具可以帮助您优化布局以减少内存消耗并提高应用程序性能。布局优化优化需要一定的技巧。性能好的代码固然重要,但编写优秀代码的成本往往很高。您不能过早地优化只运行一次或暂时起作用的代码。如果您的应用程序反应迟钝、成本高昂或减慢系统上其他应用程序的速度,用户必然会做出响应,您的应用程序下载很可能会受到影响。在开发过程中尽早优化布局是节省成本和提高性能的简单方法。AndroidSDK带来了一个工具,可以自动分析你的布局并找到可能不需要的布局元素,以降低布局复杂性。第一步:准备工作如果要使用AndroidSDK中提供的优化工具,需要在开发系统的命令行中进行操作。如果您不熟悉使用命令行工具,那么您必须努力学习。强烈建议您将Android工具所在路径添加到操作系统的环境变量中,这样您就可以直接键入名称运行相关工具,否则每次在命令提示符后必须输入完整的文件路径那时,现在在AndroidSDK中有两个工具目录:/tools和/platform-tools。本文主要使用位于/tools目录下的layoutopt工具。另外,我想说的是ADB工具位于/platform-tools目录下。运行layoutopt运行layoutopt工具非常简单,后面跟着一个layout文件或者layout文件所在的目录作为参数即可。需要注意的是,这里你必须包含布局文件或目录的完整路径,即使你当前在这个目录中。我们看一个简单的例子:D:\d\tools\eclipse\article_ws\Nothing\res\layout>layoutoptD:\d\tools\eclipse\article_ws\Nothing\res\layout\main.xmlD:\d\tools\eclipse\article_ws\Nothing\res\layout\main.xmlD:\d\tools\eclipse\article_ws\Nothing\res\layout>注意上面的例子中,如果没有指定,则包含文件的完整路径完整路径,不会输出任何内容,eg:D:\d\tools\eclipse\article_ws\Nothing\res\layout>layoutoptmain.xmlD:\d\tools\eclipse\article_ws\Nothing\res\layout>所以,如果你没有看到任何东西,很可能文件没有被解析,这意味着它可能找不到。使用layoutopt输出Layoutopt的输出结果只是建议,你可以在你的应用中选择性地采纳这些建议。让我们看一些使用layoutopt输出建议的例子。无用布局在布局设计中,我们经常移动各种组件,有些组件最终可能用不到,如:工具会很快告诉我们LinearLayout里面的LinearLayout是多余的:11:17ThisLinearLayoutlayoutoritsLinearLayoutparentisuseless输出结果每行的前两个数字表示建议行号。Root可以替换Layoutopt的输出,这有时是矛盾的,例如:此布局将返回以下输出:5:22Theroot-level可以替换为10:21ThisLinearLayoutlayoutoritsFrameLayoutparentisuseless***行的建议是可行的,但不是必须的。我们想让两个TextView垂直放置,所以LinearLayout要保留,可以采纳第二行的建议,把无用的FrameLayout删掉。有意思的是,这个工具并不是万能的,比如上面的例子,如果我们给FrameLayout添加一个背景属性,然后运行这个工具,第一个建议当然会消失,但是第二个建议还是会显示的,tool知道我们不能通过合并来控制背景,但是查看LinearLayout之后,好像忘记了我们还给FrameLayout添加了一个LinearLayout不能提供的属性。视图太多,每个视图都会消耗内存。如果你在一个布局中放置了太多的视图,布局会占用太多的内存。假设一个layout包含超过80个views,layoutopt可能会给出如下建议:-1:-1Thislayouthastoomanyviews:83views,itshouldhave<=80!-1:-1Thislayouthastoomyviews:82views,itshouldhave<=80!-1:-1Thislayouthastoomyviews:81views,itshouldhave<=80!上面给出的建议是观看次数不能超过80,当然最好的设备很可能能够支持这么多的观看次数,但是如果确实出现性能不佳的情况,最好还是接受这个建议。嵌套太多Layouts不应该有太多的嵌套,layoutopt(和Android团队)建议保持layout在level10以下,即使是最好的平板屏幕,布局也不应该超过level10,RelativeLayout可能是一个解决方案,但是它的用法比较复杂,不过Eclipse中的GraphicalLayout资源工具已经更新,使用起来更简单。下面是布局套套太多时候,layoutopt的输入内容:-1:-1Thislayouthastoomanynestedlayouts:12levels,itshouldhave<=10!305:318ThisLinearLayoutlayoutoritsRelativeLayoutparentispossiblyuseless307:314ThisLinearLayoutlayoutoritsFrameLayoutparentispossiblyuseless310:312ThisLinearLayoutlayoutoritsLinearLayoutparentispossiblyuseless嵌套布局警告通常伴随有一些无用布局的警告,有助tofindoutwhichlayoutscanberemoved,avoidingacompleteredesignofthescreenlayout.总结Layoutopt是一种快速且易于使用的布局分析工具,用于查找低效和无用的布局。你要做的就是判断是否采纳layoutopt给出的优化建议。原因是复杂的布局会拖慢整个应用程序的速度,而且后期很难维护。简单的布局不仅简化了开发周期,还减少了测试和维护的工作量。因此,在应用开发过程中,应该尽早优化布局,不要等到最新的用户反馈才去改动。原标题:AndroidSDKTools:LayoutOptimization作者:ShaneConderandLaurenDarcey】【编者推荐】AndroidUI设计模板DashboardandActionBarapplicationAndroidUI自定义设计模板DashboardDashboardAndroid用户自定义UI设计模板Android用户界面设计模板DashboardProduct展示