19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.view;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1954d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganovimport android.app.AppGlobals;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
21ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackbornimport android.content.res.Configuration;
228c4706252228755ed181d19532b7e0cfec270ba4Adam Powellimport android.content.res.Resources;
23a8b9defade5b937d4ad64f9aff4bca792298f43cJeff Brownimport android.graphics.Point;
248c4706252228755ed181d19532b7e0cfec270ba4Adam Powellimport android.os.RemoteException;
2554d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganovimport android.provider.Settings;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.DisplayMetrics;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.SparseArray;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Contains methods to standard constants used in the UI for timeouts, sizes, and distances.
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ViewConfiguration {
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the width of the horizontal scrollbar and the height of the vertical scrollbar in
35006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * dips
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int SCROLL_BAR_SIZE = 10;
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
40f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     * Duration of the fade when scrollbars fade away in milliseconds
41f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     */
42f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    private static final int SCROLL_BAR_FADE_DURATION = 250;
43f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron
44f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    /**
45f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     * Default delay before the scrollbars fade in milliseconds
46f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     */
47f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    private static final int SCROLL_BAR_DEFAULT_DELAY = 300;
48f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron
49f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    /**
50006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * Defines the length of the fading edges in dips
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int FADING_EDGE_LENGTH = 12;
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds of the pressed state in child
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * components.
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
58c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa    private static final int PRESSED_STATE_DURATION = 64;
59c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
61a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown     * Defines the default duration in milliseconds before a press turns into
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a long press
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
64a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown    private static final int DEFAULT_LONG_PRESS_TIMEOUT = 500;
65a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown
66a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown    /**
67a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown     * Defines the time between successive key repeats in milliseconds.
68a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown     */
69a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown    private static final int KEY_REPEAT_DELAY = 50;
70a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds a user needs to hold down the
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * appropriate button to bring up the global actions dialog (power off,
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * lock screen, etc).
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int GLOBAL_ACTIONS_KEY_TIMEOUT = 500;
77c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
79c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa     * Defines the duration in milliseconds we will wait to see if a touch event
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is a tap or a scroll. If the user does not move within this interval, it is
81c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa     * considered to be a tap.
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
83e0a799a2ac1ca78e30fbac9e4e12a063425c08d3Patrick Dubroy    private static final int TAP_TIMEOUT = 180;
84c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
86c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa     * Defines the duration in milliseconds we will wait to see if a touch event
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is a jump tap. If the user does not complete the jump tap within this interval, it is
88c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa     * considered to be a tap.
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int JUMP_TAP_TIMEOUT = 500;
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds between the first tap's up event and
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the second tap's down event for an interaction to be considered a
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * double-tap.
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int DOUBLE_TAP_TIMEOUT = 300;
98bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown
99bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown    /**
100bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * Defines the maximum duration in milliseconds between a touch pad
101bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * touch and release for a given touch to be considered a tap (click) as
102bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * opposed to a hover movement gesture.
103bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     */
104bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown    private static final int HOVER_TAP_TIMEOUT = 150;
105bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown
106bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown    /**
107bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * Defines the maximum distance in pixels that a touch pad touch can move
108bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * before being released for it to be considered a tap (click) as opposed
109bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * to a hover movement gesture.
110bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     */
111bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown    private static final int HOVER_TAP_SLOP = 20;
112bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
114c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa     * Defines the duration in milliseconds we want to display zoom controls in response
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to a user panning within an application.
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int ZOOM_CONTROLS_TIMEOUT = 3000;
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
120006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * Inset in dips to look for touchable content when the user touches the edge of the screen
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int EDGE_SLOP = 12;
123c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1257d39f85acf68b3469a2087af488569e356845e22Adam Powell     * Distance a touch can wander before we think the user is scrolling in dips.
1267d39f85acf68b3469a2087af488569e356845e22Adam Powell     * Note that this value defined here is only used as a fallback by legacy/misbehaving
1277d39f85acf68b3469a2087af488569e356845e22Adam Powell     * applications that do not provide a Context for determining density/configuration-dependent
1287d39f85acf68b3469a2087af488569e356845e22Adam Powell     * values.
1297d39f85acf68b3469a2087af488569e356845e22Adam Powell     *
1307d39f85acf68b3469a2087af488569e356845e22Adam Powell     * To alter this value, see the configuration resource config_viewConfigurationTouchSlop
1317d39f85acf68b3469a2087af488569e356845e22Adam Powell     * in frameworks/base/core/res/res/values/config.xml or the appropriate device resource overlay.
1327d39f85acf68b3469a2087af488569e356845e22Adam Powell     * It may be appropriate to tweak this on a device-specific basis in an overlay based on
1337d39f85acf68b3469a2087af488569e356845e22Adam Powell     * the characteristics of the touch panel and firmware.
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1356720a87ad161a12c9dc7e11b2ae0165e65483464Adam Powell    private static final int TOUCH_SLOP = 8;
136c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
138006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * Distance the first touch can wander before we stop considering this event a double tap
139006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * (in dips)
140006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     */
141006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne    private static final int DOUBLE_TAP_TOUCH_SLOP = TOUCH_SLOP;
142006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne
143006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne    /**
144de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell     * Distance a touch can wander before we think the user is attempting a paged scroll
145de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell     * (in dips)
1467d39f85acf68b3469a2087af488569e356845e22Adam Powell     *
1477d39f85acf68b3469a2087af488569e356845e22Adam Powell     * Note that this value defined here is only used as a fallback by legacy/misbehaving
1487d39f85acf68b3469a2087af488569e356845e22Adam Powell     * applications that do not provide a Context for determining density/configuration-dependent
1497d39f85acf68b3469a2087af488569e356845e22Adam Powell     * values.
1507d39f85acf68b3469a2087af488569e356845e22Adam Powell     *
1517d39f85acf68b3469a2087af488569e356845e22Adam Powell     * See the note above on {@link #TOUCH_SLOP} regarding the dimen resource
1527d39f85acf68b3469a2087af488569e356845e22Adam Powell     * config_viewConfigurationTouchSlop. ViewConfiguration will report a paging touch slop of
1537d39f85acf68b3469a2087af488569e356845e22Adam Powell     * config_viewConfigurationTouchSlop * 2 when provided with a Context.
154de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell     */
155b7ef1d9ec9aa09ecba5a348c939b10f798aff131Adam Powell    private static final int PAGING_TOUCH_SLOP = TOUCH_SLOP * 2;
156c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
157de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell    /**
158006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * Distance in dips between the first touch and second touch to still be considered a double tap
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int DOUBLE_TAP_SLOP = 100;
161c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
163006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * Distance in dips a touch needs to be outside of a window's bounds for it to
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * count as outside for purposes of dismissing the window.
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int WINDOW_TOUCH_SLOP = 16;
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
169006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * Minimum velocity to initiate a fling, as measured in dips per second
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int MINIMUM_FLING_VELOCITY = 50;
172c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
1734296fc4d326447875c26a925f12b3935632f13bbRomain Guy    /**
174006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * Maximum velocity to initiate a fling, as measured in dips per second
1754296fc4d326447875c26a925f12b3935632f13bbRomain Guy     */
176637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell    private static final int MAXIMUM_FLING_VELOCITY = 8000;
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
179a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov     * Delay before dispatching a recurring accessibility event in milliseconds.
180a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov     * This delay guarantees that a recurring event will be send at most once
181a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov     * during the {@link #SEND_RECURRING_ACCESSIBILITY_EVENTS_INTERVAL_MILLIS} time
182a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov     * frame.
183a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov     */
184e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganov    private static final long SEND_RECURRING_ACCESSIBILITY_EVENTS_INTERVAL_MILLIS = 100;
185a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov
186a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov    /**
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The maximum size of View's drawing cache, expressed in bytes. This size
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * should be at least equal to the size of the screen in ARGB888 format.
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
1910211a0a10d20ec99bd78905ea9cd2960f7beb4c8Romain Guy    private static final int MAXIMUM_DRAWING_CACHE_SIZE = 480 * 800 * 4; // ARGB8888
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The coefficient of friction applied to flings/scrolls.
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1960211a0a10d20ec99bd78905ea9cd2960f7beb4c8Romain Guy    private static final float SCROLL_FRICTION = 0.015f;
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
198637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell    /**
199006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * Max distance in dips to overscroll for edge effects
200637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell     */
201637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell    private static final int OVERSCROLL_DISTANCE = 0;
202637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell
203637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell    /**
204006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * Max distance in dips to overfling for edge effects
205637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell     */
2068ce7aab79e711ff5de54985aeffb1a205b7f9942Gilles Debunne    private static final int OVERFLING_DISTANCE = 6;
207637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mEdgeSlop;
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mFadingEdgeLength;
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mMinimumFlingVelocity;
2114296fc4d326447875c26a925f12b3935632f13bbRomain Guy    private final int mMaximumFlingVelocity;
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mScrollbarSize;
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mTouchSlop;
214006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne    private final int mDoubleTapTouchSlop;
215de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell    private final int mPagingTouchSlop;
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mDoubleTapSlop;
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mWindowTouchSlop;
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mMaximumDrawingCacheSize;
219637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell    private final int mOverscrollDistance;
220637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell    private final int mOverflingDistance;
2216805545649f2b194859033df94602492b9ec086eRomain Guy    private final boolean mFadingMarqueeEnabled;
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2238c4706252228755ed181d19532b7e0cfec270ba4Adam Powell    private boolean sHasPermanentMenuKey;
2248c4706252228755ed181d19532b7e0cfec270ba4Adam Powell    private boolean sHasPermanentMenuKeySet;
2258c4706252228755ed181d19532b7e0cfec270ba4Adam Powell
2267f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet    static final SparseArray<ViewConfiguration> sConfigurations =
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            new SparseArray<ViewConfiguration>(2);
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link android.view.ViewConfiguration#get(android.content.Context)} instead.
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ViewConfiguration() {
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mEdgeSlop = EDGE_SLOP;
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mFadingEdgeLength = FADING_EDGE_LENGTH;
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mMinimumFlingVelocity = MINIMUM_FLING_VELOCITY;
2374296fc4d326447875c26a925f12b3935632f13bbRomain Guy        mMaximumFlingVelocity = MAXIMUM_FLING_VELOCITY;
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mScrollbarSize = SCROLL_BAR_SIZE;
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mTouchSlop = TOUCH_SLOP;
240006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne        mDoubleTapTouchSlop = DOUBLE_TAP_TOUCH_SLOP;
241de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell        mPagingTouchSlop = PAGING_TOUCH_SLOP;
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mDoubleTapSlop = DOUBLE_TAP_SLOP;
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mWindowTouchSlop = WINDOW_TOUCH_SLOP;
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        //noinspection deprecation
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mMaximumDrawingCacheSize = MAXIMUM_DRAWING_CACHE_SIZE;
246637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell        mOverscrollDistance = OVERSCROLL_DISTANCE;
247637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell        mOverflingDistance = OVERFLING_DISTANCE;
2486805545649f2b194859033df94602492b9ec086eRomain Guy        mFadingMarqueeEnabled = true;
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Creates a new configuration for the specified context. The configuration depends on
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * various parameters of the context, like the dimension of the display or the density
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of the display.
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param context The application context used to initialize this view configuration.
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
258c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa     * @see #get(android.content.Context)
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.util.DisplayMetrics
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private ViewConfiguration(Context context) {
2628c4706252228755ed181d19532b7e0cfec270ba4Adam Powell        final Resources res = context.getResources();
2638c4706252228755ed181d19532b7e0cfec270ba4Adam Powell        final DisplayMetrics metrics = res.getDisplayMetrics();
2648c4706252228755ed181d19532b7e0cfec270ba4Adam Powell        final Configuration config = res.getConfiguration();
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final float density = metrics.density;
266ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn        final float sizeAndDensity;
2678c4706252228755ed181d19532b7e0cfec270ba4Adam Powell        if (config.isLayoutSizeAtLeast(Configuration.SCREENLAYOUT_SIZE_XLARGE)) {
268ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn            sizeAndDensity = density * 1.5f;
269ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn        } else {
270ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn            sizeAndDensity = density;
271ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn        }
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
273ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn        mEdgeSlop = (int) (sizeAndDensity * EDGE_SLOP + 0.5f);
274ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn        mFadingEdgeLength = (int) (sizeAndDensity * FADING_EDGE_LENGTH + 0.5f);
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mMinimumFlingVelocity = (int) (density * MINIMUM_FLING_VELOCITY + 0.5f);
2764296fc4d326447875c26a925f12b3935632f13bbRomain Guy        mMaximumFlingVelocity = (int) (density * MAXIMUM_FLING_VELOCITY + 0.5f);
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mScrollbarSize = (int) (density * SCROLL_BAR_SIZE + 0.5f);
278ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn        mDoubleTapSlop = (int) (sizeAndDensity * DOUBLE_TAP_SLOP + 0.5f);
279ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn        mWindowTouchSlop = (int) (sizeAndDensity * WINDOW_TOUCH_SLOP + 0.5f);
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Size of the screen in bytes, in ARGB_8888 format
28298365d7663cbd82979a5700faf0050220b01084dJeff Brown        final WindowManager win = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
28398365d7663cbd82979a5700faf0050220b01084dJeff Brown        final Display display = win.getDefaultDisplay();
284a8b9defade5b937d4ad64f9aff4bca792298f43cJeff Brown        final Point size = new Point();
285a8b9defade5b937d4ad64f9aff4bca792298f43cJeff Brown        display.getRealSize(size);
286a8b9defade5b937d4ad64f9aff4bca792298f43cJeff Brown        mMaximumDrawingCacheSize = 4 * size.x * size.y;
287637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell
288ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn        mOverscrollDistance = (int) (sizeAndDensity * OVERSCROLL_DISTANCE + 0.5f);
289ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn        mOverflingDistance = (int) (sizeAndDensity * OVERFLING_DISTANCE + 0.5f);
2908c4706252228755ed181d19532b7e0cfec270ba4Adam Powell
2918c4706252228755ed181d19532b7e0cfec270ba4Adam Powell        if (!sHasPermanentMenuKeySet) {
29298365d7663cbd82979a5700faf0050220b01084dJeff Brown            IWindowManager wm = WindowManagerGlobal.getWindowManagerService();
2938c4706252228755ed181d19532b7e0cfec270ba4Adam Powell            try {
294f87d19621dc2a30232bba1f51862a0b671eb9729Dianne Hackborn                sHasPermanentMenuKey = !wm.hasSystemNavBar() && !wm.hasNavigationBar();
2958c4706252228755ed181d19532b7e0cfec270ba4Adam Powell                sHasPermanentMenuKeySet = true;
2968c4706252228755ed181d19532b7e0cfec270ba4Adam Powell            } catch (RemoteException ex) {
2978c4706252228755ed181d19532b7e0cfec270ba4Adam Powell                sHasPermanentMenuKey = false;
2988c4706252228755ed181d19532b7e0cfec270ba4Adam Powell            }
2998c4706252228755ed181d19532b7e0cfec270ba4Adam Powell        }
3006805545649f2b194859033df94602492b9ec086eRomain Guy
3016805545649f2b194859033df94602492b9ec086eRomain Guy        mFadingMarqueeEnabled = res.getBoolean(
3026805545649f2b194859033df94602492b9ec086eRomain Guy                com.android.internal.R.bool.config_ui_enableFadingMarquee);
3037d39f85acf68b3469a2087af488569e356845e22Adam Powell        mTouchSlop = res.getDimensionPixelSize(
3047d39f85acf68b3469a2087af488569e356845e22Adam Powell                com.android.internal.R.dimen.config_viewConfigurationTouchSlop);
3057d39f85acf68b3469a2087af488569e356845e22Adam Powell        mPagingTouchSlop = mTouchSlop * 2;
306e4b8ff8068a96fe467d2334a75198ab762bb915cAdam Powell
307e4b8ff8068a96fe467d2334a75198ab762bb915cAdam Powell        mDoubleTapTouchSlop = mTouchSlop;
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a configuration for the specified context. The configuration depends on
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * various parameters of the context, like the dimension of the display or the
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * density of the display.
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param context The application context used to initialize the view configuration.
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static ViewConfiguration get(Context context) {
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final DisplayMetrics metrics = context.getResources().getDisplayMetrics();
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final int density = (int) (100.0f * metrics.density);
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ViewConfiguration configuration = sConfigurations.get(density);
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (configuration == null) {
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            configuration = new ViewConfiguration(context);
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            sConfigurations.put(density, configuration);
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return configuration;
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The width of the horizontal scrollbar and the height of the vertical
332006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     *         scrollbar in dips
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledScrollBarSize()} instead.
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getScrollBarSize() {
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return SCROLL_BAR_SIZE;
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The width of the horizontal scrollbar and the height of the vertical
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         scrollbar in pixels
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledScrollBarSize() {
3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mScrollbarSize;
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
350f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     * @return Duration of the fade when scrollbars fade away in milliseconds
351f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     */
352f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    public static int getScrollBarFadeDuration() {
353f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron        return SCROLL_BAR_FADE_DURATION;
354f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    }
355f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron
356f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    /**
357f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     * @return Default delay before the scrollbars fade in milliseconds
358f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     */
359f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    public static int getScrollDefaultDelay() {
360f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron        return SCROLL_BAR_DEFAULT_DELAY;
361f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    }
362c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
363f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    /**
364006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return the length of the fading edges in dips
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledFadingEdgeLength()} instead.
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getFadingEdgeLength() {
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return FADING_EDGE_LENGTH;
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the length of the fading edges in pixels
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledFadingEdgeLength() {
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mFadingEdgeLength;
3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds of the pressed state in child
3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * components.
3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getPressedStateDuration() {
3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return PRESSED_STATE_DURATION;
3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
38754d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds before a press turns into
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a long press
3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getLongPressTimeout() {
39354d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov        return AppGlobals.getIntCoreSetting(Settings.Secure.LONG_PRESS_TIMEOUT,
394a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown                DEFAULT_LONG_PRESS_TIMEOUT);
395a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown    }
396a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown
397a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown    /**
398a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown     * @return the time before the first key repeat in milliseconds.
399a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown     */
400a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown    public static int getKeyRepeatTimeout() {
401a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown        return getLongPressTimeout();
402a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown    }
403a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown
404a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown    /**
405a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown     * @return the time between successive key repeats in milliseconds.
406a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown     */
407a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown    public static int getKeyRepeatDelay() {
408a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown        return KEY_REPEAT_DELAY;
4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
41054d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov
4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds we will wait to see if a touch event
4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is a tap or a scroll. If the user does not move within this interval, it is
414c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa     * considered to be a tap.
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getTapTimeout() {
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return TAP_TIMEOUT;
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
419bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown
4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds we will wait to see if a touch event
4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is a jump tap. If the user does not move within this interval, it is
423c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa     * considered to be a tap.
4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getJumpTapTimeout() {
4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return JUMP_TAP_TIMEOUT;
4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
428c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds between the first tap's up event and
4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the second tap's down event for an interaction to be considered a
4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * double-tap.
4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getDoubleTapTimeout() {
4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return DOUBLE_TAP_TIMEOUT;
4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
437bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown
438bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown    /**
439bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * @return the maximum duration in milliseconds between a touch pad
440bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * touch and release for a given touch to be considered a tap (click) as
441bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * opposed to a hover movement gesture.
442bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * @hide
443bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     */
444bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown    public static int getHoverTapTimeout() {
445bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown        return HOVER_TAP_TIMEOUT;
446bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown    }
447bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown
448bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown    /**
449bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * @return the maximum distance in pixels that a touch pad touch can move
450bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * before being released for it to be considered a tap (click) as opposed
451bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * to a hover movement gesture.
452bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     * @hide
453bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown     */
454bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown    public static int getHoverTapSlop() {
455bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown        return HOVER_TAP_SLOP;
456bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown    }
457bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown
4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
459006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return Inset in dips to look for touchable content when the user touches the edge of the
4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         screen
4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledEdgeSlop()} instead.
4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getEdgeSlop() {
4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return EDGE_SLOP;
4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Inset in pixels to look for touchable content when the user touches the edge of the
4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         screen
4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledEdgeSlop() {
4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mEdgeSlop;
4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
478006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return Distance in dips a touch can wander before we think the user is scrolling
4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledTouchSlop()} instead.
4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getTouchSlop() {
4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return TOUCH_SLOP;
4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
488006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return Distance in pixels a touch can wander before we think the user is scrolling
4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledTouchSlop() {
4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mTouchSlop;
4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
493c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
494de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell    /**
495006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return Distance in pixels the first touch can wander before we do not consider this a
496006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * potential double tap event
497006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @hide
498006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     */
499006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne    public int getScaledDoubleTapTouchSlop() {
500006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne        return mDoubleTapTouchSlop;
501006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne    }
502006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne
503006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne    /**
504006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return Distance in pixels a touch can wander before we think the user is scrolling a full
505006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * page
506de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell     */
507de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell    public int getScaledPagingTouchSlop() {
508de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell        return mPagingTouchSlop;
509de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell    }
5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
512006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return Distance in dips between the first touch and second touch to still be
5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         considered a double tap
5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledDoubleTapSlop()} instead.
5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @hide The only client of this should be GestureDetector, which needs this
5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *       for clients that still use its deprecated constructor.
5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getDoubleTapSlop() {
5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return DOUBLE_TAP_SLOP;
5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
522c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
524006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return Distance in pixels between the first touch and second touch to still be
5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         considered a double tap
5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledDoubleTapSlop() {
5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mDoubleTapSlop;
5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
532a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov     * Interval for dispatching a recurring accessibility event in milliseconds.
533a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov     * This interval guarantees that a recurring event will be send at most once
534a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov     * during the {@link #getSendRecurringAccessibilityEventsInterval()} time frame.
535a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov     *
536a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov     * @return The delay in milliseconds.
537a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov     *
538a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov     * @hide
539a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov     */
540a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov    public static long getSendRecurringAccessibilityEventsInterval() {
541a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov        return SEND_RECURRING_ACCESSIBILITY_EVENTS_INTERVAL_MILLIS;
542a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov    }
543a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov
544a0156177cdc809795dd8bc5a19943dd2b6f82b66Svetoslav Ganov    /**
545006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return Distance in dips a touch must be outside the bounds of a window for it
5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to be counted as outside the window for purposes of dismissing that
5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * window.
5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledWindowTouchSlop()} instead.
5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getWindowTouchSlop() {
5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return WINDOW_TOUCH_SLOP;
5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
557006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return Distance in pixels a touch must be outside the bounds of a window for it
558006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * to be counted as outside the window for purposes of dismissing that window.
5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledWindowTouchSlop() {
5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mWindowTouchSlop;
5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
563c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
565006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return Minimum velocity to initiate a fling, as measured in dips per second.
5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledMinimumFlingVelocity()} instead.
5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getMinimumFlingVelocity() {
5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return MINIMUM_FLING_VELOCITY;
5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Minimum velocity to initiate a fling, as measured in pixels per second.
5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledMinimumFlingVelocity() {
5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mMinimumFlingVelocity;
5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
582006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return Maximum velocity to initiate a fling, as measured in dips per second.
5834296fc4d326447875c26a925f12b3935632f13bbRomain Guy     *
5844296fc4d326447875c26a925f12b3935632f13bbRomain Guy     * @deprecated Use {@link #getScaledMaximumFlingVelocity()} instead.
5854296fc4d326447875c26a925f12b3935632f13bbRomain Guy     */
5864296fc4d326447875c26a925f12b3935632f13bbRomain Guy    @Deprecated
5874296fc4d326447875c26a925f12b3935632f13bbRomain Guy    public static int getMaximumFlingVelocity() {
5884296fc4d326447875c26a925f12b3935632f13bbRomain Guy        return MAXIMUM_FLING_VELOCITY;
5894296fc4d326447875c26a925f12b3935632f13bbRomain Guy    }
5904296fc4d326447875c26a925f12b3935632f13bbRomain Guy
5914296fc4d326447875c26a925f12b3935632f13bbRomain Guy    /**
5924296fc4d326447875c26a925f12b3935632f13bbRomain Guy     * @return Maximum velocity to initiate a fling, as measured in pixels per second.
5934296fc4d326447875c26a925f12b3935632f13bbRomain Guy     */
5944296fc4d326447875c26a925f12b3935632f13bbRomain Guy    public int getScaledMaximumFlingVelocity() {
5954296fc4d326447875c26a925f12b3935632f13bbRomain Guy        return mMaximumFlingVelocity;
5964296fc4d326447875c26a925f12b3935632f13bbRomain Guy    }
597c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa
5984296fc4d326447875c26a925f12b3935632f13bbRomain Guy    /**
5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The maximum drawing cache size expressed in bytes.
6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the maximum size of View's drawing cache expressed in bytes
6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledMaximumDrawingCacheSize()} instead.
6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getMaximumDrawingCacheSize() {
6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        //noinspection deprecation
6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return MAXIMUM_DRAWING_CACHE_SIZE;
6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The maximum drawing cache size expressed in bytes.
6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the maximum size of View's drawing cache expressed in bytes
6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledMaximumDrawingCacheSize() {
6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mMaximumDrawingCacheSize;
6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
621006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return The maximum distance a View should overscroll by when showing edge effects (in
622006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * pixels).
623637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell     */
624637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell    public int getScaledOverscrollDistance() {
625637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell        return mOverscrollDistance;
626637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell    }
627637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell
628637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell    /**
629006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * @return The maximum distance a View should overfling by when showing edge effects (in
630006fa48bce7759013d9025376cd5167236c434a7Gilles Debunne     * pixels).
631637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell     */
632637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell    public int getScaledOverflingDistance() {
633637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell        return mOverflingDistance;
634637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell    }
635637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell
636637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell    /**
6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The amount of time that the zoom controls should be
6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * displayed on the screen expressed in milliseconds.
639c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa     *
6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the time the zoom controls should be visible expressed
6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in milliseconds.
6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static long getZoomControlsTimeout() {
6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return ZOOM_CONTROLS_TIMEOUT;
6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The amount of time a user needs to press the relevant key to bring up
6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the global actions dialog.
6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return how long a user needs to press the relevant key to bring up
6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   the global actions dialog.
6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static long getGlobalActionKeyTimeout() {
6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return GLOBAL_ACTIONS_KEY_TIMEOUT;
6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The amount of friction applied to scrolls and flings.
660c19895f7ede3129d88728844940c2586c88e74b2Daisuke Miyakawa     *
6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return A scalar dimensionless value representing the coefficient of
6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         friction.
6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static float getScrollFriction() {
6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return SCROLL_FRICTION;
6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6678c4706252228755ed181d19532b7e0cfec270ba4Adam Powell
6688c4706252228755ed181d19532b7e0cfec270ba4Adam Powell    /**
6698c4706252228755ed181d19532b7e0cfec270ba4Adam Powell     * Report if the device has a permanent menu key available to the user.
6708c4706252228755ed181d19532b7e0cfec270ba4Adam Powell     *
6718c4706252228755ed181d19532b7e0cfec270ba4Adam Powell     * <p>As of Android 3.0, devices may not have a permanent menu key available.
6728c4706252228755ed181d19532b7e0cfec270ba4Adam Powell     * Apps should use the action bar to present menu options to users.
6738c4706252228755ed181d19532b7e0cfec270ba4Adam Powell     * However, there are some apps where the action bar is inappropriate
6748c4706252228755ed181d19532b7e0cfec270ba4Adam Powell     * or undesirable. This method may be used to detect if a menu key is present.
6758c4706252228755ed181d19532b7e0cfec270ba4Adam Powell     * If not, applications should provide another on-screen affordance to access
6768c4706252228755ed181d19532b7e0cfec270ba4Adam Powell     * functionality.
6778c4706252228755ed181d19532b7e0cfec270ba4Adam Powell     *
6788c4706252228755ed181d19532b7e0cfec270ba4Adam Powell     * @return true if a permanent menu key is present, false otherwise.
6798c4706252228755ed181d19532b7e0cfec270ba4Adam Powell     */
6808c4706252228755ed181d19532b7e0cfec270ba4Adam Powell    public boolean hasPermanentMenuKey() {
6818c4706252228755ed181d19532b7e0cfec270ba4Adam Powell        return sHasPermanentMenuKey;
6828c4706252228755ed181d19532b7e0cfec270ba4Adam Powell    }
6836805545649f2b194859033df94602492b9ec086eRomain Guy
6846805545649f2b194859033df94602492b9ec086eRomain Guy    /**
6856805545649f2b194859033df94602492b9ec086eRomain Guy     * @hide
6866805545649f2b194859033df94602492b9ec086eRomain Guy     * @return Whether or not marquee should use fading edges.
6876805545649f2b194859033df94602492b9ec086eRomain Guy     */
6886805545649f2b194859033df94602492b9ec086eRomain Guy    public boolean isFadingMarqueeEnabled() {
6896805545649f2b194859033df94602492b9ec086eRomain Guy        return mFadingMarqueeEnabled;
6906805545649f2b194859033df94602492b9ec086eRomain Guy    }
6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
692