| Ricardo Cervera | 414978a | 2014-10-08 17:00:30 -0700 | [diff] [blame] | 1 | page.title=Using the Material Theme |
| 2 | |
| 3 | @jd:body |
| 4 | |
| 5 | <div id="tb-wrapper"> |
| 6 | <div id="tb"> |
| 7 | <h2>This lesson teaches you to</h2> |
| 8 | <ol> |
| 9 | <li><a href="#ColorPalette">Customize the Color Palette</a></li> |
| 10 | <li><a href="#StatusBar">Customize the Status Bar</a></li> |
| 11 | <li><a href="#Inheritance">Theme Individual Views</a></li> |
| 12 | </ol> |
| 13 | <h2>You should also read</h2> |
| 14 | <ul> |
| 15 | <li><a href="http://www.google.com/design/spec">Material design specification</a></li> |
| 16 | <li><a href="{@docRoot}design/material/index.html">Material design on Android</a></li> |
| 17 | </ul> |
| 18 | </div> |
| 19 | </div> |
| 20 | |
| 21 | |
| 22 | <p>The new material theme provides:</p> |
| 23 | |
| 24 | <ul> |
| 25 | <li>System widgets that let you set their color palette</li> |
| 26 | <li>Touch feedback animations for the system widgets</li> |
| 27 | <li>Activity transition animations</li> |
| 28 | </ul> |
| 29 | |
| 30 | <p>You can customize the look of the material theme |
| 31 | according to your brand identity with a color palette you control. You can tint the action bar and |
| 32 | the status bar using theme attributes, as shown in <a href="#fig3">Figure 3</a>.</p> |
| 33 | |
| 34 | <p>The system widgets have a new design and touch feedback animations. You can customize the |
| 35 | color palette, the touch feedback animations, and the activity transitions for your app.</p> |
| 36 | |
| 37 | <p>The material theme is defined as:</p> |
| 38 | |
| 39 | <ul> |
| 40 | <li><code>@android:style/Theme.Material</code> (dark version)</li> |
| 41 | <li><code>@android:style/Theme.Material.Light</code> (light version)</li> |
| 42 | <li><code>@android:style/Theme.Material.Light.DarkActionBar</code></li> |
| 43 | </ul> |
| 44 | |
| 45 | <p>For a list of material styles that you can use, see the API reference for |
| 46 | {@link android.R.style R.style}.</p> |
| 47 | |
| 48 | <!-- two columns, dark/light material theme example --> |
| 49 | <div style="width:700px;margin-top:25px;margin-bottom:10px"> |
| 50 | <div style="float:left;width:250px;margin-left:40px;margin-right:60px;"> |
| 51 | <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238"> |
| 52 | <div style="width:170px;margin:0 auto"> |
| 53 | <p style="margin-top:8px;font-size:12px"><strong>Figure 1</strong>. Dark material theme</p> |
| 54 | </div> |
| 55 | </div> |
| 56 | <div style="float:left;width:250px;margin-right:0px;"> |
| 57 | <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238"> |
| 58 | <div style="width:170px;margin:0 auto"> |
| 59 | <p style="margin-top:8px;font-size:12px"><strong>Figure 2</strong>. Light material theme</p> |
| 60 | </div> |
| 61 | </div> |
| 62 | <br style="clear:left"> |
| 63 | </div> |
| 64 | |
| 65 | <p class="note"> |
| 66 | <strong>Note:</strong> The material theme is only available in Android 5.0 (API level 21) and |
| 67 | above. The <a href="{@docRoot}tools/support-library/features.html#v7">v7 Support Libraries</a> |
| 68 | provide themes with material design styles for some widgets and support for customizing the color |
| 69 | palette. For more information, see |
| 70 | <a href="{@docRoot}training/material/compatibility.html">Maintaining Compatibility</a>. |
| 71 | </p> |
| 72 | |
| 73 | |
| 74 | <h2 id="ColorPalette">Customize the Color Palette</h2> |
| 75 | |
| 76 | <p style="margin-bottom:30px">To customize the theme's base colors to fit your brand, define |
| 77 | your custom colors using theme attributes when you inherit from the material theme:</p> |
| 78 | |
| 79 | <pre> |
| 80 | <resources> |
| 81 | <!-- inherit from the material theme --> |
| 82 | <style name="AppTheme" parent="android:Theme.Material"> |
| 83 | <!-- Main theme colors --> |
| 84 | <!-- your app branding color for the app bar --> |
| 85 | <item name="android:colorPrimary">@color/primary</item> |
| 86 | <!-- darker variant for the status bar and contextual app bars --> |
| 87 | <item name="android:colorPrimaryDark">@color/primary_dark</item> |
| 88 | <!-- theme UI controls like checkboxes and text fields --> |
| 89 | <item name="android:colorAccent">@color/accent</item> |
| 90 | </style> |
| 91 | </resources> |
| 92 | </pre> |
| 93 | |
| 94 | <div style="float:right;margin-left:25px;margin-top:20px;margin-bottom:10px" id="fig3"> |
| 95 | <img src="{@docRoot}training/material/images/ThemeColors.png" width="250" height="445"/> |
| 96 | <p class="img-caption" style="margin-bottom:0px"> |
| 97 | <strong>Figure 3.</strong> Customizing the material theme.</p> |
| 98 | </div> |
| 99 | |
| 100 | |
| 101 | <h2 id="StatusBar">Customize the Status Bar</h2> |
| 102 | |
| 103 | <p>The material theme lets you easily customize the status bar, so you can specify a |
| 104 | color that fits your brand and provides enough contrast to show the white status icons. To |
| 105 | set a custom color for the status bar, use the <code>android:statusBarColor</code> attribute when |
| 106 | you extend the material theme. By default, <code>android:statusBarColor</code> inherits the |
| 107 | value of <code>android:colorPrimaryDark</code>.</p> |
| 108 | |
| 109 | <p>You can also draw behind the status bar yourself. For example, if you want to show |
| 110 | the status bar transparently over a photo, with a subtle dark gradient to ensure the white |
| 111 | status icons are visible. To do so, set the <code>android:statusBarColor</code> attribute to |
| 112 | <code>@android:color/transparent</code> and adjust the window flags as required. You can |
| 113 | also use the {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} method for |
| 114 | animations or fading.</p> |
| 115 | |
| 116 | <p class="note"> |
| 117 | <strong>Note:</strong> The status bar should almost always have a clear delineation from the |
| 118 | primary toolbar, except for cases where you show edge-to-edge rich imagery or media content behind |
| 119 | these bars and when you use a gradient to ensure that the icons are still visible. |
| 120 | </p> |
| 121 | |
| 122 | <p>When you customize the navigation and status bars, either make them both transparent or modify |
| 123 | only the status bar. The navigation bar should remain black in all other cases.</p> |
| 124 | |
| 125 | |
| 126 | <h2 id="Inheritance">Theme Individual Views</h3> |
| 127 | |
| 128 | <p>Elements in XML layout definitions can specify the <code>android:theme</code> attribute, |
| 129 | which references a theme resource. This attribute modifies the theme for the element and any |
| 130 | child elements, which is useful for altering theme color palettes in a specific portion |
| 131 | of an interface.</p> |