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