page.title=Using Touch Gestures
page.tags=input,navigation,gesturedetector,scroller

trainingnavtop=true
startpage=true


@jd:body
<div id="tb-wrapper">
<div id="tb">

<!-- Required platform, tools, add-ons, devices, knowledge, etc. -->
<h2>Dependencies and prerequisites</h2>

<ul>
  <li>Android 1.6 (API Level 4) or higher</li>
</ul>
<h2>You should also read</h2>
<ul>
    <li><a href="http://developer.android.com/guide/topics/ui/ui-events.html">Input Events</a> API Guide
    </li>
    <li><a href="{@docRoot}guide/topics/sensors/sensors_overview.html">Sensors Overview</a></li>
    <li><a href="{@docRoot}training/custom-views/making-interactive.html">Making the View Interactive</a> </li>
    <li>Design Guide for <a href="{@docRoot}design/patterns/gestures.html">Gestures</a></li>
    <li>Design Guide for <a href="{@docRoot}design/style/touch-feedback.html">Touch Feedback</a></li>
</ul>

<h2>Try it out</h2>

<div class="download-box">
  <a href="{@docRoot}shareables/training/InteractiveChart.zip"
class="button">Download the sample</a>
 <p class="filename">InteractiveChart.zip</p>
</div>

</div>
</div>

<p> This class describes how to write apps that allow users to interact with an
app via touch gestures. Android provides a variety of APIs to
help you create and detect gestures.</p>

<p>Although your app should not depend on touch gestures for basic behaviors (since the gestures
may not be available to all users in all contexts), adding touch-based
interaction to your app can greatly increase its usefulness and appeal.</p>

<p>To
provide users with a consistent, intuitive experience, your app should follow
the accepted Android conventions for touch gestures. The <a
href="http://developer.android.com/design/patterns/gestures.html">Gestures
design guide</a><a href="{@docRoot}design/patterns/notifications.html"></a>
shows you how to use common gestures in Android apps. Also see the Design Guide
for <a href="{@docRoot}design/style/touch-feedback.html">Touch Feedback</a>.  </p>


<h2>Lessons</h2>

<dl>
    <dt>
        <strong><a href="detector.html">Detecting Common Gestures</a></strong>
    </dt>
    <dd>
        Learn how to detect basic touch gestures such as scrolling, flinging, and double-tapping, using
       {@link android.view.GestureDetector}.
    </dd>

<dt>
        <strong><a href="movement.html">Tracking Movement</a></strong>
    </dt>
    <dd>
        Learn how to track movement.
    </dd>

<dt>
        <strong><a href="scroll.html">Animating a Scroll Gesture</a></strong>
    </dt>
    <dd>
        Learn how to use scrollers ({@link android.widget.Scroller} or {@link
android.widget.OverScroller}) to produce a scrolling animation in response to a
touch event. </dd>

<dt>
        <strong><a href="multi.html">Handling Multi-Touch Gestures</a></strong>
    </dt>
    <dd>
        Learn how to detect multi-pointer (finger) gestures.
    </dd>
<dt>
        <strong><a href="scale.html">Dragging and Scaling</a></strong>
    </dt>
    <dd>
        Learn how to implement touch-based dragging and scaling.
    </dd>


<dt><strong><a href="viewgroup.html">Managing Touch Events in a ViewGroup</a></strong></dt>

    <dd>Learn how to manage touch events in a {@link android.view.ViewGroup} to
ensure that touch events are correctly dispatched to their target views.</dd>
</dl>
