blob: b80e59a556b0d8435d80ed636e5bdd5da581751c [file] [log] [blame]
Roman Nurike577d722010-04-16 15:57:34 -07001var ANDROID_TAGS = {
2 type: {
3 'article': 'Article',
4 'tutorial': 'Tutorial',
5 'sample': 'Sample',
6 'video': 'Video',
7 'library': 'Code Library'
8 },
9 topic: {
10 'accessibility': 'Accessibility',
11 'accountsync': 'Accounts & Sync',
12 'bestpractice': 'Best Practices',
13 'communication': 'Communication',
14 'compatibility': 'Compatibility',
15 'data': 'Data Access',
16 'drawing': 'Canvas Drawing',
17 'gamedev': 'Game Development',
18 'gl': 'OpenGL ES',
19 'input': 'Input Methods',
20 'intent': 'Intents',
21 'layout': 'Layouts/Views',
22 'media': 'Multimedia',
23 'newfeature': 'New Features',
24 'performance': 'Performance',
25 'search': 'Search',
26 'testing': 'Testing',
27 'ui': 'User Interface',
Roman Nurik94be4a52011-02-11 14:46:00 -080028 'web': 'Web Content',
29 'widgets': 'App Widgets'
Roman Nurike577d722010-04-16 15:57:34 -070030 },
31 misc: {
32 'external': 'External',
33 'new': 'New'
34 }
35};
36
37var ANDROID_RESOURCES = [
38
39//////////////////////////
40/// TECHNICAL ARTICLES ///
41//////////////////////////
42
43 {
44 tags: ['article', 'performance', 'bestpractice'],
45 path: 'articles/avoiding-memory-leaks.html',
46 title: {
47 en: 'Avoiding Memory Leaks'
48 },
49 description: {
50 en: 'Mobile devices often have limited memory, and memory leaks can cause your application to waste this valuable resource without your knowledge. This article provides tips to help you avoid common causes of memory leaks on the Android platform.'
51 }
52 },
53 {
54 tags: ['article', 'compatibility'],
55 path: 'articles/backward-compatibility.html',
56 title: {
57 en: 'Backward Compatibility'
58 },
59 description: {
60 en: 'The Android platform strives to ensure backwards compatibility. However, sometimes you want to use new features which aren\'t supported on older platforms. This article discusses strategies for selectively using these features based on availability, allowing you to keep your applications portable across a wide range of devices.'
61 }
62 },
63 {
64 tags: ['article', 'intent'],
65 path: 'articles/can-i-use-this-intent.html',
66 title: {
67 en: 'Can I Use this Intent?'
68 },
69 description: {
70 en: 'Android offers a very powerful and yet easy-to-use message type called an intent. You can use intents to turn applications into high-level libraries and make code modular and reusable. While it is nice to be able to make use of a loosely coupled API, there is no guarantee that the intent you send will be received by another application. This article describes a technique you can use to find out whether the system contains any application capable of responding to the intent you want to use.'
71 }
72 },
73 {
74 tags: ['article', 'input'],
75 path: 'articles/creating-input-method.html',
76 title: {
77 en: 'Creating an Input Method'
78 },
79 description: {
80 en: 'Input Method Editors (IMEs) provide the mechanism for entering text into text fields and other Views. Android devices come bundled with at least one IME, but users can install additional IMEs. This article covers the basics of developing an IME for the Android platform.'
81 }
82 },
83 {
84 tags: ['article', 'drawing', 'ui'],
85 path: 'articles/drawable-mutations.html',
86 title: {
87 en: 'Drawable Mutations'
88 },
89 description: {
90 en: 'Drawables are pluggable drawing containers that allow applications to display graphics. This article explains some common pitfalls when trying to modify the properties of multiple Drawables.'
91 }
92 },
93 {
94 tags: ['article', 'bestpractice', 'ui'],
95 path: 'articles/faster-screen-orientation-change.html',
96 title: {
97 en: 'Faster Screen Orientation Change'
98 },
99 description: {
100 en: 'When an Android device changes its orientation, the default behavior is to automatically restart the current activity with a new configuration. However, this can become a bottleneck in applications that access a large amount of external data. This article discusses how to gracefully handle this situation without resorting to manually processing configuration changes.'
101 }
102 },
103 {
104 tags: ['article', 'compatibility'],
105 path: 'articles/future-proofing.html',
106 title: {
107 en: 'Future-Proofing Your Apps'
108 },
109 description: {
110 en: 'A collection of common sense advice to help you ensure that your applications don\'t break when new versions of the Android platform are released.'
111 }
112 },
113 {
114 tags: ['article', 'input'],
115 path: 'articles/gestures.html',
116 title: {
117 en: 'Gestures'
118 },
119 description: {
120 en: 'Touch screens allow users to perform gestures, such as tapping, dragging, flinging, or sliding, to perform various actions. The gestures API enables your application to recognize even complicated gestures with ease. This article explains how to integrate this API into an application.'
121 }
122 },
123 {
124 tags: ['article', 'gamedev', 'gl'],
125 path: 'articles/glsurfaceview.html',
126 title: {
127 en: 'Introducing GLSurfaceView'
128 },
129 description: {
130 en: 'This article provides an overview of GLSurfaceView, a class that makes it easy to implement 2D or 3D OpenGL rendering inside of an Android application.'
131 }
132 },
133 {
134 tags: ['article', 'ui', 'layout'],
135 path: 'articles/layout-tricks-reuse.html',
136 title: {
137 en: 'Layout Tricks: Creating Reusable UI Components'
138 },
139 description: {
140 en: 'Learn how to combine multiple standard UI widgets into a single high-level component, which can be reused throughout your application.'
141 }
142 },
143 {
144 tags: ['article', 'layout', 'ui', 'performance', 'bestpractice'],
145 path: 'articles/layout-tricks-efficiency.html',
146 title: {
147 en: 'Layout Tricks: Creating Efficient Layouts'
148 },
149 description: {
150 en: 'Learn how to optimize application layouts as this article walks you through converting a LinearLayout into a RelativeLayout, and analyzes the resulting implications on performance.'
151 }
152 },
153 {
154 tags: ['article', 'layout', 'ui', 'performance', 'bestpractice'],
155 path: 'articles/layout-tricks-stubs.html',
156 title: {
157 en: 'Layout Tricks: Using ViewStubs'
158 },
159 description: {
160 en: 'Learn about using ViewStubs inside an application\'s layout in order to inflate rarely used UI elements, without the performance implications which would otherwise be caused by using the <code>&lt;include&gt;</code> tag.'
161 }
162 },
163 {
164 tags: ['article', 'layout', 'ui', 'performance', 'bestpractice'],
165 path: 'articles/layout-tricks-merge.html',
166 title: {
167 en: 'Layout Tricks: Merging Layouts'
168 },
169 description: {
170 en: 'Learn how to use the <code>&lt;merge&gt;</code> tag in your XML layouts in order to avoid unnecessary levels of hierarchy within an application\'s view tree.'
171 }
172 },
173 {
174 tags: ['article', 'ui', 'performance'],
175 path: 'articles/listview-backgrounds.html',
176 title: {
177 en: 'ListView Backgrounds: An Optimization'
178 },
179 description: {
180 en: 'ListViews are very popular widgets within the Android framework. This article describes some of the optimizations used by the ListView widget, and how to avoid some common issues that this causes when trying to use a custom background.'
181 }
182 },
183 {
Roman Nurika35f6562011-02-04 14:28:22 -0800184 tags: ['article', 'ui'],
Roman Nurike577d722010-04-16 15:57:34 -0700185 path: 'articles/live-folders.html',
186 title: {
187 en: 'Live Folders'
188 },
189 description: {
190 en: 'Live Folders allow users to display any source of data on their home screen without launching an application. This article discusses how to export an application\'s data in a format suitable for display inside of a live folder.'
191 }
192 },
193 {
Roman Nurika35f6562011-02-04 14:28:22 -0800194 tags: ['article', 'ui'],
Roman Nurike577d722010-04-16 15:57:34 -0700195 path: 'articles/live-wallpapers.html',
196 title: {
197 en: 'Live Wallpapers'
198 },
199 description: {
200 en: 'Live wallpapers are richer, animated, interactive backgrounds that users can display in their home screens. Learn how to create a live wallpaper and bundle it in an application that users can install on their devices.'
201 }
202 },
203 {
204 tags: ['article', 'input'],
205 path: 'articles/on-screen-inputs.html',
206 title: {
207 en: 'Onscreen Input Methods'
208 },
209 description: {
210 en: 'The Input Method Framework (IMF) allows users to take advantage of on-screen input methods, such as software keyboards. This article provides an overview of Input Method Editors (IMEs) and how applications interact with them.'
211 }
212 },
213 {
214 tags: ['article', 'performance', 'bestpractice'],
215 path: 'articles/painless-threading.html',
216 title: {
217 en: 'Painless Threading'
218 },
219 description: {
220 en: 'This article discusses the threading model used by Android applications and how applications can ensure best UI performance by spawning worker threads to handle long-running operations, rather than handling them in the main thread. The article also explains the API that your application can use to interact with Android UI toolkit components running on the main thread and spawn managed worker threads.'
221 }
222 },
223 {
224 tags: ['article', 'ui', 'search'],
225 path: 'articles/qsb.html',
226 title: {
227 en: 'Quick Search Box'
228 },
229 description: {
230 en: 'Quick Search Box (QSB) is a powerful, system-wide search framework. QSB makes it possible for users to quickly and easily find what they\'re looking for, both on their devices and on the web. This article discusses how to work with the QSB framework to add new search results for an installed application.'
231 }
232 },
233 {
234 tags: ['article', 'ui'],
235 path: 'articles/touch-mode.html',
236 title: {
237 en: 'Touch Mode'
238 },
239 description: {
240 en: 'This article explains the touch mode, one of the most important principles of Android\'s UI toolkit. Whenever a user interacts with a device\'s touch screen, the system enters touch mode. While simple in concept, there are important implications touch mode that are often overlooked.'
241 }
242 },
243 {
244 tags: ['article', 'performance', 'bestpractice'],
245 path: 'articles/track-mem.html',
246 title: {
247 en: 'Tracking Memory Allocations'
248 },
249 description: {
250 en: 'This article discusses how to use the Allocation Tracker tool to observe memory allocations and avoid performance problems that would otherwise be caused by ignoring the effect of Dalvik\'s garbage collector.'
251 }
252 },
253 {
Roman Nurika35f6562011-02-04 14:28:22 -0800254 tags: ['article'],
Roman Nurike577d722010-04-16 15:57:34 -0700255 path: 'articles/ui-1.5.html',
256 title: {
257 en: 'UI Framework Changes in Android 1.5'
258 },
259 description: {
260 en: 'Explore the UI changes that were introduced in Android 1.5, compared with the UI provided in Android 1.0 and 1.1.'
261 }
262 },
263 {
Roman Nurika35f6562011-02-04 14:28:22 -0800264 tags: ['article'],
Roman Nurike577d722010-04-16 15:57:34 -0700265 path: 'articles/ui-1.6.html',
266 title: {
267 en: 'UI Framework Changes in Android 1.6'
268 },
269 description: {
270 en: 'Explore the UI changes that were introduced in Android 1.6, compared with the UI provided in Android 1.5. In particular, this article discusses changes to RelativeLayouts and click listeners.'
271 }
272 },
273 {
274 tags: ['article', 'ui', 'bestpractice'],
275 path: 'articles/timed-ui-updates.html',
276 title: {
277 en: 'Updating the UI from a Timer'
278 },
279 description: {
280 en: 'Learn about how to use Handlers as a more efficient replacement for java.util.Timer on the Android platform.'
281 }
282 },
283 {
284 tags: ['article', 'ui', 'accessibility'],
285 path: 'articles/tts.html',
286 title: {
287 en: 'Using Text-to-Speech'
288 },
289 description: {
290 en: 'The text-to-speech API lets your application "speak" to users, in any of several languages. This article provides an overview of the TTS API and how you use to add speech capabilities to your application.'
291 }
292 },
293 {
294 tags: ['article', 'ui', 'web'],
295 path: 'articles/using-webviews.html',
296 title: {
297 en: 'Using WebViews'
298 },
299 description: {
300 en: 'WebViews allow an application to dynamically display HTML and execute JavaScript, without relinquishing control to a separate browser application. This article introduces the WebView classes and provides a sample application that demonstrates its use.'
301 }
302 },
303 {
304 tags: ['article', 'ui'],
305 path: 'articles/wikinotes-linkify.html',
306 title: {
307 en: 'WikiNotes: Linkify your Text!'
308 },
309 description: {
310 en: 'This article introduces WikiNotes for Android, part of the Apps for Android project. It covers the use of Linkify to turn ordinary text views into richer, link-oriented content that causes Android intents to fire when a link is selected.'
311 }
312 },
313 {
314 tags: ['article', 'intent'],
315 path: 'articles/wikinotes-intents.html',
316 title: {
317 en: 'WikiNotes: Routing Intents'
318 },
319 description: {
320 en: 'This article illustrates how an application, in this case the WikiNotes sample app, can use intents to route various types of linked text to the application that handles that type of data. For example, an app can use intents to route a linked telephone number to a dialer app and a web URL to a browser.'
321 }
322 },
323 {
324 tags: ['article', 'ui', 'performance'],
325 path: 'articles/window-bg-speed.html',
326 title: {
327 en: 'Window Backgrounds & UI Speed'
328 },
329 description: {
330 en: 'Some Android applications need to squeeze every bit of performance out of the UI toolkit and there are many ways to do so. In this article, you will discover how to speed up the drawing and the perceived startup time of your activities. Both of these techniques rely on a single feature, the window\'s background drawable.'
331 }
332 },
333 {
334 tags: ['article', 'performance', 'bestpractice'],
335 path: 'articles/zipalign.html',
336 title: {
337 en: 'Zipalign: an Easy Optimization'
338 },
339 description: {
340 en: 'The Android SDK includes a tool called zipalign that optimizes the way an application is packaged. Running zipalign against your application enables Android to interact with it more efficiently at run time and thus has the potential to make it and the overall system run faster. This article provides a high-level overview of the zipalign tool and its use.'
341 }
342 },
343
344///////////////////
345/// SAMPLE CODE ///
346///////////////////
Robert Ly3f9b6442011-01-19 18:14:50 -0800347
348 {
Roman Nurik94be4a52011-02-11 14:46:00 -0800349 tags: ['sample', 'new'],
Robert Ly3f9b6442011-01-19 18:14:50 -0800350 path: 'samples/AccelerometerPlay/index.html',
351 title: {
352 en: 'Accelerometer Play'
353 },
354 description: {
Roman Nurik94be4a52011-02-11 14:46:00 -0800355 en: 'An example of using the accelerometer to integrate the device\'s acceleration to a position using the Verlet method. This is illustrated with a very simple particle system comprised of a few iron balls freely moving on an inclined wooden table. The inclination of the virtual table is controlled by the device\'s accelerometer.'
Robert Ly3f9b6442011-01-19 18:14:50 -0800356 }
357 },
358 {
Roman Nurik94be4a52011-02-11 14:46:00 -0800359 tags: ['sample', 'new', 'accessibility'],
Robert Ly3f9b6442011-01-19 18:14:50 -0800360 path: 'samples/AccessibilityService/index.html',
361 title: {
362 en: 'Accessibility Service'
363 },
364 description: {
365 en: 'Illustrates an accessibility service that provides custom feedback for the Clock application which comes by default with Android devices'
366 }
367 },
Roman Nurike577d722010-04-16 15:57:34 -0700368 {
369 tags: ['sample', 'layout', 'ui'],
370 path: 'samples/ApiDemos/index.html',
371 title: {
372 en: 'API Demos'
373 },
374 description: {
375 en: 'A variety of small applications that demonstrate an extensive collection of framework topics.'
376 }
377 },
378 {
Robert Ly3f9b6442011-01-19 18:14:50 -0800379 tags: ['sample', 'data', 'newfeature', 'accountsync'],
Roman Nurike577d722010-04-16 15:57:34 -0700380 path: 'samples/BackupRestore/index.html',
381 title: {
382 en: 'Backup and Restore'
383 },
384 description: {
385 en: 'Illustrates a few different approaches that an application developer can take when integrating with the Android Backup Manager using the BackupAgent API introduced in Android 2.2.'
386 }
387 },
388 {
389 tags: ['sample', 'communication'],
390 path: 'samples/BluetoothChat/index.html',
391 title: {
392 en: 'Bluetooth Chat'
393 },
394 description: {
395 en: 'An application for two-way text messaging over Bluetooth.'
396 }
397 },
398 {
399 tags: ['sample', 'accountsync'],
400 path: 'samples/BusinessCard/index.html',
401 title: {
402 en: 'BusinessCard'
403 },
404 description: {
405 en: 'An application that demonstrates how to launch the built-in contact picker from within an activity. This sample also uses reflection to ensure that the correct version of the contacts API is used, depending on which API level the application is running under.'
406 }
407 },
408 {
409 tags: ['sample', 'accountsync'],
410 path: 'samples/ContactManager/index.html',
411 title: {
412 en: 'Contact Manager'
413 },
414 description: {
415 en: 'An application that demonstrates how to query the system contacts provider using the <code>ContactsContract</code> API, as well as insert contacts into a specific account.'
416 }
417 },
418 {
Robert Ly3f9b6442011-01-19 18:14:50 -0800419 tags: ['sample', 'ui'],
420 path: 'samples/CubeLiveWallpaper/index.html',
421 title: {
422 en: 'Cube Live Wallpaper'
423 },
424 description: {
425 en: 'An application that demonstrates how to create a live wallpaper and bundle it in an application that users can install on their devices.'
426 }
427 },
428 {
Roman Nurike577d722010-04-16 15:57:34 -0700429 tags: ['sample'],
430 path: 'samples/Home/index.html',
431 title: {
432 en: 'Home'
433 },
434 description: {
435 en: 'A home screen replacement application.'
436 }
437 },
438 {
Roman Nurika35f6562011-02-04 14:28:22 -0800439 tags: ['sample', 'new', 'newfeature', 'ui'],
440 path: 'samples/HoneycombGallery/index.html',
Alexander Lucasd8472542011-01-19 12:15:38 -0800441 title: {
442 en: 'Honeycomb Gallery'
443 },
444 description: {
Roman Nurika35f6562011-02-04 14:28:22 -0800445 en: 'An image gallery application using APIs that are new in Android 3.0 (a.k.a. Honeycomb).'
Alexander Lucasd8472542011-01-19 12:15:38 -0800446 }
447 },
448 {
Roman Nurike577d722010-04-16 15:57:34 -0700449 tags: ['sample', 'gamedev', 'media'],
450 path: 'samples/JetBoy/index.html',
451 title: {
452 en: 'JetBoy'
453 },
454 description: {
455 en: 'A game that demonstrates the SONiVOX JET interactive music technology, with <code><a href="/reference/android/media/JetPlayer.html">JetPlayer</a></code>.'
456 }
457 },
458 {
Roman Nurike577d722010-04-16 15:57:34 -0700459 tags: ['sample', 'gamedev', 'media'],
460 path: 'samples/LunarLander/index.html',
461 title: {
462 en: 'Lunar Lander'
463 },
464 description: {
465 en: 'A classic Lunar Lander game.'
466 }
467 },
468 {
469 tags: ['sample', 'ui', 'bestpractice', 'layout'],
470 path: 'samples/MultiResolution/index.html',
471 title: {
472 en: 'Multiple Resolutions'
473 },
474 description: {
475 en: 'A sample application that shows how to use resource directory qualifiers to provide different resources for different screen configurations.'
476 }
477 },
478 {
479 tags: ['sample', 'data'],
Robert Ly3f9b6442011-01-19 18:14:50 -0800480 path: 'samples/NFCDemo/index.html',
481 title: {
482 en: 'NFC Demo'
483 },
484 description: {
485 en: 'An application for reading NFC Forum Type 2 Tags using the NFC APIs'
486 }
487 },
488 {
489 tags: ['sample', 'data'],
Roman Nurike577d722010-04-16 15:57:34 -0700490 path: 'samples/NotePad/index.html',
491 title: {
492 en: 'Note Pad'
493 },
494 description: {
495 en: 'An application for saving notes. Similar (but not identical) to the <a href="/resources/tutorials/notepad/index.html">Notepad tutorial</a>.'
496 }
497 },
498 {
Robert Ly6518f482011-02-14 18:57:46 -0800499 tags: ['sample', 'new'],
500 path: 'samples/Renderscript/index.html',
501 title: {
502 en: 'Renderscript'
503 },
504 description: {
505 en: 'A set of samples that demonstrate how to use various features of the Renderscript APIs.'
506 }
507 },
508 {
Roman Nurike577d722010-04-16 15:57:34 -0700509 tags: ['sample', 'accountsync'],
510 path: 'samples/SampleSyncAdapter/index.html',
511 title: {
512 en: 'SampleSyncAdapter'
513 },
514 description: {
515 en: 'Demonstrates how an application can communicate with a cloud-based service and synchronize its data with data stored locally in a content provider. The sample uses two related parts of the Android framework &mdash; the account manager and the synchronization manager (through a sync adapter).'
516 }
517 },
518 {
Scott Main183ecbc2010-11-19 10:20:45 -0800519 tags: ['sample', 'ui', 'search'],
Roman Nurike577d722010-04-16 15:57:34 -0700520 path: 'samples/SearchableDictionary/index.html',
521 title: {
522 en: 'Searchable Dictionary v2'
523 },
524 description: {
525 en: 'A sample application that demonstrates Android\'s search framework, including how to provide search suggestions for Quick Search Box.'
526 }
527 },
528 {
Robert Ly3f9b6442011-01-19 18:14:50 -0800529 tags: ['sample'],
530 path: 'samples/SipDemo/index.html',
531 title: {
532 en: 'SIP Demo'
533 },
534 description: {
535 en: 'A demo application highlighting how to make internet-based calls with the SIP API.'
536 }
537 },
538 {
Roman Nurike577d722010-04-16 15:57:34 -0700539 tags: ['sample', 'layout', 'ui'],
540 path: 'samples/Snake/index.html',
541 title: {
542 en: 'Snake'
543 },
544 description: {
545 en: 'An implementation of the classic game "Snake."'
546 }
547 },
548 {
Robert Ly3f9b6442011-01-19 18:14:50 -0800549 tags: ['sample', 'input'],
550 path: 'samples/SoftKeyboard/index.html',
551 title: {
552 en: 'Soft Keyboard'
553 },
554 description: {
555 en: 'An example of writing an input method for a software keyboard.'
556 }
557 },
558 {
Scott Main183ecbc2010-11-19 10:20:45 -0800559 tags: ['sample', 'testing'],
Roman Nurike577d722010-04-16 15:57:34 -0700560 path: 'samples/Spinner/index.html',
561 title: {
562 en: 'Spinner'
563 },
564 description: {
565 en: 'A simple application that serves as an application under test for the SpinnerTest example.'
566 }
567 },
568 {
Scott Main183ecbc2010-11-19 10:20:45 -0800569 tags: ['sample', 'testing'],
Roman Nurike577d722010-04-16 15:57:34 -0700570 path: 'samples/SpinnerTest/index.html',
571 title: {
572 en: 'SpinnerTest'
573 },
574 description: {
575 en: 'The test application for the Activity Testing tutorial. It tests the Spinner example application.'
576 }
577 },
578 {
Roman Nurik94be4a52011-02-11 14:46:00 -0800579 tags: ['sample', 'new', 'newfeature', 'widgets'],
Adam Cohenfca67c52011-02-10 18:57:45 -0800580 path: 'samples/StackWidget/index.html',
581 title: {
Scott Maind873e662011-02-15 10:58:34 -0800582 en: 'StackView Widget'
Adam Cohenfca67c52011-02-10 18:57:45 -0800583 },
584 description: {
585 en: 'Demonstrates how to create a simple collection widget containing a StackView.'
586 }
587 },
588 {
Scott Main183ecbc2010-11-19 10:20:45 -0800589 tags: ['sample', 'newfeature'],
Roman Nurike577d722010-04-16 15:57:34 -0700590 path: 'samples/TicTacToeLib/index.html',
591 title: {
592 en: 'TicTacToeLib'
593 },
594 description: {
595 en: 'An example of an Android library project, a type of project that lets you store and manage shared code and resources in one place, then make them available to your other Android applications.'
596 }
597 },
598 {
Scott Main183ecbc2010-11-19 10:20:45 -0800599 tags: ['sample', 'newfeature',],
Roman Nurike577d722010-04-16 15:57:34 -0700600 path: 'samples/TicTacToeMain/index.html',
601 title: {
602 en: 'TicTacToeMain'
603 },
604 description: {
605 en: 'Demonstrates how an application can make use of shared code and resources stored in an Android library project.'
606 }
607 },
608 {
Roman Nurik94be4a52011-02-11 14:46:00 -0800609 tags: ['sample', 'ui', 'widgets'],
Roman Nurike577d722010-04-16 15:57:34 -0700610 path: 'samples/Wiktionary/index.html',
611 title: {
612 en: 'Wiktionary'
613 },
614 description: {
615 en: 'An example of creating interactive widgets for display on the Android home screen.'
616 }
617 },
618 {
Roman Nurik94be4a52011-02-11 14:46:00 -0800619 tags: ['sample', 'ui', 'widgets'],
Roman Nurike577d722010-04-16 15:57:34 -0700620 path: 'samples/WiktionarySimple/index.html',
621 title: {
622 en: 'Wiktionary (Simplified)'
623 },
624 description: {
625 en: 'A simple Android home screen widgets example.'
626 }
627 },
Gilles Debunne3eb9b662010-06-23 16:53:35 -0700628 {
Winson Chung06d2fa72011-02-10 19:11:33 -0800629 tags: ['sample', 'widgets', 'newfeature', 'new'],
630 path: 'samples/WeatherListWidget/index.html',
631 title: {
Scott Maind873e662011-02-15 10:58:34 -0800632 en: 'Weather List Widget'
Winson Chung06d2fa72011-02-10 19:11:33 -0800633 },
634 description: {
635 en: 'A more complex collection-widget example which uses a ContentProvider as its data source.'
636 }
637 },
638 {
Robert Ly3f9b6442011-01-19 18:14:50 -0800639 tags: ['sample', 'layout'],
Gilles Debunne3eb9b662010-06-23 16:53:35 -0700640 path: 'samples/XmlAdapters/index.html',
641 title: {
642 en: 'XML Adapters'
643 },
644 description: {
645 en: 'Binding data to views using XML Adapters examples.'
646 }
647 },
Roman Nurike577d722010-04-16 15:57:34 -0700648
649/////////////////
650/// TUTORIALS ///
651/////////////////
652
653 {
654 tags: ['tutorial'],
655 path: 'tutorials/hello-world.html',
656 title: {
657 en: 'Hello World'
658 },
659 description: {
660 en: 'Beginning basic application development with the Android SDK.'
661 }
662 },
663 {
664 tags: ['tutorial', 'ui', 'layout'],
665 path: 'tutorials/views/index.html',
666 title: {
667 en: 'Hello Views'
668 },
669 description: {
670 en: 'A walk-through of the various types of layouts and views available in the Android SDK.'
671 }
672 },
673 {
674 tags: ['tutorial', 'ui', 'bestpractice'],
675 path: 'tutorials/localization/index.html',
676 title: {
677 en: 'Hello Localization'
678 },
679 description: {
680 en: 'The basics of localizing your applications for multiple languages and locales.'
681 }
682 },
683 {
684 tags: ['tutorial', 'data'],
685 path: 'tutorials/notepad/index.html',
686 title: {
687 en: 'Notepad Tutorial'
688 },
689 description: {
690 en: 'A multi-part tutorial discussing intermediate-level concepts such as data access.'
691 }
692 },
693 {
Scott Main183ecbc2010-11-19 10:20:45 -0800694 tags: ['tutorial', 'testing'],
Roman Nurike577d722010-04-16 15:57:34 -0700695 path: 'tutorials/testing/helloandroid_test.html',
696 title: {
697 en: 'Hello Testing'
698 },
699 description: {
700 en: 'A basic introduction to the Android testing framework.'
701 }
702 },
703 {
Scott Main183ecbc2010-11-19 10:20:45 -0800704 tags: ['tutorial', 'testing'],
Roman Nurike577d722010-04-16 15:57:34 -0700705 path: 'tutorials/testing/activity_test.html',
706 title: {
707 en: 'Activity Testing'
708 },
709 description: {
710 en: 'A more advanced demonstration of the Android testing framework and tools.'
711 }
712 }
713];