pdk templates for docs

Change-Id: Ic1f780c0a8b62bf6e989dc4e1876e24e4cb6c179
This commit is contained in:
Robert Ly 2012-06-08 12:21:15 -07:00 committed by Android (Google) Code Review
parent e1402c5740
commit fd1eb13b33
76 changed files with 3552 additions and 519 deletions

View File

@ -16,59 +16,6 @@ embed,object,applet {
border: 0;
}
.rebox {
background:#daf3fc;
margin-bottom:1.5em;
-moz-border-radius:5px;
-webkit-border-radius:5px;
}
.rebox.lil p img {
display:block;
margin-bottom:2em;
}
.rebox .p {
padding:1.5em;
line-height:1.25em;
}
.p-r {
padding-right:1.5em;
}
.rebox h2, .rebox h3 {
font-size:16px;
color:#fff;
display:block;
background:url('/assets/images/rebox-gradient.gif') no-repeat center bottom #95c0d0;
padding:.5em .5em .5em .75em;
-moz-border-radius-topright:5px;
-moz-border-radius-topleft:5px;
-webkit-border-top-right-radius:5px;
-webkit-border-top-left-radius:5px;
}
.rebox.lil {
}
.rebox.lil img {
float:left;
margin:0 1em 0 0;
padding:0 0 3em 0;
}
.rebox.green {
background:#d4e9a9;
}
.rebox.green h2, .rebox.green h3 {
background:url('images/rebox-gradient-green.gif') no-repeat center bottom #aaca46;
font-weight:bold;
}
.rebox.green a:link, .rebox.green a:visited {
color:#360;
}
/* BASICS */
html, body {
@ -81,38 +28,38 @@ body {
color:#000;
font-size:13px;
color:#333;
background-image:url(images/bg_fade.jpg);
background-image:url(images/bg_fade.jpg);
background-repeat:repeat-x;
}
a, a code {
a, a code {
color:#006699;
}
}
a:active,
a:active code {
a:active code {
color:#f00;
}
a:visited,
a:visited code {
a:visited code {
color:#006699;
}
input, select,
textarea, option {
textarea, option, label {
font-family:inherit;
font-size:inherit;
padding:0;
margin:0;
vertical-align:middle;
}
option {
padding:0 4px;
}
p {
p, form {
padding:0;
margin:0 0 1em;
}
@ -160,7 +107,7 @@ dl {
padding:0;
}
dt {
dt {
margin:0;
padding:0;
}
@ -182,7 +129,9 @@ li pre, li table, li img {
margin:.5em 0 0 1em;
}
dd pre, dd table, dd img {
dd pre,
#jd-content dd table,
#jd-content dd img {
margin:1em 0 0 1em;
}
@ -228,6 +177,10 @@ th {
background-color:#dee8f1;
}
td > p:last-child {
margin:0;
}
hr.blue {
background-color:#DDF0F2;
border:none;
@ -235,10 +188,16 @@ hr.blue {
margin:20px 0 10px;
}
blockquote {
margin: 0 0 1em 1em;
padding: 0 4em 0 1em;
border-left:2px solid #eee;
}
/* LAYOUT */
#body-content {
/* "Preliminary" watermark for preview releases and interim builds.
background:transparent url(images/preliminary.png) repeat scroll 0 0; */
background:transparent url(images/preliminary.png) repeat scroll 0 0; */
margin:0;
position:relative;
width:100%;
@ -248,7 +207,7 @@ hr.blue {
height: 114px;
position:relative;
z-index:100;
min-width:576px;
min-width:675px; /* min width for the tabs, before they wrap */
padding:0 10px;
border-bottom:3px solid #94b922;
}
@ -259,7 +218,6 @@ hr.blue {
#headerLeft img{
height:50px;
width:349px;
}
#headerRight {
@ -270,9 +228,10 @@ hr.blue {
}
/* Tabs in the header */
#header ul {
list-style: none;
margin: 7px 0 0;
margin: 7px 0 0;
padding: 0;
height: 29px;
}
@ -313,14 +272,13 @@ hr.blue {
display:none;
}
/* TAB HIGHLIGHTING */
/* tab highlighting */
.home #home-link a,
.community #community-link a,
.porting #porting-link a,
.source #source-link a,
.about #about-link a,
.downloads #downloads-link a,
.compatibility #compatibility-link a,
.guide #guide-link a,
.reference #reference-link a,
.sdk #sdk-link a,
.resources #resources-link a,
.videos #videos-link a {
background-image: url(images/bg_images_sprite.png);
background-position: 0 0;
@ -331,14 +289,10 @@ hr.blue {
}
.home #home-link a:hover,
.community #community-link a:hover,
.home #home-link a:hover,
.community #community-link a:hover,
.porting #porting-link a:hover,
.source #source-link a:hover,
.about #about-link a:hover,
.downloads #downloads-link a:hover,
.compatibility #compatibility-link a:hover,
.guide #guide-link a:hover,
.reference #reference-link a:hover,
.sdk #sdk-link a:hover,
.resources #resources-link a:hover,
.videos #videos-link a:hover {
background-image: url(images/bg_images_sprite.png);
background-position: 0 0;
@ -368,7 +322,7 @@ hr.blue {
margin:15px 10px 0 0;
}
/* main */
/* MAIN BODY */
#mainBodyFluid {
margin: 20px 10px;
@ -391,7 +345,7 @@ hr.blue {
}
#mainBodyFixed h2,
#mainBodyFluid h2 {
#mainBodyFluid h2 {
color:#336666;
font-size:1.25em;
margin: 0;
@ -399,7 +353,7 @@ hr.blue {
}
#mainBodyFixed h1,
#mainBodyFluid h1 {
#mainBodyFluid h1 {
color:#435A6E;
font-size:1.7em;
margin: 1em 0;
@ -407,7 +361,7 @@ hr.blue {
#mainBodyFixed .green,
#mainBodyFluid .green,
#jd-content .green {
#jd-content .green {
color:#7BB026;
background-color:none;
}
@ -415,13 +369,13 @@ hr.blue {
#mainBodyLeft {
float: left;
width: 600px;
margin-right: 20px;
margin-right: 20px;
color: #333;
position:relative;
}
div.indent {
margin-left: 40px;
margin-left: 40px;
margin-right: 70px;
}
@ -464,6 +418,10 @@ div.indent {
text-align:left;
}
#mainBodyRight td p {
margin:0 0 1em 0;
}
#mainBodyRight .blueBorderBox {
border:5px solid #ddf0f2;
padding:18px 18px 18px 18px;
@ -493,7 +451,8 @@ div.indent {
clear: both;
}
/* Footer */
/* FOOTER */
#footer {
float: left;
width:90%;
@ -521,99 +480,8 @@ div.indent {
color:#006699;
}
#homeBottom td {
border:0px solid #666;
padding: 8px 18px 8px 18px;
}
#homeBottom table {
width: 100%;
}
#homeBottom {
padding: 0px 0px 0px 0px;
float: left;
width: 585px;
height: 165px;
background-image:url(images/home/bg_home_bottom.jpg);
background-repeat: no-repeat;
}
.groupTable {
width: 100%;
}
.groupTable th {
padding: 10px;
color: #ffffff;
background-color: #6D8293;
border: 2px solid #fff;
}
.groupTable td {
padding: 10px;
color: #333333;
background-color: #d9d9d9;
border: 2px solid #fff;
}
.groupTable .evenRow td {
background-color: #ededed;
}
span.BigBlue {
color:#336666;
font-size:1.25em;
margin: 0em 0em 0em 0em;
padding-bottom:.5em;
font-weight: bold;
}
span.emBlue {
color: #336666;
font-style:italic;
}
.pageTable {
width: 95%;
border: none;
}
.pageTable img {
vertical-align: bottom;
}
.pageTable td {
border: none;
}
.pageTable td.leftNav {
width: 100px;
}
.greenBox {
margin: 10px 30px 10px 30px;
padding: 10px 20px 10px 20px;
background-color: #EBF3DB;
width: 75%;
}
.blueBox {
margin: 10px 30px 10px 30px;
padding: 10px 20px 10px 20px;
background-color: #DDF0F2;
width: 75%;
}
.blueHR {
margin: 10px 30px 10px 30px;
height: 5px;
background-color: #DDF0F2;
width: 75%;
}
/* SEARCH FILTER */
#search_autocomplete {
color:#aaa;
}
@ -658,7 +526,7 @@ vertical-align: bottom;
padding-right: 6px;
padding-top: 1px;
padding-bottom: 1px;
font-size: .8em;
font-size: 0.81em;
border: none;
margin: 0;
line-height: 1.05em;
@ -724,7 +592,7 @@ table.gsc-branding,
.gsc-cursor-box .gsc-cursor div.gsc-cursor-page,
.gsc-cursor-box .gsc-trailing-more-results a.gsc-trailing-more-results,
#leftSearchControl a,
#leftSearchControl a,
#leftSearchControl a b {
color:#006699;
}
@ -780,6 +648,7 @@ td.gsc-search-button {
#doc-content .gsc-tabHeader {
padding: 3px 6px;
position:relative;
width:auto;
}
#doc-content .gsc-tabHeader.gsc-tabhActive {
@ -800,7 +669,7 @@ td.gsc-search-button {
padding: 0px 0px 0px 0px;
float: left;
width: 584px;
height: 580px;
height: 627px;
position:relative;
}
@ -810,7 +679,7 @@ td.gsc-search-button {
#homeTitle {
padding:15px 15px 0;
height:30px;
height:30px;
}
#homeTitle h2 {
@ -845,8 +714,8 @@ td.gsc-search-button {
}
#carouselMain {
background: url(images/home/bg_home_carousel_board.png) 0 0 no-repeat;
height:auto;
background: url(images/home/bg_home_carousel_board.png) 0 0 no-repeat;
height:auto;
padding: 25px 21px 0;
overflow:hidden;
position:relative;
@ -858,19 +727,19 @@ td.gsc-search-button {
}
#carouselMain .bulletinDesc h3 {
margin:0;
padding:0;
margin:0;
padding:0;
}
#carouselMain .bulletinDesc p {
margin:0;
padding:0.7em 0 0;
margin:0;
padding:0.7em 0 0;
}
#carouselWheel {
background: url(images/home/bg_home_carousel_wheel.png) 0 0 no-repeat;
padding-top:40px;
height:150px;
background: url(images/home/bg_home_carousel_wheel.png) 0 0 no-repeat;
padding-top:40px;
height:150px;
}
.clearer { clear:both; }
@ -889,17 +758,17 @@ a#arrow-right {
margin:35px 10px 0 0;
}
a.arrow-left-off,
a#arrow-left.arrow-left-off:hover {
a#arrow-left.arrow-left-off:hover {
background-position:0 0;
}
a.arrow-right-off,
a#arrow-right.arrow-right-off:hover {
a.arrow-right-off,
a#arrow-right.arrow-right-off:hover {
background-position:-42px 0;
}
a#arrow-left:hover {
a#arrow-left:hover {
background-position:0 -42px;
}
a#arrow-right:hover {
a#arrow-right:hover {
background-position:-42px -42px;
}
a.arrow-left-on {
@ -919,17 +788,17 @@ a.arrow-left-off {
width:100%;
}
div#list-clip {
height:110px;
div#list-clip {
height:110px;
width:438px;
overflow:hidden;
position:relative;
float:left;
overflow:hidden;
position:relative;
float:left;
}
div#app-list {
left:0;
z-index:1;
div#app-list {
left:0;
z-index:1;
position:absolute;
margin:11px 0 0;
_margin-top:13px;
@ -958,14 +827,14 @@ div#app-list {
top:-4px;
}
#app-list img {
#app-list img {
width:90px;
height:70px;
margin:0;
}
#app-list a.selected,
#app-list a:active.selected,
#app-list a.selected,
#app-list a:active.selected,
#app-list a:hover.selected {
background:#A4C639;
color:#fff;
@ -973,12 +842,12 @@ div#app-list {
text-decoration:none;
}
#app-list a:hover,
#app-list a:hover,
#app-list a:active {
background:#ff9900;
}
#app-list a:hover span,
#app-list a:hover span,
#app-list a:active span {
text-decoration:underline;
}
@ -992,7 +861,7 @@ div#app-list {
/*IE6*/
* html #app-list a { zoom: 1; margin:0 24px 0 15px;}
* html #list-clip {
* html #list-clip {
width:430px !important;
}
@ -1270,6 +1139,7 @@ ul.videoPreviews p.toggle a:hover {
#mainBodyRight ul.videoPreviews h3 {
padding:0;
margin:0;
font-size:100%;
}
#mainBodyRight ul.videoPreviews a {
@ -1287,11 +1157,40 @@ ul.videoPreviews p.toggle a:hover {
}
#mainBodyRight ul.videoPreviews p {
line-height:1.2em;
line-height:1.2em;
padding:0;
margin:4px 0 0 130px;
}
#mainBodyRight ul.videoPreviews img {
margin-top:5px;
margin-top:5px;
}
/* Pretty printing styles. Used with prettify.js. */
.str { color: #080; }
.kwd { color: #008; }
.com { color: #800; }
.typ { color: #606; }
.lit { color: #066; }
.pun { color: #660; }
.pln { color: #000; }
dl.tag-list dt code,
.tag { color: #008; }
dl.atn-list dt code,
.atn { color: #828; }
.atv { color: #080; }
.dec { color: #606; }
@media print {
.str { color: #060; }
.kwd { color: #006; font-weight: bold; }
.com { color: #600; font-style: italic; }
.typ { color: #404; font-weight: bold; }
.lit { color: #044; }
.pun { color: #440; }
.pln { color: #000; }
.tag { color: #006; font-weight: bold; }
.atn { color: #404; }
.atv { color: #060; }
}

View File

@ -34,10 +34,6 @@
font-size:12px;
}
#side-nav.not-resizable {
background:url('images/sidenav-rule.png') no-repeat 243px 0;
}
#resize-packages-nav {
/* keeps the resize handle below the h-scroll handle */
height:270px;
@ -65,18 +61,19 @@
}
#side-nav ul ul {
margin: .35em 0 0 0;
margin: .5em 0 0 0;
padding: 0;
}
#side-nav li {
padding:0;
line-height:16px;
white-space:nowrap;
padding:1px 0 1px 0;
zoom:1;
}
#side-nav li span.heading,
#side-nav li h2 {
display:block;
font-size:12px;
font-weight: bold;
margin:.5em 0 0 0;
@ -84,6 +81,7 @@
}
#side-nav li a {
display: inline-block; /* needed to apply padding to line-wraps */
text-decoration:none;
padding: 0 0 0 18px;
zoom:1;
@ -385,6 +383,21 @@ div.api-level a {
color:#999;
}
div#deprecatedSticker {
display:none;
z-index:99;
position:fixed;
right:15px;
top:114px;
margin:0;
padding:1em;
background:#FFF;
border:1px solid #dddd00;
box-shadow:-5px 5px 10px #ccc;
-moz-box-shadow:-5px 5px 10px #ccc;
-webkit-box-shadow:-5px 5px 10px #ccc;
}
div#naMessage {
display:none;
width:555px;
@ -393,13 +406,16 @@ div#naMessage {
}
div#naMessage div {
z-index:99;
width:450px;
position:fixed;
margin:50px 0;
padding:4em 4em 3em;
background:#FFF;
background:rgba(255,255,255,0.7);
border:1px solid #dddd00;
box-shadow:-10px 10px 40px #888;
-moz-box-shadow:-10px 10px 40px #888;
-webkit-box-shadow:-10px 10px 40px #888;
}
/* IE6 can't position fixed */
* html div#naMessage div { position:absolute; }
@ -521,16 +537,24 @@ hr {
}
#jd-content h3 {
font-size:1.2em;
color:#222;
padding: .75em 0 .65em 0;
margin:0;
font-size:1.3em;
color:#3a3a3a;
padding: 0;
margin: 1.5em 0 .65em 0;
}
#jd-content h4 {
font-size:1.1em;
margin-bottom:.5em;
color:#222;
color:#3a3a3a;
padding: 0;
margin: 1.25em 0 .65em 0;
}
#jd-content h5 {
font-size:1.0em;
color:#3a3a3a;
padding: 0;
margin: 1em 0 .65em 0;
}
#jd-content .small-header {
@ -553,7 +577,7 @@ hr {
#jd-content li img,
#jd-content dd img {
margin:.5em 0 0 1em;
margin:.5em 0 .5em 1em;
}
.nolist {
@ -682,6 +706,18 @@ h5.jd-tagtitle {
width:auto;
}
div.design-announce {
border-top:1px solid #33B5E5;
border-bottom:1px solid #33B5E5;
padding:5px 10px 10px 55px;
margin:2em 0;
background:url('images/icon_design.png') 5px 13px no-repeat;
}
div.design-announce p {
margin: .5em 0 0 0;
}
div.special {
padding: .5em 1em 1em 1em;
margin: 0 0 1em;
@ -692,22 +728,6 @@ div.special {
-webkit-border-radius:5px;
}
.toggle-content-toggleme {
display:none;
}
.toggle-content-button {
font-size:.9em;
line-height:.9em;
text-decoration:none;
position:relative;
top:5px;
}
.toggle-content-button:hover {
text-decoration:underline;
}
div.special p {
margin: .5em 0 0 0;
}
@ -730,39 +750,62 @@ div.special ol li {
padding:0;
}
p.note, p.caution, p.warning {
#jd-content div.special.reference h2,
#jd-content div.special.reference h3,
#jd-content div.special.reference h4 {
color:#000;
font-size:1em;
border:none;
font-weight:bold;
margin:.5em 0;
padding:0;
}
p.note, div.note,
p.caution, div.caution,
p.warning, div.warning {
margin: 1em;
padding: 0 0 0 .5em;
border-left: 4px solid;
}
p.special-note {
p.special-note,
div.special-note {
background-color:#EBF3DB;
padding:10px 20px;
margin:0 0 1em;
}
p.note {
p.note,
div.note {
border-color: #99aacc;
}
p.warning {
p.warning,
div.warning {
border-color: #aa0033;
}
p.caution {
p.caution,
div.caution {
border-color: #ffcf00;
}
p.warning b, p.warning strong {
font-weight: bold;
}
li p.note, li p.warning {
li .note,
li .caution,
li .warning {
margin: .5em 0 0 0;
padding: .2em .5em .2em .9em;
}
/* Makes sure the first paragraph does not add top-whitespace within the box*/
li .note>p:first-child,
li .caution>p:first-child,
li .warning>p:first-child {
margin-top:0;
padding-top:0;
}
dl.xml dt {
font-variant:small-caps;
font-size:1.2em;
@ -791,13 +834,19 @@ ul.no-style {
padding-left:1em;
}
.new {
.new,
.new-child {
font-size: .78em;
font-weight: bold;
color: #ff3d3d;
text-decoration: none;
vertical-align:top;
line-height:.9em;
white-space:nowrap;
}
.toggle-list.open .new-child {
display:none;
}
pre.classic {
@ -832,6 +881,27 @@ p.table-caption {
margin: 0 0 0.5em 1em; /* matches default table left-margin */
}
/* toggle for misc content (such as long sample code)
see toggleContent() script in android-developer-docs.js */
.toggle-content.closed .toggle-content-toggleme {
display:none;
}
.toggle-content a[href="#"] {
text-decoration:none;
color:inherit;
}
.toggle-content-toggleme {
padding-bottom:1px; /* fixes animation bounce due to margins */
}
#jd-content .toggle-content img.toggle-content-img {
margin:0;
}
/* BEGIN quickview sidebar element styles */
#qv-wrapper {
@ -894,20 +964,6 @@ p.table-caption {
padding:0 10px;
}
#qv-extra #rule {
padding: 0 10px;
margin: 0;
}
#qv-sub-rule {
padding: 6px 20px;
margin: 0;
}
#qv-sub-rule p {
margin: 0;
}
#jd-content #qv h2 {
font-size:1.05em;
font-weight:bold;
@ -920,6 +976,21 @@ p.table-caption {
z-index:1;
}
#qv-extra #rule {
padding: 0 10px;
margin: 0;
}
#qv-sub-rule {
padding: 5px 15px 10px;
margin: 0;
}
#jd-content
#qv-sub-rule h2 {
margin: 0 0 .5em 0;
}
/* END quickview sidebar element styles */
/* Begin sidebox sidebar element styles */
@ -943,7 +1014,7 @@ p.table-caption {
}
.sidebox p {
margin-bottom: .25em;
margin-bottom: .75em;
}
.sidebox ul {
@ -978,6 +1049,142 @@ padding:0 0 0 0em;
/* End sidebox sidebar element styles */
/* BEGIN developer training bar styles */
div#tb-wrapper {
float: right;
clear:right;
width:380px; /* +25px padding = 405 */
background-color:#fff;
margin:0 0 2px 0;
padding:0 0 20px 25px;
}
div#tb {
margin:0;
padding:0 15px;
width:350px; /* +15px padding = 380 */
font-size:.9em;
background:#e9e9e9;
border:1px solid #aaa;
border-radius:5px;
-moz-border-radius:5px;
-webkit-border-radius:5px;
overflow:auto;
}
div#tb h2 {
font-size:1.3em;
font-weight:bold;
margin:1em 0;
padding:0;
background-color:transparent;
border:none;
clear:both;
}
div.download-box a.button {
color: #069;
font-size:1.1em;
font-weight:bold;
text-decoration:none;
height:27px;
line-height:27px;
text-align:center;
padding:5px 8px;
background-color: #fff;
border: 1px solid #aaa;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 2px;
}
div.download-box a.button:hover {
border-color: #09C;
background-color: #4CADCB;
background-image: -webkit-gradient(linear,left top,left bottom,from(#5dbcd9),to(#4cadcb));
background-image: -webkit-linear-gradient(top,#5dbcd9,#4cadcb);
background-image: -moz-linear-gradient(top,#5dbcd9,#4cadcb);
background-image: -ms-linear-gradient(top,#5dbcd9,#4cadcb);
background-image: -o-linear-gradient(top,#5dbcd9,#4cadcb);
background-image: linear-gradient(top,#5dbcd9,#4cadcb);
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#5dbcd9',EndColorStr='#4cadcb');
color: #fff;
}
div.download-box a.button:active {
background-color: #1E799A;
background-image: none;
border-color: #30B7E6;
}
div.download-box p.filename {
font-size:0.85em;
color:#888;
margin:4px 0 1em 10px;
}
/* End developer training bar */
/* Training nav bar (previous/next) */
div.training-nav-top {
float: right;
width:380px; /* +25px padding = 405 */
margin:-58px 0 0 0;
padding:0 0 20px 25px;
}
div.training-nav-bottom {
padding:1px; /* for weird FF bug (scrollbar appears) */
margin:3em 0;
overflow:auto;
}
div.training-nav-button-next a,
div.training-nav-button-previous a {
display:block;
width:160px;
height:55px;
padding:4px 7px;
border:1px solid #aaa;
border-radius:5px;
-moz-border-radius:5px;
-webkit-border-radius:5px;
text-decoration:none;
font-weight:bold;
}
div.training-nav-button-next a:hover,
div.training-nav-button-previous a:hover {
border:1px solid #069; /* match link color */
}
div.training-nav-button-next a:active,
div.training-nav-button-previous a:active {
border:1px solid #f00; /* match link color */
}
div.training-nav-button-previous {
float:left;
text-align:left;
}
div.training-nav-button-next {
float:right;
text-align:right;
}
span.training-nav-button-title {
display:block;
font-size:.85em;
font-weight:normal;
line-height:1.3em;
margin:.5em 0 0;
}
/* End training nav bar */
/* BEGIN image and caption styles (originally for UI Guidelines docs) */
table.image-caption {
@ -1054,7 +1261,7 @@ ol.toc li ol {
margin: 0;
padding: 0;
}
ol.toc li li {
padding: 0;
margin: 0 0 0 1em;
@ -1181,6 +1388,76 @@ table.download th {
float: right;
}
/* 200px */
.g-tpl-200 .g-unit,
.g-unit .g-tpl-200 .g-unit,
.g-unit .g-unit .g-tpl-200 .g-unit {
display: block;
margin: 0 0 0 200px;
width: auto;
float: none;
}
.g-unit .g-unit .g-tpl-200 .g-first,
.g-unit .g-tpl-200 .g-first,
.g-tpl-200 .g-first {
display: block;
margin: 0;
width: 200px;
float: left;
}
/* 200px alt */
.g-tpl-200-alt .g-unit,
.g-unit .g-tpl-200-alt .g-unit,
.g-unit .g-unit .g-tpl-200-alt .g-unit {
display: block;
margin: 0 200px 0 0;
width: auto;
float: none;
}
.g-unit .g-unit .g-tpl-200-alt .g-first,
.g-unit .g-tpl-200-alt .g-first,
.g-tpl-200-alt .g-first {
display: block;
margin: 0;
width: 200px;
float: right;
}
/* 190px */
.g-tpl-190 .g-unit,
.g-unit .g-tpl-190 .g-unit,
.g-unit .g-unit .g-tpl-190 .g-unit {
display: block;
margin: 0 0 0 190px;
width: auto;
float: none;
}
.g-unit .g-unit .g-tpl-190 .g-first,
.g-unit .g-tpl-190 .g-first,
.g-tpl-190 .g-first {
display: block;
margin: 0;
width: 190px;
float: left;
}
/* 190px alt */
.g-tpl-190-alt .g-unit,
.g-unit .g-tpl-190-alt .g-unit,
.g-unit .g-unit .g-tpl-190-alt .g-unit {
display: block;
margin: 0 190px 0 0;
width: auto;
float: none;
}
.g-unit .g-unit .g-tpl-190-alt .g-first,
.g-unit .g-tpl-190-alt .g-first,
.g-tpl-190-alt .g-first {
display: block;
margin: 0;
width: 190px;
float: right;
}
/* 180px */
.g-tpl-180 .g-unit,
.g-unit .g-tpl-180 .g-unit,
@ -1216,7 +1493,7 @@ table.download th {
float: right;
}
/* JQUERY RESIZABLE STYLES */
.ui-resizable { position: relative; }
.ui-resizable-handle { position: absolute; display: none; font-size: 0.1px; z-index:1; }
@ -1252,7 +1529,7 @@ body .ui-resizable-autohide .ui-resizable-handle { display: none; }
#body-content {
position:inherit;
}
#doc-content {
margin-left:0 !important;
height:auto !important;

View File

@ -10,7 +10,9 @@ var NAV_PREF_PANELS = "panels";
var nav_pref;
var toRoot;
var isMobile = false; // true if mobile, so we can adjust some layout
var isIE6 = false; // true if IE6
// TODO: use $(document).ready instead
function addLoadEvent(newfun) {
var current = window.onload;
if (typeof window.onload != 'function') {
@ -23,18 +25,26 @@ function addLoadEvent(newfun) {
}
}
var agent = navigator['userAgent'];
if ((agent.indexOf("Mobile") != -1) ||
(agent.indexOf("BlackBerry") != -1) ||
(agent.indexOf("Mini") != -1)) {
var agent = navigator['userAgent'].toLowerCase();
// If a mobile phone, set flag and do mobile setup
if ((agent.indexOf("mobile") != -1) || // android, iphone, ipod
(agent.indexOf("blackberry") != -1) ||
(agent.indexOf("webos") != -1) ||
(agent.indexOf("mini") != -1)) { // opera mini browsers
isMobile = true;
addLoadEvent(mobileSetup);
// If not a mobile browser, set the onresize event for IE6, and others
} else if (agent.indexOf("msie 6") != -1) {
isIE6 = true;
addLoadEvent(function() {
window.onresize = resizeAll;
});
} else {
addLoadEvent(function() {
window.onresize = resizeHeight;
});
}
addLoadEvent(function() {
window.onresize = resizeAll;
});
function mobileSetup() {
$("body").css({'overflow':'auto'});
$("html").css({'overflow':'auto'});
@ -53,6 +63,11 @@ addLoadEvent( function() {
document.getElementsByTagName("head")[0].appendChild(lists);
} );
addLoadEvent( function() {
$("pre:not(.no-pretty-print)").addClass("prettyprint");
prettyPrint();
} );
function setToRoot(root) {
toRoot = root;
// note: toRoot also used by carousel.js
@ -60,8 +75,12 @@ function setToRoot(root) {
function restoreWidth(navWidth) {
var windowWidth = $(window).width() + "px";
content.css({marginLeft:parseInt(navWidth) + 6 + "px", //account for 6px-wide handle-bar
width:parseInt(windowWidth) - parseInt(navWidth) - 6 + "px"});
content.css({marginLeft:parseInt(navWidth) + 6 + "px"}); //account for 6px-wide handle-bar
if (isIE6) {
content.css({width:parseInt(windowWidth) - parseInt(navWidth) - 6 + "px"}); // necessary in order for scrollbars to be visible
}
sidenav.css({width:navWidth});
resizePackagesNav.css({width:navWidth});
classesNav.css({width:navWidth});
@ -99,15 +118,15 @@ function readCookie(cookie) {
}
function writeCookie(cookie, val, section, expiration) {
if (!val) return;
if (val==undefined) return;
section = section == null ? "_" : "_"+section+"_";
if (expiration == null) {
var date = new Date();
date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week
expiration = date.toGMTString();
}
document.cookie = cookie_namespace+section+cookie+"="+val+"; expires="+expiration+"; path=/";
}
document.cookie = cookie_namespace + section + cookie + "=" + val + "; expires=" + expiration+"; path=/";
}
function init() {
$("#side-nav").css({position:"absolute",left:0});
@ -117,20 +136,26 @@ function init() {
sidenav = $("#side-nav");
devdocNav = $("#devdoc-nav");
var cookiePath = "";
if (location.href.indexOf("/reference/") != -1) {
var cookiePath = "reference_";
cookiePath = "reference_";
} else if (location.href.indexOf("/guide/") != -1) {
var cookiePath = "guide_";
cookiePath = "guide_";
} else if (location.href.indexOf("/sdk/") != -1) {
cookiePath = "sdk_";
} else if ((location.href.indexOf("/resources/") != -1) ||
(location.href.indexOf("/training/") != -1)) {
cookiePath = "resources_";
}
if (!isMobile) {
$("#resize-packages-nav").resizable({handles: "s", resize: function(e, ui) { resizeHeight(); } });
$(".side-nav-resizable").resizable({handles: "e", resize: function(e, ui) { resizeWidth(); } });
$("#resize-packages-nav").resizable({handles: "s", resize: function(e, ui) { resizePackagesHeight(); } });
$("#side-nav").resizable({handles: "e", resize: function(e, ui) { resizeWidth(); } });
var cookieWidth = readCookie(cookiePath+'width');
var cookieHeight = readCookie(cookiePath+'height');
if (cookieWidth) {
restoreWidth(cookieWidth);
} else if ($(".side-nav-resizable").length) {
} else if ($("#side-nav").length) {
resizeWidth();
}
if (cookieHeight) {
@ -140,81 +165,224 @@ function init() {
}
}
if (devdocNav.length) { // only dev guide and sdk
highlightNav(location.href);
if (devdocNav.length) { // only dev guide, resources, and sdk
tryPopulateResourcesNav();
highlightNav(location.href);
}
}
function tryPopulateResourcesNav() {
var sampleList = $('#devdoc-nav-sample-list');
var articleList = $('#devdoc-nav-article-list');
var tutorialList = $('#devdoc-nav-tutorial-list');
var topicList = $('#devdoc-nav-topic-list');
if (!topicList.length || !ANDROID_TAGS || !ANDROID_RESOURCES)
return;
var topics = [];
for (var topic in ANDROID_TAGS['topic']) {
topics.push({name:topic,title:ANDROID_TAGS['topic'][topic]});
}
topics.sort(function(x,y){ return (x.title < y.title) ? -1 : 1; });
for (var i = 0; i < topics.length; i++) {
topicList.append(
$('<li>').append(
$('<a>')
.attr('href', toRoot + "resources/browser.html?tag=" + topics[i].name)
.append($('<span>')
.addClass('en')
.html(topics[i].title)
)
)
);
}
var _renderResourceList = function(tag, listNode) {
var resources = [];
var tags;
var resource;
var i, j;
for (i = 0; i < ANDROID_RESOURCES.length; i++) {
resource = ANDROID_RESOURCES[i];
tags = resource.tags || [];
var hasTag = false;
for (j = 0; j < tags.length; j++)
if (tags[j] == tag) {
hasTag = true;
break;
}
if (!hasTag)
continue;
resources.push(resource);
}
//resources.sort(function(x,y){ return (x.title.en < y.title.en) ? -1 : 1; });
for (i = 0; i < resources.length; i++) {
resource = resources[i];
var listItemNode = $('<li>').append(
$('<a>')
.attr('href', toRoot + "resources/" + resource.path)
.append($('<span>')
.addClass('en')
.html(resource.title.en)
)
);
tags = resource.tags || [];
for (j = 0; j < tags.length; j++) {
if (tags[j] == 'new') {
listItemNode.get(0).innerHTML += '&nbsp;<span class="new">new!</span>';
break;
} else if (tags[j] == 'updated') {
listItemNode.get(0).innerHTML += '&nbsp;<span class="new">updated!</span>';
break;
}
}
listNode.append(listItemNode);
}
};
_renderResourceList('sample', sampleList);
_renderResourceList('article', articleList);
_renderResourceList('tutorial', tutorialList);
}
function highlightNav(fullPageName) {
fullPageName = fullPageName.replace(/^https?:\/\//, '');
var lastSlashPos = fullPageName.lastIndexOf("/");
var firstSlashPos = fullPageName.indexOf("/");
var firstSlashPos;
if (fullPageName.indexOf("/guide/") != -1) {
firstSlashPos = fullPageName.indexOf("/guide/");
} else if (fullPageName.indexOf("/sdk/") != -1) {
firstSlashPos = fullPageName.indexOf("/sdk/");
} else if (fullPageName.indexOf("/resources/") != -1) {
firstSlashPos = fullPageName.indexOf("/resources/");
} else if (fullPageName.indexOf("/training/") != -1) {
firstSlashPos = fullPageName.indexOf("/training/");
}
if (lastSlashPos == (fullPageName.length - 1)) { // if the url ends in slash (add 'index.html')
fullPageName = fullPageName + "index.html";
}
var htmlPos = fullPageName.lastIndexOf(".html", fullPageName.length);
var pathPageName = fullPageName.slice(firstSlashPos, htmlPos + 5);
// get the path and page name from the URL (such as 'guide/topics/graphics/index.html')
var htmlPos = fullPageName.indexOf(".html");
var pathPageName = fullPageName.slice(firstSlashPos, htmlPos + 5); // +5 advances past ".html"
// find instances of the page name in the side nav
var link = $("#devdoc-nav a[href$='"+ pathPageName+"']");
if ((link.length == 0) && (fullPageName.indexOf("/guide/") != -1)) {
// if there's no match, then let's backstep through the directory until we find an index.html page that matches our ancestor directories (only for dev guide)
// if there's no match, then let's backstep through the directory until we find an index.html
// page that matches our ancestor directories (only for dev guide and resources)
if ((link.length == 0) && ((fullPageName.indexOf("/guide/") != -1) ||
(fullPageName.indexOf("/resources/") != -1))) {
lastBackstep = pathPageName.lastIndexOf("/");
while (link.length == 0) {
backstepDirectory = pathPageName.lastIndexOf("/", lastBackstep);
link = $("#devdoc-nav a[href$='"+ pathPageName.slice(0, backstepDirectory + 1)+"index.html']");
link = $("#devdoc-nav a[href$='"+ pathPageName.slice(0, backstepDirectory +
1)+"index.html']");
lastBackstep = pathPageName.lastIndexOf("/", lastBackstep - 1);
if (lastBackstep == 0) break;
}
}
// add 'selected' to the <li> or <div> that wraps this <a>
link.parent().addClass('selected');
if (link.parent().parent().is(':hidden')) {
toggle(link.parent().parent().parent(), false);
} else if (link.parent().parent().hasClass('toggle-list')) {
toggle(link.parent().parent(), false);
// if we're in a toggleable root link (<li class=toggle-list><div><a>)
if (link.parent().parent().hasClass('toggle-list')) {
toggle(link.parent().parent(), false); // open our own list
// then also check if we're in a third-level nested list that's toggleable
if (link.parent().parent().parent().is(':hidden')) {
toggle(link.parent().parent().parent().parent(), false); // open the super parent list
}
}
// if we're in a normal nav link (<li><a>) and the parent <ul> is hidden
else if (link.parent().parent().is(':hidden')) {
toggle(link.parent().parent().parent(), false); // open the parent list
// then also check if the parent list is also nested in a hidden list
if (link.parent().parent().parent().parent().is(':hidden')) {
toggle(link.parent().parent().parent().parent().parent(), false); // open the super parent list
}
}
}
function resizeHeight() {
/* Resize the height of the nav panels in the reference,
* and save the new size to a cookie */
function resizePackagesHeight() {
var windowHeight = ($(window).height() - HEADER_HEIGHT);
var swapperHeight = windowHeight - 13;
$("#swapper").css({height:swapperHeight + "px"});
sidenav.css({height:windowHeight + "px"});
content.css({height:windowHeight + "px"});
var swapperHeight = windowHeight - 13; // move 13px for swapper link at the bottom
resizePackagesNav.css({maxHeight:swapperHeight + "px"});
classesNav.css({height:swapperHeight - parseInt(resizePackagesNav.css("height")) + "px"});
$("#swapper").css({height:swapperHeight + "px"});
$("#packages-nav").css({height:parseInt(resizePackagesNav.css("height")) - 6 + "px"}); //move 6px for handle
devdocNav.css({height:sidenav.css("height")});
$("#nav-tree").css({height:swapperHeight + "px"});
var basePath = getBaseUri(location.pathname);
var section = basePath.substring(1,basePath.indexOf("/",1));
writeCookie("height", resizePackagesNav.css("height"), section, null);
}
/* Resize the height of the side-nav and doc-content divs,
* which creates the frame effect */
function resizeHeight() {
var docContent = $("#doc-content");
// Get the window height and always resize the doc-content and side-nav divs
var windowHeight = ($(window).height() - HEADER_HEIGHT);
docContent.css({height:windowHeight + "px"});
$("#side-nav").css({height:windowHeight + "px"});
var href = location.href;
// If in the reference docs, also resize the "swapper", "classes-nav", and "nav-tree" divs
if (href.indexOf("/reference/") != -1) {
var swapperHeight = windowHeight - 13;
$("#swapper").css({height:swapperHeight + "px"});
$("#classes-nav").css({height:swapperHeight - parseInt(resizePackagesNav.css("height")) + "px"});
$("#nav-tree").css({height:swapperHeight + "px"});
// Also resize the "devdoc-nav" div
} else if ($("#devdoc-nav").length) {
$("#devdoc-nav").css({height:sidenav.css("height")});
}
// Hide the "Go to top" link if there's no vertical scroll
if ( parseInt($("#jd-content").css("height")) <= parseInt(docContent.css("height")) ) {
$("a[href='#top']").css({'display':'none'});
} else {
$("a[href='#top']").css({'display':'inline'});
}
}
/* Resize the width of the "side-nav" and the left margin of the "doc-content" div,
* which creates the resizable side bar */
function resizeWidth() {
var windowWidth = $(window).width() + "px";
var sidenav = $("#side-nav");
if (sidenav.length) {
var sidenavWidth = sidenav.css("width");
} else {
var sidenavWidth = 0;
}
content.css({marginLeft:parseInt(sidenavWidth) + 6 + "px", //account for 6px-wide handle-bar
width:parseInt(windowWidth) - parseInt(sidenavWidth) - 6 + "px"});
content.css({marginLeft:parseInt(sidenavWidth) + 6 + "px"}); //account for 6px-wide handle-bar
if (isIE6) {
content.css({width:parseInt(windowWidth) - parseInt(sidenavWidth) - 6 + "px"}); // necessary in order to for scrollbars to be visible
}
resizePackagesNav.css({width:sidenavWidth});
classesNav.css({width:sidenavWidth});
$("#packages-nav").css({width:sidenavWidth});
var basePath = getBaseUri(location.pathname);
var section = basePath.substring(1,basePath.indexOf("/",1));
writeCookie("width", sidenavWidth, section, null);
if (sidenav.length) { // Must check if the nav exists because IE6 calls resizeWidth() from resizeAll() for all pages
var basePath = getBaseUri(location.pathname);
var section = basePath.substring(1,basePath.indexOf("/",1));
section = section.indexOf("training") != -1 ? "resources" : section;
writeCookie("width", sidenavWidth, section, null);
}
}
/* For IE6 only,
* because it can't properly perform auto width for "doc-content" div,
* avoiding this for all browsers provides better performance */
function resizeAll() {
if (!isMobile) {
resizeHeight();
if ($(".side-nav-resizable").length) {
resizeWidth();
}
}
resizeHeight();
resizeWidth();
}
function getBaseUri(uri) {
@ -262,11 +430,13 @@ $(window).unload(function(){
writeCookie("lastpage", path, "reference", null);
} else if (path.indexOf("/guide/") != -1) {
writeCookie("lastpage", path, "guide", null);
} else if ((path.indexOf("/resources/") != -1) || (path.indexOf("/training/") != -1)) {
writeCookie("lastpage", path, "resources", null);
}
});
function toggle(obj, slide) {
var ul = $("ul", obj);
var ul = $("ul:first", obj);
var li = ul.parent();
if (li.hasClass("closed")) {
if (slide) {
@ -288,7 +458,7 @@ function toggle(obj, slide) {
function buildToggleLists() {
$(".toggle-list").each(
function(i) {
$("div", this).append("<a class='toggle-img' href='#' title='show pages' onClick='toggle(this.parentNode.parentNode, true); return false;'></a>");
$("div:first", this).append("<a class='toggle-img' href='#' title='show pages' onClick='toggle(this.parentNode.parentNode, true); return false;'></a>");
$(this).addClass("closed");
});
}
@ -339,63 +509,37 @@ function scrollIntoView(nav) {
if (navObj.is(':visible')) {
var selected = $(".selected", navObj);
if (selected.length == 0) return;
if (selected.is("div")) selected = selected.parent();
if (selected.is("div")) selected = selected.parent(); // when the selected item is a parent
var scrolling = document.getElementById(nav);
var navHeight = navObj.height();
var offsetTop = selected.position().top;
if (selected.parent().parent().is(".toggle-list")) offsetTop += selected.parent().parent().position().top;
if(offsetTop > navHeight - 92) {
scrolling.scrollTop = offsetTop - navHeight + 92;
// handle nested items
if (selected.parent().parent().is(".toggle-list")) {
selected = selected.parent().parent();
// handle second level nested items
if (selected.parent().parent().is(".toggle-list")) {
selected = selected.parent().parent();
}
offsetTop += selected.position().top;
}
// 180px from the bottom of the list is the threshold
if(offsetTop > navHeight - 180) {
scrolling.scrollTop = offsetTop - navHeight + 180;
}
}
}
function toggleAllInherited(linkObj, expand) {
var a = $(linkObj);
var table = $(a.parent().parent().parent());
var expandos = $(".jd-expando-trigger", table);
if ( (expand == null && a.text() == "[Expand]") || expand ) {
expandos.each(function(i) {
toggleInherited(this, true);
});
a.text("[Collapse]");
} else if ( (expand == null && a.text() == "[Collapse]") || (expand == false) ) {
expandos.each(function(i) {
toggleInherited(this, false);
});
a.text("[Expand]");
}
return false;
}
function toggleAllSummaryInherited(linkObj) {
var a = $(linkObj);
var content = $(a.parent().parent().parent());
var toggles = $(".toggle-all", content);
if (a.text() == "[Expand All]") {
toggles.each(function(i) {
toggleAllInherited(this, true);
});
a.text("[Collapse All]");
} else {
toggles.each(function(i) {
toggleAllInherited(this, false);
});
a.text("[Expand All]");
}
return false;
}
function changeTabLang(lang) {
var nodes = $("#header-tabs").find("."+lang);
for (i=0; i < nodes.length; i++) { // for each node in this language
for (i=0; i < nodes.length; i++) { // for each node in this language
var node = $(nodes[i]);
node.siblings().css("display","none"); // hide all siblings
if (node.not(":empty").length != 0) { //if this languages node has a translation, show it
node.siblings().css("display","none"); // hide all siblings
if (node.not(":empty").length != 0) { //if this languages node has a translation, show it
node.css("display","inline");
} else { //otherwise, show English instead
} else { //otherwise, show English instead
node.css("display","none");
node.siblings().filter(".en").css("display","inline");
}
@ -404,12 +548,12 @@ function changeTabLang(lang) {
function changeNavLang(lang) {
var nodes = $("#side-nav").find("."+lang);
for (i=0; i < nodes.length; i++) { // for each node in this language
for (i=0; i < nodes.length; i++) { // for each node in this language
var node = $(nodes[i]);
node.siblings().css("display","none"); // hide all siblings
if (node.not(":empty").length != 0) { // if this languages node has a translation, show it
node.siblings().css("display","none"); // hide all siblings
if (node.not(":empty").length != 0) { // if this languages node has a translation, show it
node.css("display","inline");
} else { // otherwise, show English instead
} else { // otherwise, show English instead
node.css("display","none");
node.siblings().filter(".en").css("display","inline");
}
@ -449,16 +593,22 @@ function getLangPref() {
}
/* Used to hide and reveal supplemental content, such as long code samples.
See the companion CSS in android-developer-docs.css */
function toggleContent(obj) {
var button = $(obj);
var div = $(obj.parentNode);
var div = $(obj.parentNode.parentNode);
var toggleMe = $(".toggle-content-toggleme",div);
if (button.hasClass("show")) {
if (div.hasClass("closed")) { // if it's closed, open it
toggleMe.slideDown();
button.removeClass("show").addClass("hide");
} else {
toggleMe.slideUp();
button.removeClass("hide").addClass("show");
$(".toggle-content-text", obj).toggle();
div.removeClass("closed").addClass("open");
$(".toggle-content-img", div).attr("title", "hide").attr("src", toRoot + "assets/images/triangle-opened.png");
} else { // if it's open, close it
toggleMe.slideUp('fast', function() { // Wait until the animation is done before closing arrow
$(".toggle-content-text", obj).toggle();
div.removeClass("open").addClass("closed");
$(".toggle-content-img", div).attr("title", "show").attr("src", toRoot + "assets/images/triangle-closed.png");
});
}
$("span", button).toggle();
return false;
}

View File

@ -5,6 +5,7 @@ addLoadEvent(changeApiLevel);
var API_LEVEL_ENABLED_COOKIE = "api_level_enabled";
var API_LEVEL_COOKIE = "api_level";
var minLevel = 1;
var maxLevel = 1;
function toggleApiLevelSelector(checkbox) {
var date = new Date();
@ -23,9 +24,9 @@ function toggleApiLevelSelector(checkbox) {
}
function buildApiLevelSelector() {
var maxLevel = SINCE_DATA.length;
maxLevel = SINCE_DATA.length;
var userApiLevelEnabled = readCookie(API_LEVEL_ENABLED_COOKIE);
var userApiLevel = readCookie(API_LEVEL_COOKIE);
var userApiLevel = parseInt(readCookie(API_LEVEL_COOKIE));
userApiLevel = userApiLevel == 0 ? maxLevel : userApiLevel; // If there's no cookie (zero), use the max by default
if (userApiLevelEnabled == 0) {
@ -34,41 +35,47 @@ function buildApiLevelSelector() {
$("#apiLevelCheckbox").attr("checked","checked");
$("#api-level-toggle label").removeClass("disabled");
}
minLevel = $("body").attr("class");
minLevel = parseInt($("body").attr("class"));
// Handle provisional api levels; the provisional level will always be the highest possible level
// Provisional api levels will also have a length; other stuff that's just missing a level won't,
// so leave those kinds of entities at the default level of 1 (for example, the R.styleable class)
if (isNaN(minLevel) && minLevel.length) {
minLevel = maxLevel;
}
var select = $("#apiLevelSelector").html("").change(changeApiLevel);
for (var i = maxLevel-1; i >= 0; i--) {
var option = $("<option />").attr("value",""+SINCE_DATA[i]).append(""+SINCE_DATA[i]);
// if (SINCE_DATA[i] < minLevel) option.addClass("absent"); // always false for strings (codenames)
select.append(option);
}
// get the DOM element and use setAttribute cuz IE6 fails when using jquery .attr('selected',true)
var selectedLevelItem = $("#apiLevelSelector option[value='"+userApiLevel+"']").get(0);
selectedLevelItem.setAttribute('selected',true);
}
function changeApiLevel() {
var maxLevel = SINCE_DATA.length;
maxLevel = SINCE_DATA.length;
var userApiLevelEnabled = readCookie(API_LEVEL_ENABLED_COOKIE);
var selectedLevel = maxLevel;
if (userApiLevelEnabled == 0) {
toggleVisisbleApis(selectedLevel, "body");
} else {
selectedLevel = $("#apiLevelSelector option:selected").val();
selectedLevel = parseInt($("#apiLevelSelector option:selected").val());
toggleVisisbleApis(selectedLevel, "body");
var date = new Date();
date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years
var expiration = date.toGMTString();
writeCookie(API_LEVEL_COOKIE, selectedLevel, null, expiration);
}
if (selectedLevel < minLevel) {
var thing = ($("#jd-header").html().indexOf("package") != -1) ? "package" : "class";
$("#naMessage").show().html("<div><p><strong>This " + thing + " is not available with API Level " + selectedLevel + ".</strong></p>"
+ "<p>To use this " + thing + ", your application must specify API Level " + minLevel + " or higher in its manifest "
+ "<p>To use this " + thing + ", your application must specify API Level \"" + $("body").attr("class") + "\" or higher in its manifest "
+ "and be compiled against a version of the Android library that supports an equal or higher API Level. To reveal this "
+ "document, change the value of the API Level filter above.</p>"
+ "<p><a href='" +toRoot+ "guide/appendix/api-levels.html'>What is the API Level?</a></p></div>");
@ -86,7 +93,21 @@ function toggleVisisbleApis(selectedLevel, context) {
var apiLevelEndIndex = className.indexOf(" ", apiLevelIndex);
apiLevelEndIndex = apiLevelEndIndex != -1 ? apiLevelEndIndex : className.length;
var apiLevel = className.substring(apiLevelIndex, apiLevelEndIndex);
if (apiLevel > selectedLevel) obj.addClass("absent").attr("title","Requires API Level "+apiLevel+" or higher");
if (apiLevel.length == 0) { // for odd cases when the since data is actually missing, just bail
return;
}
apiLevel = parseInt(apiLevel);
// Handle provisional api levels; if this item's level is the provisional one, set it to the max
var selectedLevelNum = parseInt(selectedLevel)
var apiLevelNum = parseInt(apiLevel);
if (isNaN(apiLevelNum)) {
apiLevelNum = maxLevel;
}
// Grey things out that aren't available and give a tooltip title
if (apiLevelNum > selectedLevelNum) obj.addClass("absent").attr("title","Requires API Level \""
+ apiLevel + "\" or higher");
else obj.removeClass("absent").removeAttr("title");
});
}
@ -184,7 +205,7 @@ function expand_node(me, node)
}
node.plus_img.src = me.toroot + "assets/images/triangle-opened-small.png";
node.expanded = true;
// perform api level toggling because new nodes are new to the DOM
var selectedLevel = $("#apiLevelSelector option:selected").val();
toggleVisisbleApis(selectedLevel, "#side-nav");

View File

@ -0,0 +1,31 @@
/* Resource Browser */
#resource-browser-results .no-results {
font-style: italic;
display: none;
}
#resource-browser-results .result {
position: relative;
padding-left: 84px;
background: transparent none no-repeat scroll 4px 12px;
border-bottom: 1px solid #ddd;
}
#resource-browser-results .tagged-article {
background-image: url(images/resource-article.png);
}
#resource-browser-results .tagged-sample {
background-image: url(images/resource-sample.png);
}
#resource-browser-results .tagged-tutorial {
background-image: url(images/resource-tutorial.png);
}
#resource-browser-results .resource-meta {
margin-top: -1em;
font-size: 0.85em;
font-weight: normal;
}

View File

@ -0,0 +1,235 @@
(function() { // anonymize
var allTags = {};
var loadedResults = [];
/**
* Initialization code run upon the DOM being ready.
*/
$(document).ready(function() {
// Parse page query parameters.
var params = parseParams(document.location.search);
params.tag = params.tag ? makeArray(params.tag) : null;
// Load tag and resource dataset.
loadTags();
loadResources();
showResults(params);
// Watch for keypresses in the keyword filter textbox, and update
// search results to reflect the keyword filter.
$('#resource-browser-keyword-filter').keyup(function() {
// Filter results on screen by keyword.
var keywords = $(this).val().split(/\s+/g);
for (var i = 0; i < loadedResults.length; i++) {
var hide = false;
for (var j = 0; j < keywords.length; j++) {
if (!resultMatchesKeyword(loadedResults[i].result, keywords[j])) {
hide = true;
break;
}
}
loadedResults[i].node[hide ? 'hide' : 'show']();
}
});
});
/**
* Returns whether or not the given search result contains the given keyword.
*/
function resultMatchesKeyword(result, keyword) {
keyword = keyword.toLowerCase();
if (result.title &&
result.title.en.toLowerCase().indexOf(keyword) >= 0)
return true;
else if (result.description &&
result.description.en.toLowerCase().indexOf(keyword) >= 0)
return true;
else if (result.topicsHtml &&
result.topicsHtml.replace(/\<.*?\>/g,'').toLowerCase().indexOf(keyword) >= 0)
return true;
return false;
}
/**
* Populates the allTags array with tag data from the ANDROID_TAGS
* variable in the resource data JS file.
*/
function loadTags() {
for (var tagClass in ANDROID_TAGS) {
for (var tag in ANDROID_TAGS[tagClass]) {
allTags[tag] = {
displayTag: ANDROID_TAGS[tagClass][tag],
tagClass: tagClass
};
}
}
}
/**
* Massage the ANDROID_RESOURCES resource list in the resource data JS file.
*/
function loadResources() {
for (var i = 0; i < ANDROID_RESOURCES.length; i++) {
var resource = ANDROID_RESOURCES[i];
// Convert the tags array to a tags hash for easier querying.
resource.tagsHash = {};
for (var j = 0; j < resource.tags.length; j++)
resource.tagsHash[resource.tags[j]] = true;
// Determine the type and topics of the resource by inspecting its tags.
resource.topics = [];
for (tag in resource.tagsHash)
if (tag in allTags) {
if (allTags[tag].tagClass == 'type') {
resource.type = tag;
} else if (allTags[tag].tagClass == 'topic') {
resource.topics.push(tag);
}
}
// Add a humanized topics list string.
resource.topicsHtml = humanizeList(resource.topics, function(item) {
return '<strong>' + allTags[item].displayTag + '</strong>';
});
}
}
/**
* Loads resources for the given query parameters.
*/
function showResults(params) {
loadedResults = [];
$('#resource-browser-search-params').empty();
$('#resource-browser-results').empty();
var i, j;
var searchTags = [];
if (params.tag) {
for (i = 0; i < params.tag.length; i++) {
var tag = params.tag[i];
if (tag.toLowerCase() in allTags) {
searchTags.push(tag.toLowerCase());
}
}
}
if (searchTags.length) {
// Show query params.
var taggedWithHtml = ['Showing technical resources tagged with '];
taggedWithHtml.push(humanizeList(searchTags, function(item) {
return '<strong>' + allTags[item].displayTag + '</strong>';
}));
$('#resource-browser-search-params').html(taggedWithHtml.join('') + ':');
} else {
$('#resource-browser-search-params').html('Showing all technical resources:');
}
var results = [];
// Create the list of resources to show.
for (i = 0; i < ANDROID_RESOURCES.length; i++) {
var resource = ANDROID_RESOURCES[i];
var skip = false;
if (searchTags.length) {
for (j = 0; j < searchTags.length; j++)
if (!(searchTags[j] in resource.tagsHash)) {
skip = true;
break;
}
if (skip)
continue;
results.push(resource);
continue;
}
results.push(resource);
}
// Format and show the list of resource results.
if (results.length) {
$('#resource-browser-results .no-results').hide();
for (i = 0; i < results.length; i++) {
var result = results[i];
var resultJqNode = $(tmpl('tmpl_resource_browser_result', result));
for (tag in result.tagsHash)
resultJqNode.addClass('tagged-' + tag);
$('#resource-browser-results').append(resultJqNode);
loadedResults.push({ node: resultJqNode, result: result });
}
} else {
$('#resource-browser-results .no-results').show();
}
}
/**
* Formats the given array into a human readable, English string, ala
* 'a, b and c', with an optional item formatter/wrapper function.
*/
function humanizeList(arr, itemFormatter) {
itemFormatter = itemFormatter || function(o){ return o; };
arr = arr || [];
var out = [];
for (var i = 0; i < arr.length; i++) {
out.push(itemFormatter(arr[i]) +
((i < arr.length - 2) ? ', ' : '') +
((i == arr.length - 2) ? ' and ' : ''));
}
return out.join('');
}
/**
* Parses a parameter string, i.e. foo=1&bar=2 into
* a dictionary object.
*/
function parseParams(paramStr) {
var params = {};
paramStr = paramStr.replace(/^[?#]/, '');
var pairs = paramStr.split('&');
for (var i = 0; i < pairs.length; i++) {
var p = pairs[i].split('=');
var key = p[0] ? decodeURIComponent(p[0]) : p[0];
var val = p[1] ? decodeURIComponent(p[1]) : p[1];
if (val === '0')
val = 0;
if (val === '1')
val = 1;
if (key in params) {
// Handle array values.
params[key] = makeArray(params[key]);
params[key].push(val);
} else {
params[key] = val;
}
}
return params;
}
/**
* Returns the argument as a single-element array, or the argument itself
* if it's already an array.
*/
function makeArray(o) {
if (!o)
return [];
if (typeof o === 'object' && 'splice' in o) {
return o;
} else {
return [o];
}
}
})();

View File

@ -0,0 +1,14 @@
function showApiWarning(thing, selectedLevel, minLevel) {
if (selectedLevel < minLevel) {
$("#naMessage").show().html("<div><p><strong>This " + thing + " is not available with API Level " + selectedLevel + ".</strong></p>"
+ "<p>To use this " + thing + ", your application must specify API Level " + minLevel + " or higher in its manifest "
+ "and be compiled against a version of the Android library that supports an equal or higher API Level. To reveal this "
+ "document, change the value of the API Level filter above.</p>"
+ "<p><a href='" +toRoot+ "guide/appendix/api-levels.html'>What is the API Level?</a></p></div>");
} else {
$("#naMessage").hide();
}
}
// Direct searches to search.html
HAS_SEARCH_PAGE = true;

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,676 @@
/* color definitions */
/* 16 column layout */
/* clearfix idiom */
/* common mixins */
/* page layout + top-level styles */
::-webkit-selection,
::-moz-selection,
::selection {
background-color: #0099cc;
color: #fff; }
html, body {
height: 100%;
margin: 0;
padding: 0;
background: #eee none no-repeat fixed top left;
background-image: -webkit-gradient(linear, 100% 0%, 100% 100%, from(#dddddd), color-stop(25%, #f2f2f2), color-stop(75%, #f2f2f2), to(#dddddd));
background-image: -moz-linear-gradient(top, #dddddd, #f2f2f2, #f2f2f2, #dddddd);
-webkit-font-smoothing: antialiased;
/* prevent subpixel antialiasing, which thickens the text */
/* text-rendering: optimizeLegibility; */
/* turned off ligatures due to bug 5945455 */ }
body {
color: #555555;
font: 14px/20px Roboto, sans-serif;
font-weight: 400; }
#page-container {
width: 940px;
margin: 0 40px; }
#page-header {
height: 80px;
margin-bottom: 20px;
font-size: 48px;
line-height: 48px;
font-weight: 100;
padding-left: 10px; }
#page-header a {
display: block;
position: relative;
top: 20px;
text-decoration: none;
color: #555555 !important; }
#main-row {
display: inline-block; }
#main-row:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden; }
* html #main-row {
height: 1px; }
#page-footer {
margin-left: 190px;
margin-top: 80px;
color: #999999;
padding-bottom: 40px;
font-size: 12px;
line-height: 15px; }
#page-footer a {
color: #777777; }
#page-footer #copyright {
margin-bottom: 10px; }
#nav-container {
width: 160px;
min-height: 10px;
margin-right: 20px;
float: left; }
#nav {
width: 160px; }
#nav.fixed {
position: fixed;
top: 40px; }
#content {
width: 760px;
float: left; }
a,
a:visited {
color: #333333; }
a:hover,
acronym:hover {
color: #7aa1b0 !important; }
a:focus,
a:active {
color: #33b5e5 !important; }
img {
border: none; }
ul {
margin: 0;
padding: 0; }
strong {
font-weight: 500; }
em {
font-style: italic; }
code {
font-family: Courier New, monospace; }
acronym {
border-bottom: 1px dotted #555555;
cursor: help; }
acronym:hover {
border-bottom-color: #7aa1b0; }
img.with-shadow,
video.with-shadow {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25); }
/* disclosures mixin */
/* content layout */
.layout-content-row {
display: inline-block;
margin-bottom: 10px; }
.layout-content-row:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden; }
* html .layout-content-row {
height: 1px; }
.layout-content-col {
float: left;
margin-left: 20px; }
.layout-content-col:first-child {
margin-left: 0; }
.layout-content-col.span-1 {
width: 40px; }
.layout-content-col.span-2 {
width: 100px; }
.layout-content-col.span-3 {
width: 160px; }
.layout-content-col.span-4 {
width: 220px; }
.layout-content-col.span-5 {
width: 280px; }
.layout-content-col.span-6 {
width: 340px; }
.layout-content-col.span-7 {
width: 400px; }
.layout-content-col.span-8 {
width: 460px; }
.layout-content-col.span-9 {
width: 520px; }
.layout-content-col.span-10 {
width: 580px; }
.layout-content-col.span-11 {
width: 640px; }
.layout-content-col.span-12 {
width: 700px; }
.layout-content-col.span-13 {
width: 760px; }
.vspace.size-1 {
height: 10px; }
.vspace.size-2 {
height: 20px; }
.vspace.size-3 {
height: 30px; }
.vspace.size-4 {
height: 40px; }
.vspace.size-5 {
height: 50px; }
.vspace.size-6 {
height: 60px; }
.vspace.size-7 {
height: 70px; }
.vspace.size-8 {
height: 80px; }
.vspace.size-9 {
height: 90px; }
.vspace.size-10 {
height: 100px; }
.vspace.size-11 {
height: 110px; }
.vspace.size-12 {
height: 120px; }
.vspace.size-13 {
height: 130px; }
.vspace.size-14 {
height: 140px; }
.vspace.size-15 {
height: 150px; }
.vspace.size-16 {
height: 160px; }
/* nav */
#nav {
/* section header divs */
/* expanded section header divs */
/* sublinks */ }
#nav li {
list-style-type: none;
font-size: 14px;
line-height: 10px; }
#nav a {
color: #555555;
text-decoration: none; }
#nav li.selected > a,
#nav li.selected .nav-section-header a {
font-weight: 500;
color: #0099cc !important; }
#nav .nav-section-header {
position: relative;
padding: 10px;
margin-bottom: 1px;
/* section header links */ }
#nav .nav-section-header a {
color: #333333;
font-weight: 500;
text-transform: uppercase; }
#nav .nav-section-header:after {
content: '';
background: transparent url(disclosure_down.png) no-repeat scroll top left;
width: 10px;
height: 10px;
display: block;
position: absolute;
top: 10px;
right: 10px; }
#nav .nav-section-header.empty:after {
display: none; }
#nav li.expanded .nav-section-header {
background: rgba(0, 0, 0, 0.05); }
#nav li.expanded .nav-section-header:after {
content: '';
background: transparent url(disclosure_up.png) no-repeat scroll top left;
width: 10px;
height: 10px; }
#nav > li > ul {
height: 0;
overflow: hidden;
margin-bottom: 0; }
#nav > li > ul.animate-height {
-webkit-transition: height 0.25s ease-in;
-moz-transition: height 0.25s ease-in;
transition: height 0.25s ease-in; }
#nav > li > ul li {
padding: 10px 10px 11px 10px; }
#nav > li.expanded > ul {
height: auto; }
#nav > li.expanded > ul li {
background: rgba(0, 0, 0, 0.03); }
#nav #back-dac-section {
padding: 10px;
border-top: 1px solid #ddd; }
#nav #back-dac-section a {
color: #333333;
font-weight: 500;
text-transform: uppercase; }
/* content header */
.content-header {
border-bottom: 1px solid #33b5e5;
height: 30px; }
.content-header h2 {
border-bottom: 0; }
.content-header.just-links {
border-bottom: 0; }
.content-footer {
border-top: 1px solid #33b5e5;
margin-top: 10px;
height: 30px; }
.paging-links {
position: relative; }
.paging-links a {
position: absolute;
font-size: 14px;
line-height: 30px;
color: #555555;
text-decoration: none;
text-transform: uppercase; }
.paging-links .prev-page-link {
display: none;
left: -5px; }
.paging-links .prev-page-link:before {
content: '';
background: transparent url(disclosure_left.png) no-repeat scroll top left;
width: 10px;
height: 10px;
display: inline-block;
margin-right: 5px; }
.paging-links .next-page-link {
display: none;
right: 10px; }
.paging-links .next-page-link:after {
content: '';
background: transparent url(disclosure_right.png) no-repeat scroll top left;
width: 10px;
height: 10px;
display: inline-block;
margin-left: 5px; }
/* content body */
@-webkit-keyframes glowheader {
from {
background-color: #33b5e5;
color: #000;
border-bottom-color: #000; }
to {
background-color: transparent;
color: #33b5e5;
border-bottom-color: #33b5e5; } }
@-moz-keyframes glowheader {
from {
background-color: #33b5e5;
color: #000;
border-bottom-color: #000; }
to {
background-color: transparent;
color: #33b5e5;
border-bottom-color: #33b5e5; } }
@keyframes glowheader {
from {
background-color: #33b5e5;
color: #000;
border-bottom-color: #000; }
to {
background-color: transparent;
color: #33b5e5;
border-bottom-color: #33b5e5; } }
#content p,
#content ul,
#content ol,
#content h3 {
margin: 0 10px 10px 10px; }
#content h2 {
padding-left: 10px;
padding-right: 10px;
margin-bottom: 10px;
font-size: 16px;
line-height: 30px;
font-weight: 500;
color: #33b5e5;
border-bottom: 1px solid #33b5e5;
height: 30px; }
#content h2:target {
-webkit-animation-name: glowheader;
-moz-animation-name: glowheader;
animation-name: glowheader;
-webkit-animation-duration: 0.7s;
-moz-animation-duration: 0.7s;
animation-duration: 0.7s;
-webkit-animation-timing-function: ease-out;
-moz-animation-timing-function: ease-out;
animation-timing-function: ease-out; }
#content hr {
border: 0;
border-bottom: 1px solid #33b5e5;
margin-bottom: 20px; }
#content h3 {
color: #33b5e5;
text-transform: uppercase;
font-size: 14px;
line-height: 20px;
font-weight: 500; }
#content h4 {
margin: 0 10px;
color: #333333;
font-weight: 500;
font-size: 14px;
line-height: 20px; }
#content strong {
color: #333333; }
#content ul li,
#content ol li {
margin-left: 20px; }
#content ul li h4,
#content ol li h4 {
margin: 0; }
#content ul li p,
#content ol li p {
margin-left: 0; }
#content ul li {
list-style-type: square;
list-style-type: none;
position: relative; }
#content ul li:before {
content: '\2022';
font-family: verdana;
font-size: 14px;
line-height: 20px;
position: absolute;
left: -20px;
top: -1px; }
#content ol {
counter-reset: item; }
#content ol li {
font-size: 14px;
line-height: 20px;
list-style-type: none;
position: relative; }
#content ol li:before {
content: counter(item) ". ";
counter-increment: item;
position: absolute;
left: -20px;
top: 0; }
#content ol li.value-1:before {
content: "1. "; }
#content ol li.value-2:before {
content: "2. "; }
#content ol li.value-3:before {
content: "3. "; }
#content ol li.value-4:before {
content: "4. "; }
#content ol li.value-5:before {
content: "5. "; }
#content ol li.value-6:before {
content: "6. "; }
#content ol li.value-7:before {
content: "7. "; }
#content ol li.value-8:before {
content: "8. "; }
#content ol li.value-9:before {
content: "9. "; }
#content ol li.value-10:before {
content: "10. "; }
#content .with-callouts ol li {
list-style-position: inside;
margin-left: 0; }
#content .with-callouts ol li:before {
position: static;
display: inline;
left: 0;
float: left;
width: 17px;
color: #33b5e5;
font-weight: 500; }
/* special list items */
li.no-bullet {
list-style-type: none !important; }
#content li.with-icon {
position: relative;
margin-left: 40px;
min-height: 30px; }
#content li.with-icon p {
margin-left: 0 !important; }
#content li.with-icon:before {
position: absolute;
left: -40px;
top: 0;
content: '';
width: 30px;
height: 30px; }
#content li.with-icon.tablet:before {
background-image: url(ico_phone_tablet.png); }
#content li.with-icon.web:before {
background-image: url(ico_web.png); }
#content li.with-icon.checklist:before {
background-image: url(ico_checklist.png); }
#content li.with-icon.action:before {
background-image: url(ico_action.png); }
#content li.with-icon.use:before {
background-image: url(ico_use.png); }
/* figures and callouts */
.figure {
position: relative; }
.figure.pad-below {
margin-bottom: 20px; }
.figure .figure-callout {
position: absolute;
color: #fff;
font-weight: 500;
font-size: 16px;
line-height: 23px;
text-align: center;
background: transparent url(callout.png) no-repeat scroll 50% 50%;
padding-right: 2px;
width: 30px;
height: 29px;
z-index: 1000; }
.figure .figure-callout.top {
top: -9px; }
.figure .figure-callout.right {
right: -5px; }
.figure-caption {
margin: 0 10px 20px 10px;
font-size: 14px;
line-height: 20px;
font-style: italic; }
/* rows of figures */
.figure-row {
font-size: 0;
line-height: 0;
/* to prevent space between figures */ }
.figure-row .figure {
display: inline-block;
vertical-align: top; }
.figure-row .figure + .figure {
margin-left: 10px;
/* reintroduce space between figures */ }
/* video containers */
.framed-galaxynexus-land-span-13 {
background: transparent url(device_galaxynexus_blank_land_span13.png) no-repeat scroll top left;
padding: 42px 122px 62px 126px;
overflow: hidden; }
.framed-galaxynexus-land-span-13, .framed-galaxynexus-land-span-13 video, .framed-galaxynexus-land-span-13 img {
width: 512px;
height: 286px; }
.framed-galaxynexus-port-span-9 {
background: transparent url(device_galaxynexus_blank_port_span9.png) no-repeat scroll top left;
padding: 95px 122px 107px 124px;
overflow: hidden; }
.framed-galaxynexus-port-span-9, .framed-galaxynexus-port-span-9 video, .framed-galaxynexus-port-span-9 img {
width: 274px;
height: 488px; }
.framed-galaxynexus-port-span-5 {
background: transparent url(device_galaxynexus_blank_port_span5.png) no-repeat scroll top left;
padding: 75px 31px 76px 33px;
overflow: hidden; }
.framed-galaxynexus-port-span-5, .framed-galaxynexus-port-span-5 video, .framed-galaxynexus-port-span-5 img {
width: 216px;
height: 384px; }
/* landing page disclosures */
.landing-page-link {
text-decoration: none;
font-weight: 500;
color: #333333; }
.landing-page-link:after {
content: '';
background: transparent url(disclosure_right.png) no-repeat scroll top left;
width: 10px;
height: 10px;
display: inline-block;
margin-left: 5px; }
/* tooltips */
.tooltip-box {
position: absolute;
background-color: rgba(0, 0, 0, 0.9);
border-radius: 2px;
font-size: 14px;
line-height: 20px;
color: #fff;
padding: 6px 10px;
max-width: 250px;
z-index: 10000; }
.tooltip-box.below:after {
position: absolute;
content: '';
line-height: 0;
display: block;
top: -10px;
left: 5px;
border: 5px solid transparent;
border-bottom-color: rgba(0, 0, 0, 0.9); }
/* video note */
.video-instructions {
margin-top: 10px;
margin-bottom: 10px; }
.video-instructions:before {
content: '';
background: transparent url(ico_movie_inline.png) no-repeat scroll top left;
display: inline-block;
width: 12px;
height: 12px;
margin-right: 8px; }
.video-instructions:after {
content: 'Click to replay movie.'; }
/* download buttons */
.download-button {
display: block;
margin-bottom: 5px;
text-decoration: none;
background-color: #33b5e5;
color: #fff !important;
font-weight: 500;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.12);
padding: 6px 12px;
border-radius: 2px; }
.download-button:hover, .download-button:focus {
background-color: #0099cc;
color: #fff !important; }
.download-button:active {
background-color: #006699; }
/* UI tables and other things found in Writing style and Settings pattern */
.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; }
.layout-with-list-item-margins {
margin-left: 30px !important; }
.emulate-content-left-padding {
margin-left: 10px; }
.do-dont-label {
margin-bottom: 10px;
padding-left: 20px;
background: transparent none no-repeat scroll 0px 3px; }
.do-dont-label.bad {
background-image: url(ico_wrong.png); }
.do-dont-label.good {
background-image: url(ico_good.png); }

View File

@ -0,0 +1,188 @@
$(document).ready(function() {
// prep nav expandos
var pagePath = document.location.pathname;
if (pagePath.indexOf(SITE_ROOT) == 0) {
pagePath = pagePath.substr(SITE_ROOT.length);
if (pagePath == '' || pagePath.charAt(pagePath.length - 1) == '/') {
pagePath += 'index.html';
}
}
if (SITE_ROOT.match(/\.\.\//) || SITE_ROOT == '') {
// If running locally, SITE_ROOT will be a relative path, so account for that by
// finding the relative URL to this page. This will allow us to find links on the page
// leading back to this page.
var pathParts = pagePath.split('/');
var relativePagePathParts = [];
var upDirs = (SITE_ROOT.match(/(\.\.\/)+/) || [''])[0].length / 3;
for (var i = 0; i < upDirs; i++) {
relativePagePathParts.push('..');
}
for (var i = 0; i < upDirs; i++) {
relativePagePathParts.push(pathParts[pathParts.length - (upDirs - i) - 1]);
}
relativePagePathParts.push(pathParts[pathParts.length - 1]);
pagePath = relativePagePathParts.join('/');
} else {
// Otherwise the page path should be an absolute URL.
pagePath = SITE_ROOT + pagePath;
}
// select current page in sidenav and set up prev/next links if they exist
var $selNavLink = $('#nav').find('a[href="' + pagePath + '"]');
if ($selNavLink.length) {
$selListItem = $selNavLink.closest('li');
$selListItem.addClass('selected');
$selListItem.closest('li.nav-section').addClass('expanded');
// set up prev links
var $prevLink = [];
var $prevListItem = $selListItem.prev('li');
if ($prevListItem.length) {
if ($prevListItem.hasClass('nav-section')) {
// jump to last topic of previous section
$prevLink = $prevListItem.find('a:last');
} else {
// jump to previous topic in this section
$prevLink = $prevListItem.find('a:eq(0)');
}
} else {
// jump to this section's index page (if it exists)
$prevLink = $selListItem.parents('li').find('a');
}
if ($prevLink.length) {
var prevHref = $prevLink.attr('href');
if (prevHref == SITE_ROOT + 'index.html') {
// Don't show Previous when it leads to the homepage
$('.prev-page-link').hide();
} else {
$('.prev-page-link').attr('href', prevHref).show();
}
} else {
$('.prev-page-link').hide();
}
// set up next links
var $nextLink = [];
if ($selListItem.hasClass('nav-section')) {
// we're on an index page, jump to the first topic
$nextLink = $selListItem.find('ul').find('a:eq(0)')
} else {
// jump to the next topic in this section (if it exists)
$nextLink = $selListItem.next('li').find('a:eq(0)');
if (!$nextLink.length) {
// no more topics in this section, jump to the first topic in the next section
$nextLink = $selListItem.parents('li').next('li.nav-section').find('a:eq(0)');
}
}
if ($nextLink.length) {
$('.next-page-link').attr('href', $nextLink.attr('href')).show();
} else {
$('.next-page-link').hide();
}
}
// Set up expand/collapse behavior
$('#nav li.nav-section').click(function() {
if ($(this).hasClass('expanded')) {
return;
}
// hide other
var $old = $('#nav li.nav-section.expanded');
if ($old.length) {
var $oldUl = $old.children('ul');
$oldUl.css('height', $oldUl.height() + 'px');
window.setTimeout(function() {
$oldUl
.addClass('animate-height')
.css('height', '');
}, 0);
$old.removeClass('expanded');
}
// show me
$(this).addClass('expanded');
var $ul = $(this).children('ul');
var expandedHeight = $ul.height();
$ul
.removeClass('animate-height')
.css('height', 0);
window.setTimeout(function() {
$ul
.addClass('animate-height')
.css('height', expandedHeight + 'px');
}, 0);
});
// Stop expand/collapse behavior when clicking on nav section links (since we're navigating away
// from the page)
$('.nav-section-header').find('a:eq(0)').click(function(evt) {
window.location.href = $(this).attr('href');
return false;
});
// Set up play-on-hover <video> tags.
$('video.play-on-hover').bind('click', function(){
$(this).get(0).load(); // in case the video isn't seekable
$(this).get(0).play();
});
// Set up tooltips
var TOOLTIP_MARGIN = 10;
$('acronym').each(function() {
var $target = $(this);
var $tooltip = $('<div>')
.addClass('tooltip-box')
.text($target.attr('title'))
.hide()
.appendTo('body');
$target.removeAttr('title');
$target.hover(function() {
// in
var targetRect = $target.offset();
targetRect.width = $target.width();
targetRect.height = $target.height();
$tooltip.css({
left: targetRect.left,
top: targetRect.top + targetRect.height + TOOLTIP_MARGIN
});
$tooltip.addClass('below');
$tooltip.show();
}, function() {
// out
$tooltip.hide();
});
});
// Set up <h2> deeplinks
$('h2').click(function() {
var id = $(this).attr('id');
if (id) {
document.location.hash = id;
}
});
// Set up fixed navbar
var navBarIsFixed = false;
$(window).scroll(function() {
var scrollTop = $(window).scrollTop();
var navBarShouldBeFixed = (scrollTop > (100 - 40));
if (navBarIsFixed != navBarShouldBeFixed) {
if (navBarShouldBeFixed) {
$('#nav')
.addClass('fixed')
.prependTo('#page-container');
} else {
$('#nav')
.removeClass('fixed')
.prependTo('#nav-container');
}
navBarIsFixed = navBarShouldBeFixed;
}
});
});

View File

@ -0,0 +1,792 @@
/* color definitions */
$text_color: #555;
$text_color_dark: #333;
$text_color_light: #777;
$text_color_lighter: #999;
$ics_blue: #33b5e5;
$ics_blue_dark: #09c;
$ics_blue_darkest: #069;
$ics_blue_desaturated: #7aa1b0;
$panel_background: rgba(0, 0, 0, 0.03);
$panel_background_dark: rgba(0, 0, 0, 0.05);
$light_shadow_color: rgba(0,0,0,0.25);
$lighter_shadow_color: rgba(0,0,0,0.12);
$tiny_text_size: 12px;
$small_text_size: 14px;
$large_text_size: 16px;
$default_line_height: 20px;
$tiny_line_height: 15px;
$thinweight: 100;
$normalweight: 400;
$boldweight: 500;
/* 16 column layout */
$col_width: 40px;
$gutter_width: 20px;
@function gridwidth($n) {
@return $n * $col_width + ($n - 1) * $gutter_width;
}
/* clearfix idiom */
@mixin clearfix {
display: inline-block;
&:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
* html & { height: 1px }
}
/* common mixins */
@mixin fontheight($font_size, $line_height) {
font-size: $font_size;
line-height: $line_height;
}
@mixin prefixed($property, $value) {
-webkit-#{$property}: $value;
-moz-#{$property}: $value;
#{$property}: $value;
}
/* page layout + top-level styles */
::-webkit-selection,
::-moz-selection,
::selection {
background-color: $ics_blue_dark;
color: #fff;
}
html, body {
height: 100%;
margin: 0;
padding: 0;
background: #eee none no-repeat fixed top left;
background-image: -webkit-gradient(linear, 100% 0%, 100% 100%, from(#ddd), color-stop(25%, #f2f2f2), color-stop(75%, #f2f2f2), to(#ddd));
background-image: -moz-linear-gradient(top, #ddd, #f2f2f2, #f2f2f2, #ddd);
-webkit-font-smoothing: antialiased; /* prevent subpixel antialiasing, which thickens the text */
/* text-rendering: optimizeLegibility; */ /* turned off ligatures due to bug 5945455 */
}
body {
color: $text_color;
font: #{$small_text_size}/#{$default_line_height} Roboto,sans-serif;
font-weight: $normalweight;
}
#page-container {
width: gridwidth(16);
margin: 0 40px;
}
#page-header {
height: 80px;
margin-bottom: 20px;
@include fontheight(48px, 48px);
font-weight: $thinweight;
padding-left: $gutter_width / 2;
a {
display: block;
position: relative;
top: 20px;
text-decoration :none;
color: $text_color !important;
}
}
#main-row {
@include clearfix;
}
#page-footer {
margin-left: gridwidth(3) + $gutter_width + 10;
margin-top: 80px;
color: $text_color_lighter;
padding-bottom: 40px;
@include fontheight($tiny_text_size, $tiny_line_height);
a {
color: $text_color_light;
}
#copyright {
margin-bottom: 10px;
}
}
#nav-container {
width: gridwidth(3);
min-height: 10px;
margin-right: $gutter_width;
float: left;
}
#nav {
width: gridwidth(3);
}
#nav.fixed {
position: fixed;
top: 40px;
}
#content {
width: gridwidth(13);
float: left;
}
a,
a:visited {
color: $text_color_dark;
}
a:hover,
acronym:hover {
color: $ics_blue_desaturated !important;
}
a:focus,
a:active {
color: $ics_blue !important;
}
img {
border: none;
}
ul {
margin: 0;
padding: 0;
}
strong {
font-weight: $boldweight;
}
em {
font-style: italic;
}
code {
font-family: Courier New, monospace;
}
acronym {
border-bottom: 1px dotted $text_color;
cursor: help;
}
acronym:hover {
border-bottom-color: $ics_blue_desaturated;
}
img.with-shadow,
video.with-shadow {
box-shadow: 0 2px 4px $light_shadow_color;
}
/* disclosures mixin */
@mixin disclosure($type) {
content: '';
background: transparent url(disclosure_#{$type}.png) no-repeat scroll top left;
width: 10px;
height: 10px;
}
/* content layout */
.layout-content-row {
@include clearfix;
margin-bottom: 10px;
}
.layout-content-col {
float: left;
margin-left: $gutter_width;
&:first-child {
margin-left: 0;
}
}
@for $n from 1 through 13 {
.layout-content-col.span-#{$n} { width: gridwidth($n); }
}
@for $n from 1 through 16 {
.vspace.size-#{$n} { height: 10px * $n; }
}
/* nav */
#nav {
li {
list-style-type: none;
@include fontheight($small_text_size, 10px);
}
a {
color: $text_color;
text-decoration: none;
}
li.selected > a,
li.selected .nav-section-header a {
font-weight: $boldweight;
color: $ics_blue_dark !important;
}
/* section header divs */
.nav-section-header {
position: relative;
padding: 10px;
margin-bottom: 1px;
/* section header links */
a {
color: $text_color_dark;
font-weight: $boldweight;
text-transform: uppercase;
}
&:after {
@include disclosure(down);
display: block;
position: absolute;
top: 10px;
right: 10px;
}
&.empty:after {
display: none;
}
}
/* expanded section header divs */
li.expanded .nav-section-header {
background: $panel_background_dark;
&:after {
@include disclosure(up);
}
}
/* sublinks */
& > li > ul {
height: 0;
overflow: hidden;
margin-bottom: 0;
&.animate-height {
@include prefixed(transition, height 0.25s ease-in);
}
li {
padding: 10px 10px (10px + 1) 10px;
}
}
& > li.expanded > ul {
height: auto;
li {
background: $panel_background;
}
}
#back-dac-section {
padding: 10px;
border-top: 1px solid #ddd;
a {
color: $text_color_dark;
font-weight: $boldweight;
text-transform: uppercase;
}
}
}
/* content header */
$content_header_height: 30px;
.content-header {
border-bottom: 1px solid $ics_blue;
height: $content_header_height;
h2 {
border-bottom: 0;
}
&.just-links {
border-bottom: 0;
}
}
.content-footer {
border-top: 1px solid $ics_blue;
margin-top: 10px;
height: $content_header_height;
}
.paging-links {
position: relative;
a {
position: absolute;
font-size: $small_text_size;
line-height: $content_header_height;
color: $text_color;
text-decoration: none;
text-transform: uppercase;
}
.prev-page-link {
display: none;
left: -5px;
&:before {
@include disclosure(left);
display: inline-block;
margin-right: 5px;
}
}
.next-page-link {
display: none;
right: 10px;
&:after {
@include disclosure(right);
display: inline-block;
margin-left: 5px;
}
}
}
/* content body */
@-webkit-keyframes glowheader {
from { background-color: rgb(51, 181, 229); color: #000; border-bottom-color: #000; }
to { background-color: transparent; color: $ics_blue; border-bottom-color: $ics_blue; }
}
@-moz-keyframes glowheader {
from { background-color: rgb(51, 181, 229); color: #000; border-bottom-color: #000; }
to { background-color: transparent; color: $ics_blue; border-bottom-color: $ics_blue; }
}
@keyframes glowheader {
from { background-color: rgb(51, 181, 229); color: #000; border-bottom-color: #000; }
to { background-color: transparent; color: $ics_blue; border-bottom-color: $ics_blue; }
}
#content {
p,
ul,
ol,
h3 {
margin: 0 10px 10px 10px;
}
h2 {
padding-left: 10px;
padding-right: 10px;
margin-bottom: 10px;
font-size: $large_text_size;
line-height: $content_header_height;
font-weight: $boldweight;
color: $ics_blue;
border-bottom: 1px solid $ics_blue;
height: $content_header_height;
&:target {
@include prefixed(animation-name, glowheader);
@include prefixed(animation-duration, 0.7s);
@include prefixed(animation-timing-function, ease-out);
}
}
hr {
border: 0;
border-bottom: 1px solid $ics_blue;
margin-bottom: 20px;
}
h3 {
color: $ics_blue;
text-transform: uppercase;
@include fontheight($small_text_size, $default_line_height);
font-weight: $boldweight;
}
h4 {
margin: 0 10px;
color: $text_color_dark;
font-weight: $boldweight;
@include fontheight($small_text_size, $default_line_height);
}
strong {
color: $text_color_dark;
}
ul li,
ol li {
margin-left: 20px;
h4 {
margin: 0;
}
p {
margin-left: 0;
}
}
ul li {
list-style-type: square;
list-style-type: none;
position: relative;
&:before {
content: '\2022';
font-family: verdana;
@include fontheight($small_text_size, $default_line_height);
position: absolute;
left: -20px;
top: -1px;
}
}
ol {
counter-reset: item;
li {
@include fontheight($small_text_size, $default_line_height);
list-style-type: none;
position: relative;
&:before {
content: counter(item) '. ';
counter-increment: item;
position: absolute;
left: -20px;
top: 0;
}
@for $n from 1 through 10 {
&.value-#{$n}:before {
content: '#{$n}. ';
}
}
}
}
.with-callouts ol li {
list-style-position: inside;
margin-left: 0;
&:before {
position: static;
display: inline;
left: 0;
float: left;
width: 17px;
color: $ics_blue;
font-weight: $boldweight;
}
}
}
/* special list items */
li.no-bullet {
list-style-type: none !important;
}
#content li.with-icon {
position: relative;
margin-left: 40px;
min-height: 30px;
p {
margin-left: 0 !important;
}
&:before {
position: absolute;
left: -40px;
top: 0;
content: '';
width: 30px;
height: 30px;
}
&.tablet:before {
background-image: url(ico_phone_tablet.png);
}
&.web:before {
background-image: url(ico_web.png);
}
&.checklist:before {
background-image: url(ico_checklist.png);
}
&.action:before {
background-image: url(ico_action.png);
}
&.use:before {
background-image: url(ico_use.png);
}
}
/* figures and callouts */
.figure {
position: relative;
&.pad-below {
margin-bottom: 20px;
}
.figure-callout {
position: absolute;
color: #fff;
font-weight: $boldweight;
@include fontheight($large_text_size, 23px);
text-align: center;
background: transparent url(callout.png) no-repeat scroll 50% 50%;
padding-right: 2px;
width: 30px;
height: 29px;
z-index: 1000;
&.top {
top: -9px;
}
&.right {
right: -5px;
}
}
}
.figure-caption {
margin: 0 10px 20px 10px;
@include fontheight($small_text_size, $default_line_height);
font-style: italic;
}
/* rows of figures */
.figure-row {
@include fontheight(0, 0); /* to prevent space between figures */
.figure {
display: inline-block;
vertical-align: top;
}
.figure + .figure {
margin-left: 10px; /* reintroduce space between figures */
}
}
/* video containers */
.framed-galaxynexus-land-span-13 {
background: transparent url(device_galaxynexus_blank_land_span13.png) no-repeat scroll top left;
padding: 42px 122px 62px 126px;
overflow: hidden;
&,
& video,
& img {
width: 512px;
height: 286px;
}
}
.framed-galaxynexus-port-span-9 {
background: transparent url(device_galaxynexus_blank_port_span9.png) no-repeat scroll top left;
padding: 95px 122px 107px 124px;
overflow: hidden;
&,
& video,
& img {
width: 274px;
height: 488px;
}
}
.framed-galaxynexus-port-span-5 {
background: transparent url(device_galaxynexus_blank_port_span5.png) no-repeat scroll top left;
padding: 75px 31px 76px 33px;
overflow: hidden;
&,
& video,
& img {
width: 216px;
height: 384px;
}
}
/* landing page disclosures */
.landing-page-link {
text-decoration: none;
font-weight: $boldweight;
color: $text_color_dark;
&:after {
@include disclosure(right);
display: inline-block;
margin-left: 5px;
}
}
/* tooltips */
$tooltip_back_color: rgba(0,0,0,0.9);
.tooltip-box {
position: absolute;
background-color: $tooltip_back_color;
border-radius: 2px;
@include fontheight($small_text_size, $default_line_height);
color: #fff;
padding: 6px 10px;
max-width: 250px;
z-index: 10000;
&.below:after {
position: absolute;
content: '';
line-height: 0;
display: block;
top: -10px;
left: 5px;
border: 5px solid transparent;
border-bottom-color: $tooltip_back_color;
}
}
/* video note */
.video-instructions {
margin-top: 10px;
margin-bottom: 10px;
&:before {
content: '';
background: transparent url(ico_movie_inline.png) no-repeat scroll top left;
display: inline-block;
width: 12px;
height: 12px;
margin-right: 8px;
}
&:after {
content: 'Click to replay movie.';
}
}
/* download buttons */
.download-button {
display: block;
margin-bottom: 5px;
text-decoration: none;
background-color: $ics_blue;
color: #fff !important;
font-weight: $boldweight;
box-shadow: 0 1px 1px $lighter_shadow_color;
padding: 6px 12px;
border-radius: 2px;
&:hover,
&:focus {
background-color: $ics_blue_dark;
color: #fff !important;
}
&:active {
background-color: $ics_blue_darkest;
}
}
/* UI tables and other things found in Writing style and Settings pattern */
.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;
th,
td {
padding: 5px 10px;
}
thead th {
font-weight: 600;
}
tfoot td {
border-top: 1px solid #494949;
border-right: 1px solid #494949;
text-align: center;
&:last-child {
border-right: 0;
}
}
}
.layout-with-list-item-margins {
margin-left: 30px !important;
}
.emulate-content-left-padding {
margin-left: 10px;
}
.do-dont-label {
margin-bottom: 10px;
padding-left: 20px;
background: transparent none no-repeat scroll 0px 3px;
&.bad {
background-image: url(ico_wrong.png);
}
&.good {
background-image: url(ico_good.png);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 989 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 992 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 980 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 671 B

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1022 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 848 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 972 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1001 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 835 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 692 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,35 @@
// Simple JavaScript Templating
// John Resig - http://ejohn.org/ - MIT Licensed
(function(){
var cache = {};
this.tmpl = function tmpl(str, data){
// Figure out if we're getting a template, or if we need to
// load the template - and be sure to cache the result.
var fn = !/\W/.test(str) ?
cache[str] = cache[str] ||
tmpl(document.getElementById(str).innerHTML) :
// Generate a reusable function that will serve as a template
// generator (and which will be cached).
new Function("obj",
"var p=[],print=function(){p.push.apply(p,arguments);};" +
// Introduce the data as local variables using with(){}
"with(obj){p.push('" +
// Convert the template into pure JavaScript
str
.replace(/[\r\t\n]/g, " ")
.split("<%").join("\t")
.replace(/((^|%>)[^\t]*)'/g, "$1\r")
.replace(/\t=(.*?)%>/g, "',$1,'")
.split("\t").join("');")
.split("%>").join("p.push('")
.split("\r").join("\\'")
+ "');}return p.join('');");
// Provide some basic currying to the user
return data ? fn( data ) : fn;
};
})();

View File

@ -0,0 +1,8 @@
/*
Copyright (c) 2010, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.com/yui/license.html
version: 3.3.0
build: 3167
*/
html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}

View File

@ -1,15 +0,0 @@
<?cs def:custom_left_nav() ?>
<?cs if:doc.hidenav != "true" ?>
<?cs if:doc.type == "source" ?>
<?cs call:source_nav() ?>
<?cs elif:doc.type == "porting" ?>
<?cs call:porting_nav() ?>
<?cs elif:doc.type == "compatibility" ?>
<?cs call:compatibility_nav() ?>
<?cs elif:doc.type == "community" ?>
<?cs call:community_nav() ?>
<?cs elif:doc.type == "about" ?>
<?cs call:about_nav() ?>
<?cs /if ?>
<?cs /if ?>
<?cs /def ?>

View File

@ -4,24 +4,7 @@ def:custom_masthead() ?>
<div id="headerLeft">
<a href="<?cs var:toroot?>" tabindex="-1"><img
src="<?cs var:toroot ?>assets/images/open_source.png" alt="Android Open Source Project" /></a>
<ul class="<?cs if:home ?>home<?cs
elif:doc.type == "source" ?>source<?cs
elif:doc.type == "porting" ?>porting<?cs
elif:doc.type == "compatibility" ?>compatibility<?cs
elif:doc.type == "community" ?>community<?cs
elif:doc.type == "about" ?>about<?cs /if ?>">
<li id="home-link"><a href="<?cs var:toroot ?>index.html"><span>Home</span></a></li>
<li id="source-link"><a href="<?cs var:toroot ?>source/index.html"
onClick="return loadLast('source')"><span>Source</span></a></li>
<li id="porting-link"><a href="<?cs var:toroot ?>porting/index.html"
onClick="return loadLast('porting')"><span>Porting</span></a></li>
<li id="compatibility-link"><a href="<?cs var:toroot ?>compatibility/index.html"
onClick="return loadLast('compatibility')"><span>Compatibility</span></a></li>
<li id="community-link"><a href="<?cs var:toroot ?>community/index.html"
onClick="return loadLast('community')"><span>Community</span></a></li>
<li id="about-link"><a href="<?cs var:toroot ?>about/index.html"
onClick="return loadLast('about')"><span>About</span></a></li>
</ul>
</div>
<div id="headerRight">
<div id="headerLinks">
@ -33,4 +16,4 @@ def:custom_masthead() ?>
</div>
</div><!-- headerRight -->
</div><!-- header --><?cs
/def ?><?cs # custom_masthead ?>
/def ?><?cs # custom_masthead ?>

View File

@ -0,0 +1,156 @@
<?cs
def:sdk_nav() ?>
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav"><?cs
include:"../../../../frameworks/base/docs/html/sdk/sdk_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<?cs /def ?>
<?cs
def:resources_tab_nav() ?>
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav"><?cs
include:"../../../../frameworks/base/docs/html/resources/resources_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
addLoadEvent(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?>
<?cs
def:guide_nav() ?>
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav"><?cs
include:"../../../../vendor/pdk/data/google/docs/guide/guide_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
addLoadEvent(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?>
<?cs
def:design_nav() ?>
<?cs include:"../../../../frameworks/base/docs/html/design/design_toc.cs" ?>
<?cs /def ?>
<?cs # The default side navigation for the reference docs ?><?cs
def:default_left_nav() ?>
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="swapper">
<div id="nav-panels">
<div id="resize-packages-nav">
<div id="packages-nav">
<div id="index-links"><nobr>
<a href="<?cs var:toroot ?>reference/packages.html" <?cs if:(page.title == "Package Index") ?>class="selected"<?cs /if ?> >Package Index</a> |
<a href="<?cs var:toroot ?>reference/classes.html" <?cs if:(page.title == "Class Index") ?>class="selected"<?cs /if ?>>Class Index</a></nobr>
</div>
<ul>
<?cs call:package_link_list(docs.packages) ?>
</ul><br/>
</div> <!-- end packages -->
</div> <!-- end resize-packages -->
<div id="classes-nav"><?cs
if:subcount(class.package) ?>
<ul>
<?cs call:list("Interfaces", class.package.interfaces) ?>
<?cs call:list("Classes", class.package.classes) ?>
<?cs call:list("Enums", class.package.enums) ?>
<?cs call:list("Exceptions", class.package.exceptions) ?>
<?cs call:list("Errors", class.package.errors) ?>
</ul><?cs
elif:subcount(package) ?>
<ul>
<?cs call:class_link_list("Interfaces", package.interfaces) ?>
<?cs call:class_link_list("Classes", package.classes) ?>
<?cs call:class_link_list("Enums", package.enums) ?>
<?cs call:class_link_list("Exceptions", package.exceptions) ?>
<?cs call:class_link_list("Errors", package.errors) ?>
</ul><?cs
else ?>
<script>
/*addLoadEvent(maxPackageHeight);*/
</script>
<p style="padding:10px">Select a package to view its members</p><?cs
/if ?><br/>
</div><!-- end classes -->
</div><!-- end nav-panels -->
<div id="nav-tree" style="display:none">
<div id="index-links"><nobr>
<a href="<?cs var:toroot ?>reference/packages.html" <?cs if:(page.title == "Package Index") ?>class="selected"<?cs /if ?> >Package Index</a> |
<a href="<?cs var:toroot ?>reference/classes.html" <?cs if:(page.title == "Class Index") ?>class="selected"<?cs /if ?>>Class Index</a></nobr>
</div>
</div><!-- end nav-tree -->
</div><!-- end swapper -->
</div> <!-- end side-nav -->
<script>
if (!isMobile) {
$("<a href='#' id='nav-swap' onclick='swapNav();return false;' style='font-size:10px;line-height:9px;margin-left:1em;text-decoration:none;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>").appendTo("#side-nav");
chooseDefaultNav();
if ($("#nav-tree").is(':visible')) {
init_default_navtree("<?cs var:toroot ?>");
} else {
addLoadEvent(function() {
scrollIntoView("packages-nav");
scrollIntoView("classes-nav");
});
}
$("#swapper").css({borderBottom:"2px solid #aaa"});
} else {
swapNav(); // tree view should be used on mobile
}
</script><?cs
/def ?>
<?cs
def:custom_left_nav() ?><?cs
if:guide ?><?cs
call:guide_nav() ?><?cs
elif:resources ?><?cs
call:resources_tab_nav() ?><?cs
elif:sdk ?><?cs
call:sdk_nav() ?><?cs
else ?><?cs
call:default_left_nav() ?><?cs
/if ?><?cs
/def ?>
<?cs # appears at the bottom of every page ?><?cs
def:custom_cc_copyright() ?>
Except as noted, this content is
licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
Creative Commons Attribution 2.5</a>. For details and
restrictions, see the <a href="<?cs var:toroot ?>license.html">Content
License</a>.<?cs
/def ?>
<?cs
def:custom_copyright() ?>
Except as noted, this content is licensed under <a
href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
For details and restrictions, see the <a href="<?cs var:toroot ?>license.html">
Content License</a>.<?cs
/def ?>
<?cs
def:custom_footerlinks() ?>
<p>
<a href="http://www.google.com/intl/en/policies/" target="_blank">Privacy &amp; Terms</a> -
<a href="http://www.android.com/branding.html" target="_blank">Brand Guidelines</a> -
<a
href="http://code.google.com/p/android/issues/entry?template=Developer%20Documentation"
target="_blank">Report Document Issues</a>
</p><?cs
/def ?>
<?cs # appears on the right side of the blue bar at the bottom off every page ?><?cs
def:custom_buildinfo() ?>
Android <?cs var:sdk.version ?>&nbsp;r<?cs var:sdk.rel.id ?> - <?cs var:page.now ?>
<?cs /def ?>

View File

@ -1,26 +1,18 @@
<?cs # This file defines custom definitions for the masthead (logo, searchbox, tabs, etc) and
left nav (toc) that gets placed on all pages, for the open source site. See also the components/
directory. ?>
<?cs def:community_nav() ?>
<?cs
def:sdk_nav() ?>
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first side-nav-resizable" id="side-nav">
<div class="g-unit g-first" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav"><?cs
include:"../../../../development/pdk/docs/community/community_toc.cs" ?>
include:"../../../../frameworks/base/docs/html/sdk/sdk_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
addLoadEvent(function() {
scrollIntoView("devdoc-nav");
});
</script>
</div>
<?cs /def ?>
<?cs def:about_nav() ?>
<?cs
def:resources_tab_nav() ?>
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first side-nav-resizable" id="side-nav">
<div id="devdoc-nav"><?cs
include:"../../../../development/pdk/docs/about/about_toc.cs" ?>
<div class="g-unit g-first" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav"><?cs
include:"../../../../frameworks/base/docs/html/resources/resources_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
@ -28,13 +20,13 @@ directory. ?>
scrollIntoView("devdoc-nav");
});
</script>
</div>
<?cs /def ?>
<?cs def:porting_nav() ?>
<?cs
def:guide_nav() ?>
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first side-nav-resizable" id="side-nav">
<div id="devdoc-nav"><?cs
include:"../../../../development/pdk/docs/porting/porting_toc.cs" ?>
<div class="g-unit g-first" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav"><?cs
include:"../../../../vendor/pdk/data/google/docs/guide/guide_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
@ -42,50 +34,123 @@ directory. ?>
scrollIntoView("devdoc-nav");
});
</script>
</div>
<?cs /def ?>
<?cs def:source_nav() ?>
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first side-nav-resizable" id="side-nav">
<div id="devdoc-nav"><?cs
include:"../../../../development/pdk/docs/source/source_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
addLoadEvent(function() {
scrollIntoView("devdoc-nav");
});
</script>
</div>
<?cs /def ?>
<?cs def:compatibility_nav() ?>
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first side-nav-resizable" id="side-nav">
<div id="devdoc-nav"><?cs
include:"../../../../development/pdk/docs/compatibility/compatibility_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
addLoadEvent(function() {
scrollIntoView("devdoc-nav");
});
</script>
</div>
<?cs /def ?>
<?cs def:custom_cc_copyright() ?>
<?cs
def:design_nav() ?>
<?cs include:"../../../../frameworks/base/docs/html/design/design_toc.cs" ?>
<?cs /def ?>
<?cs def:custom_copyright() ?>
<?cs /def ?>
<?cs # The default side navigation for the reference docs ?><?cs
def:default_left_nav() ?>
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="swapper">
<div id="nav-panels">
<div id="resize-packages-nav">
<div id="packages-nav">
<div id="index-links"><nobr>
<a href="<?cs var:toroot ?>reference/packages.html" <?cs if:(page.title == "Package Index") ?>class="selected"<?cs /if ?> >Package Index</a> |
<a href="<?cs var:toroot ?>reference/classes.html" <?cs if:(page.title == "Class Index") ?>class="selected"<?cs /if ?>>Class Index</a></nobr>
</div>
<ul>
<?cs call:package_link_list(docs.packages) ?>
</ul><br/>
</div> <!-- end packages -->
</div> <!-- end resize-packages -->
<div id="classes-nav"><?cs
if:subcount(class.package) ?>
<ul>
<?cs call:list("Interfaces", class.package.interfaces) ?>
<?cs call:list("Classes", class.package.classes) ?>
<?cs call:list("Enums", class.package.enums) ?>
<?cs call:list("Exceptions", class.package.exceptions) ?>
<?cs call:list("Errors", class.package.errors) ?>
</ul><?cs
elif:subcount(package) ?>
<ul>
<?cs call:class_link_list("Interfaces", package.interfaces) ?>
<?cs call:class_link_list("Classes", package.classes) ?>
<?cs call:class_link_list("Enums", package.enums) ?>
<?cs call:class_link_list("Exceptions", package.exceptions) ?>
<?cs call:class_link_list("Errors", package.errors) ?>
</ul><?cs
else ?>
<script>
/*addLoadEvent(maxPackageHeight);*/
</script>
<p style="padding:10px">Select a package to view its members</p><?cs
/if ?><br/>
</div><!-- end classes -->
</div><!-- end nav-panels -->
<div id="nav-tree" style="display:none">
<div id="index-links"><nobr>
<a href="<?cs var:toroot ?>reference/packages.html" <?cs if:(page.title == "Package Index") ?>class="selected"<?cs /if ?> >Package Index</a> |
<a href="<?cs var:toroot ?>reference/classes.html" <?cs if:(page.title == "Class Index") ?>class="selected"<?cs /if ?>>Class Index</a></nobr>
</div>
</div><!-- end nav-tree -->
</div><!-- end swapper -->
</div> <!-- end side-nav -->
<script>
if (!isMobile) {
$("<a href='#' id='nav-swap' onclick='swapNav();return false;' style='font-size:10px;line-height:9px;margin-left:1em;text-decoration:none;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>").appendTo("#side-nav");
chooseDefaultNav();
if ($("#nav-tree").is(':visible')) {
init_default_navtree("<?cs var:toroot ?>");
} else {
addLoadEvent(function() {
scrollIntoView("packages-nav");
scrollIntoView("classes-nav");
});
}
$("#swapper").css({borderBottom:"2px solid #aaa"});
} else {
swapNav(); // tree view should be used on mobile
}
</script><?cs
/def ?>
<?cs
def:custom_left_nav() ?><?cs
if:guide ?><?cs
call:guide_nav() ?><?cs
elif:resources ?><?cs
call:resources_tab_nav() ?><?cs
elif:sdk ?><?cs
call:sdk_nav() ?><?cs
else ?><?cs
call:default_left_nav() ?><?cs
/if ?><?cs
/def ?>
<?cs # appears at the bottom of every page ?><?cs
def:custom_cc_copyright() ?>
Except as noted, this content is
licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
Creative Commons Attribution 2.5</a>. For details and
restrictions, see the <a href="<?cs var:toroot ?>license.html">Content
License</a>.<?cs
/def ?>
<?cs
def:custom_copyright() ?>
Except as noted, this content is licensed under <a
href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
For details and restrictions, see the <a href="<?cs var:toroot ?>license.html">
Content License</a>.<?cs
/def ?>
<?cs
def:custom_footerlinks() ?>
<p>
<a href="http://www.android.com/terms.html">Site Terms of Service</a> -
<a href="http://www.android.com/privacy.html">Privacy Policy</a>
<a href="http://www.google.com/intl/en/policies/" target="_blank">Privacy &amp; Terms</a> -
<a href="http://www.android.com/branding.html" target="_blank">Brand Guidelines</a> -
<a
href="http://code.google.com/p/android/issues/entry?template=Developer%20Documentation"
target="_blank">Report Document Issues</a>
</p><?cs
/def ?>
<?cs # appears on the right side of the blue bar at the bottom off every page ?>
<?cs def:custom_buildinfo() ?>
<?cs /def ?>
<?cs # appears on the right side of the blue bar at the bottom off every page ?><?cs
def:custom_buildinfo() ?>
Android <?cs var:sdk.version ?>&nbsp;r<?cs var:sdk.rel.id ?> - <?cs var:page.now ?>
<?cs /def ?>

View File

@ -0,0 +1,108 @@
<?cs include:"doctype.cs" ?>
<?cs include:"macros.cs" ?>
<html>
<?cs include:"head_tag.cs" ?>
<body class="gc-documentation" itemscope itemtype="http://schema.org/Article">
<?cs include:"header.cs" ?>
<div class="g-unit" id="doc-content"><a name="top"></a>
<div id="jd-header" class="guide-header">
<span class="crumb" itemprop="breadcrumb">
<?cs if:parent.link ?>
<a href="<?cs var:parent.link ?>"><?cs var:parent.title ?></a>:
<?cs else ?>&nbsp;
<?cs /if ?>
</span>
<h1 itemprop="name"><?cs var:page.title ?></h1>
</div>
<?cs # THIS IS THE MAIN DOC CONTENT ?>
<div id="jd-content">
<?cs if:trainingnavtop ?>
<div class="training-nav-top">
<?cs if:next.link ?>
<?cs if:startpage ?>
<div class="training-nav-button-next">
<a href="<?cs var:next.link ?>">
Get started
<span style="font-size:1.2em">&rsaquo;</span>
<span class="training-nav-button-title"><?cs var:next.title ?></span>
</a>
</div>
<?cs else ?><?cs # if not startpage ?>
<div class="training-nav-button-next">
<a href="<?cs var:next.link ?>">
Next lesson
<span style="font-size:1.2em">&rsaquo;</span>
<span class="training-nav-button-title"><?cs var:next.title ?></span>
</a>
</div>
<?cs /if ?><?cs # end if/else startpage ?>
<?cs /if ?><?cs # end if next.link ?>
<?cs if:previous.link ?>
<div class="training-nav-button-previous">
<a href="<?cs var:previous.link ?>">
<span style="font-size:1.2em">&lsaquo;</span>
Previous lesson
<span class="training-nav-button-title"><?cs var:previous.title ?></span>
</a>
</div>
<?cs /if ?><?cs # end if previous.link ?>
</div><!-- end training-nav-top -->
<?cs /if ?><?cs # end if trainingnavtop ?>
<div class="jd-descr" itemprop="articleBody">
<?cs call:tag_list(root.descr) ?>
</div>
<?cs if:!startpage && (previous.link || next.link) ?>
<div class="training-nav-bottom">
<?cs if:next.link ?>
<div class="training-nav-button-next">
<a href="<?cs var:next.link ?>">
Next lesson
<span style="font-size:1.2em">&rsaquo;</span>
<br/><span class="training-nav-button-title"><?cs var:next.title ?></span>
</a>
</div>
<?cs /if ?>
<?cs if:previous.link ?>
<div class="training-nav-button-previous">
<a href="<?cs var:previous.link ?>">
<span style="font-size:1.2em">&lsaquo;</span>
Previous lesson
<br/><span class="training-nav-button-title"><?cs var:previous.title ?></span>
</a>
</div>
<?cs /if ?>
</div> <!-- end training-nav -->
<?cs /if ?>
<a href="#top" style="float:right">&uarr; Go to top</a>
<?cs if:parent.link ?>
<p><a href="<?cs var:parent.link ?>">&larr; Back to <?cs var:parent.title ?></a></p>
<?cs /if ?>
</div> <!-- end jd-content -->
<?cs include:"footer.cs" ?>
</div><!-- end doc-content -->
<?cs include:"trailer.cs" ?>
</body>
</html>

View File

@ -1,41 +1,35 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="shortcut icon" type="image/x-icon" href="<?cs var:toroot ?>assets/favicon.ico" />
<?cs if:page.metaDescription ?>
<meta name="Description" content="<?cs var:page.metaDescription ?>">
<?cs /if ?>
<link rel="shortcut icon" type="image/x-icon" href="<?cs var:toroot ?>favicon.ico" />
<title><?cs
if:page.title ?><?cs
var:page.title ?><?cs
if:sdk.version ?> (<?cs
var:sdk.version ?>)<?cs
/if ?> | <?cs
/if ?>Android Open Source</title>
<link href="<?cs var:toroot ?>assets/android-developer-docs-devguide.css" rel="stylesheet" type="text/css" />
<!-- <link href="<?cs var:toroot ?>assets-pdk/pdk-local.css" rel="stylesheet" type="text/css" /> -->
var:page.title ?> | <?cs
/if ?>Android Developers</title><?cs
if:guide||sdk||resources ?>
<link href="<?cs var:toroot ?>assets/android-developer-docs-devguide.css" rel="stylesheet" type="text/css" /><?cs
else ?>
<link href="<?cs var:toroot ?>assets/android-developer-docs.css" rel="stylesheet" type="text/css" /><?cs
/if ?>
<script src="<?cs var:toroot ?>assets/search_autocomplete.js" type="text/javascript"></script>
<script src="<?cs var:toroot ?>assets/jquery-resizable.min.js" type="text/javascript"></script>
<script src="<?cs var:toroot ?>assets/android-developer-docs.js" type="text/javascript"></script>
<script src="<?cs var:toroot ?>assets/prettify.js" type="text/javascript"></script>
<script type="text/javascript">
setToRoot("<?cs var:toroot ?>");
</script>
<script type="text/javascript">
function resizeDoxFrameHeight() {
if(document.getElementById && !(document.all)) {
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
document.getElementById('doxygen').style.height = height+"pt";
}
else if(document.all) {
height= document.frames('doxygen').document.body.scrollHeight + 20;
document.all.doxygen.style.height = height;
}
}
</script>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("pre").addClass("prettyprint");
});
</script>
</script><?cs
if:reference ?>
<script src="<?cs var:toroot ?>assets/android-developer-reference.js" type="text/javascript"></script>
<script src="<?cs var:toroot ?>navtree_data.js" type="text/javascript"></script><?cs
/if ?><?cs
if:resources ?>
<script src="<?cs var:toroot ?>resources/resources-data.js" type="text/javascript"></script><?cs
/if ?>
<noscript>
<style type="text/css">
body{overflow:auto;}
html,body{overflow:auto;}
#body-content{position:relative; top:0;}
#doc-content{overflow:visible;border-left:3px solid #666;}
#side-nav{padding:0;}
@ -43,4 +37,4 @@
#resize-packages-nav{border-bottom:3px solid #666;}
</style>
</noscript>
</head>
</head>

View File

@ -0,0 +1,89 @@
<ul id="header-tabs" class="<?cs
if:reference ?>reference<?cs
elif:guide ?>guide<?cs
elif:sdk ?>sdk<?cs
elif:home ?>home<?cs
elif:resources ?>resources<?cs
elif:videos ?>videos<?cs /if ?>">
<li id="home-link"><a href="<?cs var:toroot ?><?cs
if:android.whichdoc != "online" ?>offline.html<?cs
else ?>index.html<?cs /if ?>">
<?cs if:!sdk.redirect ?>
<span class="en">Home</span>
<span style="display:none" class="de">Startseite</span>
<span style="display:none" class="es"></span>
<span style="display:none" class="fr"></span>
<span style="display:none" class="it"></span>
<span style="display:none" class="ja"></span>
<span style="display:none" class="zh-CN"></span>
<span style="display:none" class="zh-TW"></span>
<?cs /if ?>
</a></li>
<li id="sdk-link"><a href="<?cs var:toroot ?>sdk/index.html">
<span class="en">SDK</span>
</a></li>
<li id="guide-link"><a href="<?cs var:toroot ?>guide/index.html" onClick="return loadLast('guide')">
<?cs if:!sdk.redirect ?>
<span class="en">Dev Guide</span>
<span style="display:none" class="de">Handbuch</span>
<span style="display:none" class="es">Guía</span>
<span style="display:none" class="fr">Guide</span>
<span style="display:none" class="it">Guida</span>
<span style="display:none" class="ja"></span>
<span style="display:none" class="zh-CN"></span>
<span style="display:none" class="zh-TW"></span>
<?cs /if ?>
</a></li>
<li id="reference-link"><a href="<?cs var:toroot ?>reference/packages.html" onClick="return loadLast('reference')">
<?cs if:!sdk.redirect ?>
<span class="en">Reference</span>
<span style="display:none" class="de">Referenz</span>
<span style="display:none" class="es">Referencia</span>
<span style="display:none" class="fr">Référence</span>
<span style="display:none" class="it">Riferimento</span>
<span style="display:none" class="ja"></span>
<span style="display:none" class="zh-CN"></span>
<span style="display:none" class="zh-TW"></span>
<?cs /if ?>
</a></li>
<li id="resources-link"><a href="<?cs var:toroot ?>resources/index.html" onClick="return loadLast('resources')">
<?cs if:!sdk.redirect ?>
<span class="en">Resources</span>
<span style="display:none" class="de"></span>
<span style="display:none" class="es"></span>
<span style="display:none" class="fr"></span>
<span style="display:none" class="it"></span>
<span style="display:none" class="ja"></span>
<span style="display:none" class="zh-CN"></span>
<span style="display:none" class="zh-TW"></span>
<?cs /if ?>
</a></li>
<li id="videos-link"><a href="<?cs var:toroot ?>videos/index.html" onClick="return loadLast('videos')">
<?cs if:!sdk.redirect ?>
<span class="en">Videos</span>
<span style="display:none" class="de"></span>
<span style="display:none" class="es"></span>
<span style="display:none" class="fr"></span>
<span style="display:none" class="it"></span>
<span style="display:none" class="ja"></span>
<span style="display:none" class="zh-CN"></span>
<span style="display:none" class="zh-TW"></span>
<?cs /if ?>
</a></li>
<li><a href="http://android-developers.blogspot.com" onClick="return requestAppendHL(this.href)">
<?cs if:!sdk.redirect ?>
<span class="en">Blog</span>
<span style="display:none" class="de"></span>
<span style="display:none" class="es"></span>
<span style="display:none" class="fr"></span>
<span style="display:none" class="it"></span>
<span style="display:none" class="ja"></span>
<span style="display:none" class="zh-CN"></span>
<span style="display:none" class="zh-TW"></span>
<?cs /if ?>
</a></li>
</ul>

View File

@ -0,0 +1,53 @@
<?cs include:"doctype.cs" ?>
<?cs include:"macros.cs" ?>
<?cs set:resources="true" ?>
<html>
<?cs include:"head_tag.cs" ?>
<?cs include:"header.cs" ?>
<body class="gc-documentation">
<a name="top"></a>
<div class="g-unit" id="doc-content">
<div id="jd-header" class="guide-header">
<span class="crumb">
<a href="<?cs var:toroot ?>resources/browser.html?tag=sample">Sample Code</a> >
</span>
<h1><?cs var:page.title ?></h1>
</div>
<div id="jd-content">
<p><a href="../index.html">&larr; Back</a></p>
<?cs var:summary ?>
<?cs if:subcount(subdirs) ?>
<h2>Subdirectories</h2>
<ul class="nolist">
<?cs each:dir=subdirs ?>
<li><a href="<?cs var:dir.name ?>/index.html"><?cs
var:dir.name ?>/</a></li>
<?cs /each ?>
</ul>
<?cs /if ?>
<?cs if:subcount(files) ?>
<h2>Files</h2>
<ul class="nolist">
<?cs each:file=files ?>
<li><a href="<?cs var:file.href ?>"><?cs
var:file.name ?></a></li>
<?cs /each ?>
</ul>
<?cs /if ?>
</div><!-- end jd-content -->
<?cs include:"footer.cs" ?>
</div><!-- end doc-content -->
<?cs include:"trailer.cs" ?>
</body>
</html>

View File

@ -0,0 +1,256 @@
<?cs include:"doctype.cs" ?>
<?cs include:"macros.cs" ?>
<html>
<?cs if:sdk.redirect ?>
<head>
<title>Redirecting...</title>
<meta http-equiv="refresh" content="0;url=<?cs var:toroot ?>sdk/<?cs
if:sdk.redirect.path ?><?cs var:sdk.redirect.path ?><?cs
else ?>index.html<?cs /if ?>">
<link href="<?cs var:toroot ?>assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
</head>
<?cs else ?>
<?cs include:"head_tag.cs" ?>
<?cs /if ?>
<body class="gc-documentation" itemscope itemtype="http://schema.org/CreativeWork">
<a name="top"></a>
<?cs call:custom_masthead() ?>
<?cs call:sdk_nav() ?>
<?cs if:sdk.redirect ?>
<div class="g-unit">
<div id="jd-content">
<p>Redirecting to
<a href="<?cs var:toroot ?>sdk/<?cs
if:sdk.redirect.path ?><?cs var:sdk.redirect.path ?><?cs
else ?>index.html<?cs /if ?>"><?cs
if:sdk.redirect.path ?><?cs var:sdk.redirect.path ?><?cs
else ?>Download the SDK<?cs /if ?>
</a> ...</p>
<?cs else ?>
<?cs # else, if NOT redirect ...
#
#
# The following is for SDK/NDK pages
#
#
?>
<div class="g-unit" id="doc-content" >
<div id="jd-header" class="guide-header" >
<span class="crumb">&nbsp;</span>
<h1 itemprop="name"><?cs if:android.whichdoc == "online" ?>Download the <?cs /if ?><?cs
var:page.title ?></h1>
</div>
<div id="jd-content" itemprop="description">
<?cs if:sdk.not_latest_version ?>
<div class="special">
<p><strong>This is NOT the current Android SDK release.</strong></p>
<p><a href="/sdk/index.html">Download the current Android SDK</a></p>
</div>
<?cs /if ?>
<?cs if:ndk ?>
<?cs #
#
#
#
#
#
#
# the following is for the NDK
#
# (nested in if/else redirect)
#
#
#
#
?>
<p>The Android NDK is a companion tool to the Android SDK that lets you build
performance-critical portions of your apps in native code. It provides headers and
libraries that allow you to build activities, handle user input, use hardware sensors,
access application resources, and more, when programming in C or C++. If you write
native code, your applications are still packaged into an .apk file and they still run
inside of a virtual machine on the device. The fundamental Android application model
does not change.</p>
<p>Using native code does not result in an automatic performance increase,
but always increases application complexity. If you have not run into any limitations
using the Android framework APIs, you probably do not need the NDK. Read <a
href="<?cs var:toroot ?>sdk/ndk/overview.html">What is the NDK?</a> for more information about what
the NDK offers and whether it will be useful to you.
</p>
<p>
The NDK is designed for use <em>only</em> in conjunction with the
Android SDK. If you have not already installed and setup the <a
href="http://developer.android.com/sdk/index.html">Android SDK</a>, please
do so before downloading the NDK.
</p>
<table class="download">
<tr>
<th>Platform</th>
<th>Package</th>
<th>Size</th>
<th>MD5 Checksum</th>
</tr>
<tr>
<td>Windows</td>
<td>
<a href="http://dl.google.com/android/ndk/<?cs var:ndk.win_download ?>"><?cs var:ndk.win_download ?></a>
</td>
<td><?cs var:ndk.win_bytes ?> bytes</td>
<td><?cs var:ndk.win_checksum ?></td>
</tr>
<tr class="alt-color">
<td>Mac OS X (intel)</td>
<td>
<a href="http://dl.google.com/android/ndk/<?cs var:ndk.mac_download ?>"><?cs var:ndk.mac_download ?></a>
</td>
<td><?cs var:ndk.mac_bytes ?> bytes</td>
<td><?cs var:ndk.mac_checksum ?></td>
</tr>
<tr>
<td>Linux 32/64-bit (x86)</td>
<td>
<a href="http://dl.google.com/android/ndk/<?cs var:ndk.linux_download ?>"><?cs var:ndk.linux_download ?></a>
</td>
<td><?cs var:ndk.linux_bytes ?> bytes</td>
<td><?cs var:ndk.linux_checksum ?></td>
</tr>
</table>
<?cs else ?>
<?cs # end if NDK ...
#
#
#
#
#
#
# the following is for the SDK
#
# (nested in if/else redirect and if/else NDK)
#
#
#
#
?>
<?cs if:android.whichdoc == "online" ?>
<p>Welcome Developers! If you are new to the Android SDK, please read the steps below, for an
overview of how to set up the SDK. </p>
<p>If you're already using the Android SDK, you should
update to the latest tools or platform using the <em>Android SDK and AVD Manager</em>, rather than
downloading a new SDK starter package. See <a
href="<?cs var:toroot ?>sdk/adding-components.html">Adding SDK Components</a>.</p>
<table class="download">
<tr>
<th>Platform</th>
<th>Package</th>
<th>Size</th>
<th>MD5 Checksum</th>
</tr>
<tr>
<td rowspan="2">Windows</td>
<td>
<a onclick="onDownload(this)" href="http://dl.google.com/android/<?cs var:sdk.win_download
?>"><?cs var:sdk.win_download ?></a>
</td>
<td><?cs var:sdk.win_bytes ?> bytes</td>
<td><?cs var:sdk.win_checksum ?></td>
</tr>
<tr>
<!-- blank TD from Windows rowspan -->
<td>
<a onclick="onDownload(this)" href="http://dl.google.com/android/<?cs var:sdk.win_installer
?>"><?cs var:sdk.win_installer ?></a> (Recommended)
</td>
<td><?cs var:sdk.win_installer_bytes ?> bytes</td>
<td><?cs var:sdk.win_installer_checksum ?></td>
</tr>
<tr class="alt-color">
<td>Mac OS X (intel)</td>
<td>
<a onclick="onDownload(this)" href="http://dl.google.com/android/<?cs var:sdk.mac_download
?>"><?cs var:sdk.mac_download ?></a>
</td>
<td><?cs var:sdk.mac_bytes ?> bytes</td>
<td><?cs var:sdk.mac_checksum ?></td>
</tr>
<tr>
<td>Linux (i386)</td>
<td>
<a onclick="onDownload(this)" href="http://dl.google.com/android/<?cs var:sdk.linux_download
?>"><?cs var:sdk.linux_download ?></a>
</td>
<td><?cs var:sdk.linux_bytes ?> bytes</td>
<td><?cs var:sdk.linux_checksum ?></td>
</tr>
</table>
<div id="next-steps" style="display:none">
<p><b><em><span id="filename"></span></em> is now downloading. Follow the steps below to
get started.</b></p>
</div>
<script type="text/javascript">
function onDownload(link) {
$("#filename").text($(link).html());
$("#next-steps").show();
}
</script>
<?cs else ?> <?cs # end if online ?>
<?cs if:sdk.preview ?><?cs # it's preview offline docs ?>
<p>Welcome developers! We are pleased to provide you with a preview SDK for the upcoming
Android 3.0 release, to give you a head-start on developing applications for it.
</p>
<p>See the <a
href="<?cs var:toroot ?>sdk/preview/start.html">Getting Started</a> document for more information
about how to set up the preview SDK and get started.</p>
<style type="text/css">
.non-preview { display:none; }
</style>
<?cs else ?><?cs # it's normal offline docs ?>
<style type="text/css">
p.offline-message { display:block; }
p.online-message { display:none; }
</style>
<?cs /if ?>
<?cs /if ?> <?cs # end if/else online ?>
<?cs /if ?> <?cs # end if/else NDK ?>
<?cs /if ?> <?cs # end if/else redirect ?>
<?cs call:tag_list(root.descr) ?>
</div><!-- end jd-content -->
<?cs if:!sdk.redirect ?>
<?cs include:"footer.cs" ?>
<?cs /if ?>
</div><!-- end g-unit -->
<?cs include:"trailer.cs" ?>
</body>
</html>