From f284d49293aead609de5b83d601260cfd86b7978 Mon Sep 17 00:00:00 2001
From: Scott Main
A great way to improve UI performance is to minimize the complexity of your layouts. If you open up hierarchyviewer and see that your layouts are more than 5 levels deep, it may be time to simplify your layout. Consider refactoring those deeply nested LinearLayouts into RelativeLayout. The impact of View objects is cumulative — each one costs about 1 to 2 KB of memory, so large view hierarchies can be a recipe for disaster, causing frequent VM garbage collection passes which block the main (UI) thread. You can learn more in World of ListView, another session at Google I/O.
-Lastly, pointed out in the blog post Traceview War Story, tools like traceview and ddms can be your best friends in improving your app by profiling method calls and monitoring VM memory allocations, respectively.
There's no substitute for a real user interface designer — ideally one who's well-versed in mobile and Android, and ideally handy with both interaction and visual design. One popular venue to post openings for designers is jobs.smashingmagazine.com, and leveraging social connections on Twitter and LinkedIn can surface great talent.
-If you don't have the luxury of working with a UI designer, there are some ways in which you can improve your app's appearance yourself. First, get familiar with Adobe Photoshop, Adobe Fireworks, or some other raster image editing tool. Mastering the art of the pixel in these apps takes time, but honing this skill can help build polish across your interface designs. Also, master the resources framework by studying the framework UI assets and layouts and reading through the new resources documentation. Techniques such as 9-patches and resource directory qualifiers are somewhat unique to Android, and are crucial in building flexible yet aesthetic UIs.
+If you don't have the luxury of working with a UI designer, there are some ways in which you can improve your app's appearance yourself. First, get familiar with Adobe Photoshop, Adobe Fireworks, or some other raster image editing tool. Mastering the art of the pixel in these apps takes time, but honing this skill can help build polish across your interface designs. Also, master the resources framework by studying the framework UI assets and layouts and reading through the new resources documentation. Techniques such as 9-patches and resource directory qualifiers are somewhat unique to Android, and are crucial in building flexible yet aesthetic UIs.Before you get too far in designing your app and writing the code, make sure to visit the Android Design site and learn about the vision, the building blocks, and the tools of designing beautiful and inspiring user interfaces.
@@ -105,7 +105,7 @@ Again, listen to your users by collecting and responding to feature requests. Be-A great way to deliver a delightful user experience is to integrate tightly with the operating system. Features like Home screen widgets, rich notifications, global search integration, and {@link android.widget.QuickContactBadge Quick Contacts} are fairly low-hanging fruit in this regard.
+A great way to deliver a delightful user experience is to integrate tightly with the operating system. Features like Home screen widgets, rich notifications, global search integration, and {@link android.widget.QuickContactBadge Quick Contacts} are fairly low-hanging fruit in this regard.For some app categories, basic features like home screen widgets are par for the course. Not including them is a sure-fire way to tarnish an otherwise positive user experience. Some apps can achieve even tighter OS integration with Android's contacts, accounts, and sync APIs.
diff --git a/docs/html/guide/components/services.jd b/docs/html/guide/components/services.jd index ba5e1f03b277..b89914a60e0f 100644 --- a/docs/html/guide/components/services.jd +++ b/docs/html/guide/components/services.jd @@ -49,13 +49,6 @@ perform interprocess communication LocalService} -
To provide additional protection for sensitive data, some applications
choose to encrypt local files using a key that is not accessible to the
-application. (For example, a key can be placed in a KeyStore and
-protected with a user password that is not stored on the device). While this
+application. (For example, a key can be placed in a {@link java.security.KeyStore}
+and protected with a user password that is not stored on the device). While this
does not protect data from a root compromise that can monitor the user
inputting the password, it can provide protection for a lost device without file system
@@ -716,8 +715,7 @@ href="{@docRoot}reference/android/accounts/AccountManager.html">
AccountManager using checkSignature().
Alternatively, if only one application will use the credential, you might use a
-KeyStore for
+{@link java.security.KeyStore} for
storage.
If you need to store a key for repeated use, use a mechanism like KeyStore that
+
If you need to store a key for repeated use, use a mechanism like + {@link java.security.KeyStore} that provides a mechanism for long term storage and retrieval of cryptographic keys.
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd b/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd index f6c2247c2bbf..452979703a10 100644 --- a/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd +++ b/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd @@ -58,7 +58,7 @@ suggestions on how to work with multiple sets of icons.If you are publishing
+ If you are publishing
your application on Google Play, you will also need to provide a 512x512
pixel, high-resolution application icon in the developer console at upload-time.
diff --git a/docs/html/guide/samples/index.html b/docs/html/guide/samples/index.html
index f4acdbfee5a1..959eaf53eb11 100644
--- a/docs/html/guide/samples/index.html
+++ b/docs/html/guide/samples/index.html
@@ -1,10 +1,10 @@
You should have been redirected. Please click here.
Caution: Although XML markup such as this will be ignored by older platforms, you must be careful not to use programming APIs introduced in API Level 8 while your {@code minSdkVersion} is less than "8", unless you perform the work necessary to -provide backward compatibility in your code. For information about building -backward compatibility in your application code, see the Backward Compatibility -article.
+provide backward compatibility in your code. @@ -141,17 +138,13 @@ system again. At which time, you can restart your Service.Caution: If your application uses Google Play's Copy Protection feature, it cannot be installed to a device's SD card. However, if you use Google - Play's Application Licensing instead, + Play's Application Licensing instead, your application can be installed to internal or external storage, including SD cards.
Note: By default, your application will be installed on the
diff --git a/docs/html/guide/topics/providers/content-provider-basics.jd b/docs/html/guide/topics/providers/content-provider-basics.jd
index 79990336fb1f..f5e480595fc5 100644
--- a/docs/html/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html/guide/topics/providers/content-provider-basics.jd
@@ -1031,11 +1031,11 @@ mRowsDeleted = getContentResolver().delete(
android:grantUriPermission
attribute of the
- {@code <provider>}
+ {@code <provider>}
element, as well as the
- {@code
+ {@code
<grant-uri-permission>} child element of the
- {@code <provider>}
+ {@code <provider>}
element. The URI permissions mechanism is explained in more detail in the
Security and Permissions guide,
in the section "URI Permissions".
diff --git a/docs/html/guide/topics/resources/layout-resource.jd b/docs/html/guide/topics/resources/layout-resource.jd
index c653b0cc366e..cd88ae94bb6d 100644
--- a/docs/html/guide/topics/resources/layout-resource.jd
+++ b/docs/html/guide/topics/resources/layout-resource.jd
@@ -169,8 +169,8 @@ root element.
Another way to include a layout is to use {@link android.view.ViewStub}. It is a lightweight View that consumes no layout space until you explicitly inflate it, at which point, it includes a layout file defined by its {@code android:layout} attribute. For more information about using {@link -android.view.ViewStub}, read Layout -Tricks: ViewStubs.
+android.view.ViewStub}, read Loading + Views On Demand.<merge><include> and
this layout doesn't require a different {@link android.view.ViewGroup} container. For more
information about merging layouts, read Layout
-Tricks: Merging.
+href="{@docRoot}training/improving-layouts/reusing-layouts.html">Re-using Layouts with <include/>.
diff --git a/docs/html/guide/topics/resources/runtime-changes.jd b/docs/html/guide/topics/resources/runtime-changes.jd
index f5475b40abc4..5f39aa534e62 100644
--- a/docs/html/guide/topics/resources/runtime-changes.jd
+++ b/docs/html/guide/topics/resources/runtime-changes.jd
@@ -16,8 +16,8 @@ parent.link=index.html
I’ve written an open-source reference app that incorporates all of the tips, tricks, and cheats I know to reduce the time between opening an app and seeing an up-to-date list of nearby diff --git a/docs/html/guide/topics/sensors/sensors_overview.jd b/docs/html/guide/topics/sensors/sensors_overview.jd index e38a8430a878..a162ccfbfa8d 100644 --- a/docs/html/guide/topics/sensors/sensors_overview.jd +++ b/docs/html/guide/topics/sensors/sensors_overview.jd @@ -662,7 +662,7 @@ whether there's a pressure sensor on a device:
If you are publishing your application on Google Play you can use the
-
@@ -175,7 +174,8 @@ parent.link=../browser.html?tag=article
default behavior, so you don’t have to implement this if you don’t provide suggestions).
For an example implementation that provides user suggestions, see the
- Soft Keyboard sample app.
+ Soft Keyboard sample
+ app.
@@ -388,8 +388,8 @@ The input type bit pattern can have one of several values, including:
To intercept hardware keys, override
{@link android.inputmethodservice.InputMethodService#onKeyDown(int, KeyEvent) onKeyDown()}
and {@link android.inputmethodservice.InputMethodService#onKeyUp(int, KeyEvent) onKeyUp()}.
- See the Soft Keyboard sample
- app for an example.
+ See the Soft Keyboard sample
+ app for an example.
Remember to call the This document describes the changes to the Android Open Accessory (AOA) protocol since its
-initial release, and is a supplement to the documentation of the first
+initial release, and is a supplement to the documentation of the first
release of AOA. The Android Open Accessory Protocol 2.0 adds two new features: audio output (from the Android
diff --git a/docs/html/tools/help/gltracer.jd b/docs/html/tools/help/gltracer.jd
index 35c405ef7a9b..700ee39c5766 100644
--- a/docs/html/tools/help/gltracer.jd
+++ b/docs/html/tools/help/gltracer.jd
@@ -5,9 +5,9 @@ page.title=Tracer for OpenGL ES
Adds support for building with Android library projects. See SDK
+ Adds support for building with Android library projects. See SDK
Tools, r6 for information. Now you have a complete, functioning accessibility service. Try configuring
how it interacts with the user, by adding Android's text-to-speech
+ href="http://android-developers.blogspot.com/2009/09/introduction-to-text-to-speech-in.html">text-to-speech
engine, or using a {@link android.os.Vibrator} to provide haptic
feedback! To allow the Android Developer Tools
+ To allow the Android Developer Tools
to interact with your view, at a minimum you must provide a constructor that takes a
{@link android.content.Context} and an {@link android.util.AttributeSet} object as parameters.
This constructor allows the layout editor to create and edit an instance of your view. For more information on creating accessible views, see
-
+
Making Applications Accessible in the Android Developers Guide.
Horizontal paging, or swipe views, allow users to swipe horizontally on the current screen to navigate to adjacent screens. This pattern can be implemented using the {@link android.support.v4.view.ViewPager} widget, currently available as part of the Android Support Package. For navigating between sibling screens representing a fixed number of sections, it's best to provide the {@link android.support.v4.view.ViewPager} with a {@link android.support.v4.app.FragmentPagerAdapter}. For horizontal paging across collections of objects, it's best to use a {@link android.support.v4.app.FragmentStatePagerAdapter}, which destroys fragments as the user navigates to other pages, minimizing memory usage. Horizontal paging, or swipe views, allow users to swipe horizontally on the current screen to navigate to adjacent screens. This pattern can be implemented using the {@link android.support.v4.view.ViewPager} widget, currently available as part of the Android Support Package. For navigating between sibling screens representing a fixed number of sections, it's best to provide the {@link android.support.v4.view.ViewPager} with a {@link android.support.v4.app.FragmentPagerAdapter}. For horizontal paging across collections of objects, it's best to use a {@link android.support.v4.app.FragmentStatePagerAdapter}, which destroys fragments as the user navigates to other pages, minimizing memory usage. Below is an example of using a {@link android.support.v4.view.ViewPager} to swipe across a collection of objects.<uses-feature>
+ <uses-feature>
element in your manifest file to filter your application from devices that do not
have the appropriate sensor configuration for your application. The
<uses-feature> element has several hardware descriptors that let you filter
diff --git a/docs/html/guide/topics/text/creating-input-method.jd b/docs/html/guide/topics/text/creating-input-method.jd
index e49610f6f34e..7086824a755f 100644
--- a/docs/html/guide/topics/text/creating-input-method.jd
+++ b/docs/html/guide/topics/text/creating-input-method.jd
@@ -1,6 +1,5 @@
page.title=Creating an Input Method
parent.title=Articles
-parent.link=../browser.html?tag=article
@jd:body
Candidates view
UI design considerations
super() method for keys you don't want to handle yourself.
diff --git a/docs/html/guide/topics/text/spell-checker-framework.jd b/docs/html/guide/topics/text/spell-checker-framework.jd
index 1c2e211b58e5..7f7a0b84e53d 100644
--- a/docs/html/guide/topics/text/spell-checker-framework.jd
+++ b/docs/html/guide/topics/text/spell-checker-framework.jd
@@ -1,6 +1,5 @@
page.title=Spelling Checker Framework
parent.title=Articles
-parent.link=../browser.html?tag=article
@jd:body
diff --git a/docs/html/tools/adk/aoa2.jd b/docs/html/tools/adk/aoa2.jd
index 2a3b2f0e1531..bbccfc386790 100644
--- a/docs/html/tools/adk/aoa2.jd
+++ b/docs/html/tools/adk/aoa2.jd
@@ -20,7 +20,7 @@ page.title=Android Open Accessory Protocol 2.0
In this document
-
See also
diff --git a/docs/html/tools/revisions/platforms.jd b/docs/html/tools/revisions/platforms.jd
index 6163fbc52b1c..62ec422abc54 100644
--- a/docs/html/tools/revisions/platforms.jd
+++ b/docs/html/tools/revisions/platforms.jd
@@ -870,7 +870,7 @@ class="toggle-content-img" alt="" />Android {@sdkPlatformVersion}, Revision 1Tools:
docs/A full set of documentation in HTML format, including the Developer's Guide,
API Reference, and other information. To read the documentation, load the
-file
+file offline.html in a web browser.index.html in a web browser.
diff --git a/docs/html/training/accessibility/service.jd b/docs/html/training/accessibility/service.jd
index f62506b1baa2..80ecbc78622f 100644
--- a/docs/html/training/accessibility/service.jd
+++ b/docs/html/training/accessibility/service.jd
@@ -281,6 +281,6 @@ public void onAccessibilityEvent(AccessibilityEvent event) {
platform-tools/
diff --git a/docs/html/training/custom-views/create-view.jd b/docs/html/training/custom-views/create-view.jd
index b0bc8b478245..674bcc942af8 100644
--- a/docs/html/training/custom-views/create-view.jd
+++ b/docs/html/training/custom-views/create-view.jd
@@ -61,7 +61,7 @@ well-designed class, though, a custom view should:
existing view
subclasses, such as {@link android.widget.Button}.
-
<resources>;
- <declare-styleable name="PieChart">
+ <declare-styleable name="PieChart">
<attr name="showText" format="boolean" />
<attr name="labelPosition" format="enum">
<enum name="left" value="0"/>
@@ -276,6 +276,6 @@ public void setShowText(boolean showText) {
You should also read
-
diff --git a/docs/html/training/improving-layouts/smooth-scrolling.jd b/docs/html/training/improving-layouts/smooth-scrolling.jd
index 0afa929ccad1..2a1ffba6fa50 100644
--- a/docs/html/training/improving-layouts/smooth-scrolling.jd
+++ b/docs/html/training/improving-layouts/smooth-scrolling.jd
@@ -22,8 +22,8 @@ previous.link=loading-ondemand.html
Implement Horizontal Paging (Swipe Views)
-You should also read
-
You should also read
diff --git a/docs/html/training/notepad/index.jd b/docs/html/training/notepad/index.jd
index 87a57d10edcd..64ba14466a33 100644
--- a/docs/html/training/notepad/index.jd
+++ b/docs/html/training/notepad/index.jd
@@ -1,6 +1,5 @@
page.title=Notepad Tutorial
parent.title=Tutorials
-parent.link=../../browser.html?tag=tutorial
@jd:body
--
cgit v1.2.3-59-g8ed1b