<!DOCTYPE html>
<html lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>

Android Design - Writing Style
    </title>
    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic">
    <link rel="stylesheet" href="../static/yui-3.3.0-reset-min.css">
    <link rel="stylesheet" href="../static/default.css">

<style>

/* UI tables */

.ui_table {
  width: 100%;
  background: #282828;
  color: #fff;
  border-radius: 2px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.25);
  border-collapse: separate;
}

.ui_table th,
.ui_table td {
  padding: 5px 10px;
}

.ui_table thead th {
  font-weight: 600;
}

.ui_table tfoot td {
  border-top: 1px solid #494949;
  border-right: 1px solid #494949;
  text-align: center;
}

.ui_table tfoot td:last-child {
  border-right: 0;
}

.list_item_margins {
  margin-left: 30px !important;
}

.example_label {
  margin-bottom: 10px;
  padding-left: 20px;
  background: transparent none no-repeat scroll 0px 3px;
}

.example_label.bad {
  background-image: url(../static/ico_wrong.png);
}

.example_label.good {
  background-image: url(../static/ico_good.png);
}

</style>

  </head>
  <body>

    <div id="page-container">

      <div id="page-header"><a href="../index.html">Android Design</a></div>

      <div id="main-row">

        <ul id="nav">

          <li class="nav-section">
            <div class="nav-section-header"><a href="../index.html">Get Started</a></div>
            <ul>
              <li><a href="../get-started/creative-vision.html">Creative Vision</a></li>
              <li><a href="../get-started/principles.html">Design Principles</a></li>
              <li><a href="../get-started/ui-overview.html">UI Overview</a></li>
            </ul>
          </li>

          <li class="nav-section">
            <div class="nav-section-header"><a href="../style/index.html">Style</a></div>
            <ul>
              <li><a href="../style/devices-displays.html">Devices and Displays</a></li>
              <li><a href="../style/themes.html">Themes</a></li>
              <li><a href="../style/touch-feedback.html">Touch Feedback</a></li>
              <li><a href="../style/metrics-grids.html">Metrics and Grids</a></li>
              <li><a href="../style/typography.html">Typography</a></li>
              <li><a href="../style/color.html">Color</a></li>
              <li><a href="../style/iconography.html">Iconography</a></li>
              <li><a href="../style/writing.html">Writing Style</a></li>
            </ul>
          </li>

          <li class="nav-section">
            <div class="nav-section-header"><a href="../patterns/index.html">Patterns</a></div>
            <ul>
              <li><a href="../patterns/new-4-0.html">New in Android 4.0</a></li>
              <li><a href="../patterns/gestures.html">Gestures</a></li>
              <li><a href="../patterns/app-structure.html">App Structure</a></li>
              <li><a href="../patterns/navigation.html">Navigation</a></li>
              <li><a href="../patterns/actionbar.html">Action Bar</a></li>
              <li><a href="../patterns/multi-pane-layouts.html">Multi-pane Layouts</a></li>
              <li><a href="../patterns/swipe-views.html">Swipe Views</a></li>
              <li><a href="../patterns/selection.html">Selection</a></li>
              <li><a href="../patterns/notifications.html">Notifications</a></li>
              <li><a href="../patterns/compatibility.html">Compatibility</a></li>
              <li><a href="../patterns/pure-android.html">Pure Android</a></li>
            </ul>
          </li>

          <li class="nav-section">
            <div class="nav-section-header"><a href="../building-blocks/index.html">Building Blocks</a></div>
            <ul>
              <li><a href="../building-blocks/tabs.html">Tabs</a></li>
              <li><a href="../building-blocks/lists.html">Lists</a></li>
              <li><a href="../building-blocks/grid-lists.html">Grid Lists</a></li>
              <li><a href="../building-blocks/scrolling.html">Scrolling</a></li>
              <li><a href="../building-blocks/spinners.html">Spinners</a></li>
              <li><a href="../building-blocks/buttons.html">Buttons</a></li>
              <li><a href="../building-blocks/text-fields.html">Text Fields</a></li>
              <li><a href="../building-blocks/seek-bars.html">Seek Bars</a></li>
              <li><a href="../building-blocks/progress.html">Progress &amp; Activity</a></li>
              <li><a href="../building-blocks/switches.html">Switches</a></li>
              <li><a href="../building-blocks/dialogs.html">Dialogs</a></li>
              <li><a href="../building-blocks/pickers.html">Pickers</a></li>
            </ul>
          </li>

          <li>
            <div id="back-dac-section"><a href="../../index.html">Developers</a></div>
          </li>

        </ul>

        <div id="content">

          
          <div class="layout-content-row content-header">
            <div class="layout-content-col span-9">
              <h2>Writing Style</h2>
            </div>
            <div class="paging-links layout-content-col span-4">
              <a href="#" class="prev-page-link">Previous</a>
              <a href="#" class="next-page-link">Next</a>
            </div>
          </div>
          

          

<p>When choosing words for your app:</p>
<ol>
<li>
<p><strong>Keep it brief.</strong> Be concise, simple and precise. Start with a 30 character limit (including
   spaces), and don't use more unless absolutely necessary.</p>
</li>
<li>
<p><strong>Keep it simple.</strong> Pretend you're speaking to someone who's smart and competent, but doesn't
   know technical jargon and may not speak English very well. Use short words, active verbs, and
   common nouns.</p>
</li>
<li>
<p><strong>Be friendly.</strong> Use contractions. Talk directly to the reader using second person ("you"). If
   your text doesn't read the way you'd say it in casual conversation, it's probably not the way
   you should write it. Don't be abrupt or annoying and make the user feel safe, happy and
   energized.</p>
</li>
<li>
<p><strong>Put the most important thing first.</strong> The first two words (around 11 characters, including
   spaces) should include at least a taste of the most important information in the string. If they
   don't, start over.</p>
</li>
<li>
<p><strong>Describe only what's necessary, and no more.</strong> Don't try to explain subtle differences. They
   will be lost on most users.</p>
</li>
<li>
<p><strong>Avoid repetition.</strong> If a significant term gets repeated within a screen or block of text, find
   a way to use it just once.</p>
</li>
</ol>

<h2>Examples</h2>

<ol><li class="value-1"><strong>Keep it brief.</strong> From the setup wizard:</ol>

<div class="layout-content-row">
  <div class="layout-content-col span-6 list_item_margins">

    <div class="example_label bad">Too formal</div>

    <table class="ui_table good"><tbody><tr><td>
    Consult the documentation that came with your phone for further instructions.
    </td></tr></tbody></table>

  </div>
  <div class="layout-content-col span-6">

    <div class="example_label good">Better</div>

    <table class="ui_table good"><tbody><tr><td>
    Read the instructions that came with your phone.
    </td></tr></tbody></table>

  </div>
</div>

<div class="vspace size-1">&nbsp;</div>

<ol><li class="value-2"><strong>Keep it simple.</strong> From the Location settings screen:</ol>

<div class="layout-content-row">
  <div class="layout-content-col span-6 list_item_margins">

    <div class="example_label bad">Confusing</div>

    <table class="ui_table bad">
    <thead>
      <tr>
        <th>
        Use GPS satellites
        </th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>
        When locating, accurate to street level.
        </td>
      </tr>
    </tbody>
    </table>

  </div>
  <div class="layout-content-col span-6">

    <div class="example_label good">Better</div>

    <table class="ui_table good">
    <thead>
      <tr>
        <th>
        GPS
        </th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>
        Let apps use satellites to pinpoint your location.
        </td>
      </tr>
    </tbody>
    </table>

  </div>
</div>

<div class="vspace size-1">&nbsp;</div>

<ol><li class="value-3"><strong>Be friendly.</strong> Dialog that appears when an application
crashes:</ol>

<div class="layout-content-row">
  <div class="layout-content-col span-6 list_item_margins">

    <div class="example_label bad">Confusing and annoying&mdash;"Sorry" just rubs salt in the
    wound.</div>

    <table class="ui_table bad">
    <thead>
      <tr>
        <th colspan="3">
        Sorry!
        </th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td colspan="3">
        Activity MyAppActivity (in application MyApp)
        is not responding.
        </td>
      </tr>
    </tbody>
    <tfoot>
      <tr>
        <td width="33%">Force close</td>
        <td width="33%">Wait</td>
        <td width="33%">Report</td>
      </tr>
    </tbody>
    </table>

  </div>
  <div class="layout-content-col span-6">

    <div class="example_label good">Shorter, more direct, no faux-apologetic title:<br><br></div>

    <table class="ui_table good">
    <thead>
      <tr>
        <th colspan="3">
        MyApp isn't responding.
        </th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td colspan="3">
        Do you want to close it?
        </td>
      </tr>
    </tbody>
    <tfoot>
      <tr>
        <td width="33%">Wait</td>
        <td width="33%">Report</td>
        <td width="33%">Close</td>
      </tr>
    </tbody>
    </table>

  </div>
</div>

<div class="vspace size-1">&nbsp;</div>

<ol><li class="value-4"><strong>Put the most important thing first.</strong></ol>

<div class="layout-content-row">
  <div class="layout-content-col span-6 list_item_margins">

    <div class="example_label bad">Top news last</div>

    <table class="ui_table bad"><tbody><tr><td>
    77 other people +1'd this, including Larry Page.
    </td></tr></tbody></table>

  </div>
  <div class="layout-content-col span-6">

    <div class="example_label good">Top news first</div>

    <table class="ui_table good"><tbody><tr><td>
    Larry Page and 77 others +1'd this.
    </td></tr></tbody></table>

  </div>
</div>

<div class="layout-content-row">
  <div class="layout-content-col span-6 list_item_margins">

    <div class="example_label bad">Task last</div>

    <table class="ui_table bad"><tbody><tr><td>
    Touch Next to complete setup using a Wi-Fi connection.
    </td></tr></tbody></table>

  </div>
  <div class="layout-content-col span-6">

    <div class="example_label good">Task first</div>

    <table class="ui_table good"><tbody><tr><td>
    To finish setup using Wi-Fi, touch Next.
    </td></tr></tbody></table>

  </div>
</div>

<div class="vspace size-1">&nbsp;</div>

<ol><li class="value-5"><strong>Describe only what's necessary, and no more.</strong></ol>

<div class="layout-content-row">
  <div class="layout-content-col span-6 list_item_margins">

    <div class="example_label bad">From a Setup Wizard screen</div>

    <table class="ui_table bad">
    <thead>
      <tr>
        <th>
        Signing in...
        </th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>
        Your phone needs to communicate with<br>
        Google servers to sign in to your account.<br>
        This may take up to five minutes.
        </td>
      </tr>
    </tbody>
    </table>

  </div>
  <div class="layout-content-col span-6">

    <div class="example_label good">From a Setup Wizard screen</div>

    <table class="ui_table good">
    <thead>
      <tr>
        <th>
        Signing in...
        </th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>
        Your phone is contacting Google.<br>
        This can take up to 5 minutes.
        </td>
      </tr>
    </tbody>
    </table>

  </div>
</div>



          
          <div class="layout-content-row content-footer">
            <div class="paging-links layout-content-col span-9">&nbsp;</div>
            <div class="paging-links layout-content-col span-4">
              <a href="#" class="prev-page-link">Previous</a>
              <a href="#" class="next-page-link">Next</a>
            </div>
          </div>
          
        </div>

      </div>

      <div id="page-footer">

        <p id="copyright">
          Except as noted, this content is licensed under
          <a href="http://creativecommons.org/licenses/by/2.5/">
          Creative Commons Attribution 2.5</a>.<br>
          For details and restrictions, see the
          <a href="http://developer.android.com/license.html">Content License</a>.
        </p>

        <p>
          <a href="http://www.android.com/terms.html">Site Terms of Service</a> &ndash;
          <a href="http://www.android.com/privacy.html">Privacy Policy</a> &ndash;
          <a href="http://www.android.com/branding.html">Brand Guidelines</a>
        </p>

      </div>
    </div>

    <script src="../static/jquery-1.6.2.min.js"></script>
    <script>
    var SITE_ROOT = '../';
    </script>
    <script src="../static/default.js"></script>


    <script type="text/javascript">
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
    </script>
    <script type="text/javascript">
    var pageTracker = _gat._getTracker("UA-5831155-1");
    pageTracker._trackPageview();
    </script>
  </body>
</html>
