Thursday, December 10, 2009

0

Optimize your layouts

  • Thursday, December 10, 2009
  • Ric RAT
  • Share


  • Writing user interface layouts for Android applications is easy, but it can sometimes be difficult to optimize them. Most often, heavy modifications made to existing XML layouts, like shuffling views around or changing the type of a container, lead to inefficiencies that go unnoticed.

    Starting with the SDK Tools Revision 3 you can use a tool called layoutopt to automatically detect common problems. This tool is currently only available from the command line and its use is very simple - just open a terminal and launch the layoutopt command with a list of directories or XML files to analyze:


    $ layoutopt samples/
    samples/compound.xml
    7:23 The root-level <FrameLayout/> can be replaced with <merge/>
    11:21 This LinearLayout layout or its FrameLayout parent is useless samples/simple.xml
    7:7 The root-level <FrameLayout/> can be replaced with <merge/>
    samples/too_deep.xml
    -1:-1 This layout has too many nested layouts: 13 levels, it should have <= 10!
    20:81 This LinearLayout layout or its LinearLayout parent is useless
    24:79 This LinearLayout layout or its LinearLayout parent is useless
    28:77 This LinearLayout layout or its LinearLayout parent is useless
    32:75 This LinearLayout layout or its LinearLayout parent is useless
    36:73 This LinearLayout layout or its LinearLayout parent is useless
    40:71 This LinearLayout layout or its LinearLayout parent is useless
    44:69 This LinearLayout layout or its LinearLayout parent is useless
    48:67 This LinearLayout layout or its LinearLayout parent is useless
    52:65 This LinearLayout layout or its LinearLayout parent is useless
    56:63 This LinearLayout layout or its LinearLayout parent is useless
    samples/too_many.xml
    7:413 The root-level <FrameLayout/> can be replaced with <merge/>
    -1:-1 This layout has too many views: 81 views, it should have <= 80! samples/useless.xml
    7:19 The root-level <FrameLayout/> can be replaced with <merge/>
    11:17 This LinearLayout layout or its FrameLayout parent is useless
    For each analyzed file, the tool will indicate the line numbers of each tag that could potentially be optimized. In some cases, layoutopt will also offer a possible solution.

    The current version of layoutopt contains a dozen rules used to analyze your layout files and future versions will contain more. Future plans for this tool also include the ability to create and use your own analysis rules, to automatically modify the layouts with optimized XML, and to use it from within Eclipse and/or a standalone user interface.


    Windows users: to start layoutopt, open the file called layoutopt.bat in the tools directory of the SDK and on the last line, replace %jarpath% with -jar %jarpath%.

    0 Responses to “Optimize your layouts”

    Post a Comment

    Subscribe