ViewConfiguration.java revision bb3fcba0caf697f1d238a2cbefdf1efe06eded99
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; 2254d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganovimport android.os.Bundle; 2354d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganovimport android.provider.Settings; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.DisplayMetrics; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.SparseArray; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Contains methods to standard constants used in the UI for timeouts, sizes, and distances. 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ViewConfiguration { 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 32dbc26d2ba13f80a7590c57de2d80530d96832969Romain Guy * Expected bit depth of the display panel. 33dbc26d2ba13f80a7590c57de2d80530d96832969Romain Guy * 34dbc26d2ba13f80a7590c57de2d80530d96832969Romain Guy * @hide 35dbc26d2ba13f80a7590c57de2d80530d96832969Romain Guy */ 36dbc26d2ba13f80a7590c57de2d80530d96832969Romain Guy public static final float PANEL_BIT_DEPTH = 24; 37dbc26d2ba13f80a7590c57de2d80530d96832969Romain Guy 38dbc26d2ba13f80a7590c57de2d80530d96832969Romain Guy /** 39dbc26d2ba13f80a7590c57de2d80530d96832969Romain Guy * Minimum alpha required for a view to draw. 40dbc26d2ba13f80a7590c57de2d80530d96832969Romain Guy * 41dbc26d2ba13f80a7590c57de2d80530d96832969Romain Guy * @hide 42dbc26d2ba13f80a7590c57de2d80530d96832969Romain Guy */ 43dbc26d2ba13f80a7590c57de2d80530d96832969Romain Guy public static final float ALPHA_THRESHOLD = 0.5f / PANEL_BIT_DEPTH; 44909cbaf8f92d69f507bbdba9e5aa960d1e6c7a1fRomain Guy /** 45909cbaf8f92d69f507bbdba9e5aa960d1e6c7a1fRomain Guy * @hide 46909cbaf8f92d69f507bbdba9e5aa960d1e6c7a1fRomain Guy */ 47909cbaf8f92d69f507bbdba9e5aa960d1e6c7a1fRomain Guy public static final float ALPHA_THRESHOLD_INT = 0x7f / PANEL_BIT_DEPTH; 48909cbaf8f92d69f507bbdba9e5aa960d1e6c7a1fRomain Guy 49dbc26d2ba13f80a7590c57de2d80530d96832969Romain Guy /** 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Defines the width of the horizontal scrollbar and the height of the vertical scrollbar in 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * pixels 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int SCROLL_BAR_SIZE = 10; 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 56f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron * Duration of the fade when scrollbars fade away in milliseconds 57f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron */ 58f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron private static final int SCROLL_BAR_FADE_DURATION = 250; 59f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron 60f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron /** 61f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron * Default delay before the scrollbars fade in milliseconds 62f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron */ 63f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron private static final int SCROLL_BAR_DEFAULT_DELAY = 300; 64f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron 65f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron /** 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Defines the length of the fading edges in pixels 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int FADING_EDGE_LENGTH = 12; 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Defines the duration in milliseconds of the pressed state in child 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * components. 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 74e14579bac59aa84523c2bfbfc3f28c7842ec664dAdam Powell private static final int PRESSED_STATE_DURATION = 125; 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 77a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown * Defines the default duration in milliseconds before a press turns into 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a long press 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 80a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown private static final int DEFAULT_LONG_PRESS_TIMEOUT = 500; 81a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown 82a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown /** 83a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown * Defines the time between successive key repeats in milliseconds. 84a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown */ 85a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown private static final int KEY_REPEAT_DELAY = 50; 86a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Defines the duration in milliseconds a user needs to hold down the 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * appropriate button to bring up the global actions dialog (power off, 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * lock screen, etc). 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int GLOBAL_ACTIONS_KEY_TIMEOUT = 500; 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Defines the duration in milliseconds we will wait to see if a touch event 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is a tap or a scroll. If the user does not move within this interval, it is 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * considered to be a tap. 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 99e14579bac59aa84523c2bfbfc3f28c7842ec664dAdam Powell private static final int TAP_TIMEOUT = 115; 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Defines the duration in milliseconds we will wait to see if a touch event 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is a jump tap. If the user does not complete the jump tap within this interval, it is 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * considered to be a tap. 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int JUMP_TAP_TIMEOUT = 500; 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Defines the duration in milliseconds between the first tap's up event and 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the second tap's down event for an interaction to be considered a 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * double-tap. 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int DOUBLE_TAP_TIMEOUT = 300; 114bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown 115bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown /** 116bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * Defines the maximum duration in milliseconds between a touch pad 117bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * touch and release for a given touch to be considered a tap (click) as 118bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * opposed to a hover movement gesture. 119bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown */ 120bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown private static final int HOVER_TAP_TIMEOUT = 150; 121bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown 122bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown /** 123bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * Defines the maximum distance in pixels that a touch pad touch can move 124bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * before being released for it to be considered a tap (click) as opposed 125bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * to a hover movement gesture. 126bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown */ 127bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown private static final int HOVER_TAP_SLOP = 20; 128bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Defines the duration in milliseconds we want to display zoom controls in response 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to a user panning within an application. 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int ZOOM_CONTROLS_TIMEOUT = 3000; 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inset in pixels to look for touchable content when the user touches the edge of the screen 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int EDGE_SLOP = 12; 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Distance a touch can wander before we think the user is scrolling in pixels 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1433e2ac8843489e83c4171aabcfe98769b5159a5c8Dianne Hackborn private static final int TOUCH_SLOP = 16; 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 146de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell * Distance a touch can wander before we think the user is attempting a paged scroll 147de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell * (in dips) 148de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell */ 149b7ef1d9ec9aa09ecba5a348c939b10f798aff131Adam Powell private static final int PAGING_TOUCH_SLOP = TOUCH_SLOP * 2; 150de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell 151de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell /** 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Distance between the first touch and second touch to still be considered a double tap 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int DOUBLE_TAP_SLOP = 100; 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Distance a touch needs to be outside of a window's bounds for it to 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * count as outside for purposes of dismissing the window. 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int WINDOW_TOUCH_SLOP = 16; 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Minimum velocity to initiate a fling, as measured in pixels per second 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int MINIMUM_FLING_VELOCITY = 50; 1664296fc4d326447875c26a925f12b3935632f13bbRomain Guy 1674296fc4d326447875c26a925f12b3935632f13bbRomain Guy /** 1684296fc4d326447875c26a925f12b3935632f13bbRomain Guy * Maximum velocity to initiate a fling, as measured in pixels per second 1694296fc4d326447875c26a925f12b3935632f13bbRomain Guy */ 170637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell private static final int MAXIMUM_FLING_VELOCITY = 8000; 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The maximum size of View's drawing cache, expressed in bytes. This size 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * should be at least equal to the size of the screen in ARGB888 format. 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 1770211a0a10d20ec99bd78905ea9cd2960f7beb4c8Romain Guy private static final int MAXIMUM_DRAWING_CACHE_SIZE = 480 * 800 * 4; // ARGB8888 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The coefficient of friction applied to flings/scrolls. 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1820211a0a10d20ec99bd78905ea9cd2960f7beb4c8Romain Guy private static final float SCROLL_FRICTION = 0.015f; 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 184637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell /** 185637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell * Max distance to overscroll for edge effects 186637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell */ 187637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell private static final int OVERSCROLL_DISTANCE = 0; 188637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell 189637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell /** 190637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell * Max distance to overfling for edge effects 191637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell */ 1928ce7aab79e711ff5de54985aeffb1a205b7f9942Gilles Debunne private static final int OVERFLING_DISTANCE = 6; 193637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final int mEdgeSlop; 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final int mFadingEdgeLength; 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final int mMinimumFlingVelocity; 1974296fc4d326447875c26a925f12b3935632f13bbRomain Guy private final int mMaximumFlingVelocity; 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final int mScrollbarSize; 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final int mTouchSlop; 200de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell private final int mPagingTouchSlop; 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final int mDoubleTapSlop; 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final int mWindowTouchSlop; 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final int mMaximumDrawingCacheSize; 204637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell private final int mOverscrollDistance; 205637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell private final int mOverflingDistance; 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final SparseArray<ViewConfiguration> sConfigurations = 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new SparseArray<ViewConfiguration>(2); 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link android.view.ViewConfiguration#get(android.content.Context)} instead. 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ViewConfiguration() { 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mEdgeSlop = EDGE_SLOP; 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mFadingEdgeLength = FADING_EDGE_LENGTH; 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMinimumFlingVelocity = MINIMUM_FLING_VELOCITY; 2184296fc4d326447875c26a925f12b3935632f13bbRomain Guy mMaximumFlingVelocity = MAXIMUM_FLING_VELOCITY; 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mScrollbarSize = SCROLL_BAR_SIZE; 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTouchSlop = TOUCH_SLOP; 221de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell mPagingTouchSlop = PAGING_TOUCH_SLOP; 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mDoubleTapSlop = DOUBLE_TAP_SLOP; 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mWindowTouchSlop = WINDOW_TOUCH_SLOP; 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //noinspection deprecation 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMaximumDrawingCacheSize = MAXIMUM_DRAWING_CACHE_SIZE; 226637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell mOverscrollDistance = OVERSCROLL_DISTANCE; 227637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell mOverflingDistance = OVERFLING_DISTANCE; 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Creates a new configuration for the specified context. The configuration depends on 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * various parameters of the context, like the dimension of the display or the density 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of the display. 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param context The application context used to initialize this view configuration. 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #get(android.content.Context) 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.util.DisplayMetrics 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private ViewConfiguration(Context context) { 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final DisplayMetrics metrics = context.getResources().getDisplayMetrics(); 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final float density = metrics.density; 243ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn final float sizeAndDensity; 244ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn if (context.getResources().getConfiguration().isLayoutSizeAtLeast( 245ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn Configuration.SCREENLAYOUT_SIZE_XLARGE)) { 246ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn sizeAndDensity = density * 1.5f; 247ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn } else { 248ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn sizeAndDensity = density; 249ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn } 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 251ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn mEdgeSlop = (int) (sizeAndDensity * EDGE_SLOP + 0.5f); 252ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn mFadingEdgeLength = (int) (sizeAndDensity * FADING_EDGE_LENGTH + 0.5f); 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMinimumFlingVelocity = (int) (density * MINIMUM_FLING_VELOCITY + 0.5f); 2544296fc4d326447875c26a925f12b3935632f13bbRomain Guy mMaximumFlingVelocity = (int) (density * MAXIMUM_FLING_VELOCITY + 0.5f); 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mScrollbarSize = (int) (density * SCROLL_BAR_SIZE + 0.5f); 256ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn mTouchSlop = (int) (sizeAndDensity * TOUCH_SLOP + 0.5f); 257ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn mPagingTouchSlop = (int) (sizeAndDensity * PAGING_TOUCH_SLOP + 0.5f); 258ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn mDoubleTapSlop = (int) (sizeAndDensity * DOUBLE_TAP_SLOP + 0.5f); 259ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn mWindowTouchSlop = (int) (sizeAndDensity * WINDOW_TOUCH_SLOP + 0.5f); 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Size of the screen in bytes, in ARGB_8888 format 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMaximumDrawingCacheSize = 4 * metrics.widthPixels * metrics.heightPixels; 263637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell 264ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn mOverscrollDistance = (int) (sizeAndDensity * OVERSCROLL_DISTANCE + 0.5f); 265ff801ec71399f7e8aa95bcbb9937c53144fe17c5Dianne Hackborn mOverflingDistance = (int) (sizeAndDensity * OVERFLING_DISTANCE + 0.5f); 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns a configuration for the specified context. The configuration depends on 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * various parameters of the context, like the dimension of the display or the 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * density of the display. 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param context The application context used to initialize the view configuration. 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static ViewConfiguration get(Context context) { 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final DisplayMetrics metrics = context.getResources().getDisplayMetrics(); 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int density = (int) (100.0f * metrics.density); 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ViewConfiguration configuration = sConfigurations.get(density); 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (configuration == null) { 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project configuration = new ViewConfiguration(context); 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sConfigurations.put(density, configuration); 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return configuration; 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The width of the horizontal scrollbar and the height of the vertical 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * scrollbar in pixels 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #getScaledScrollBarSize()} instead. 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getScrollBarSize() { 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return SCROLL_BAR_SIZE; 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The width of the horizontal scrollbar and the height of the vertical 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * scrollbar in pixels 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getScaledScrollBarSize() { 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mScrollbarSize; 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 308f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron * @return Duration of the fade when scrollbars fade away in milliseconds 309f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron */ 310f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron public static int getScrollBarFadeDuration() { 311f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron return SCROLL_BAR_FADE_DURATION; 312f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron } 313f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron 314f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron /** 315f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron * @return Default delay before the scrollbars fade in milliseconds 316f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron */ 317f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron public static int getScrollDefaultDelay() { 318f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron return SCROLL_BAR_DEFAULT_DELAY; 319f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron } 320f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron 321f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron /** 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the length of the fading edges in pixels 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #getScaledFadingEdgeLength()} instead. 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getFadingEdgeLength() { 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return FADING_EDGE_LENGTH; 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the length of the fading edges in pixels 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getScaledFadingEdgeLength() { 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mFadingEdgeLength; 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the duration in milliseconds of the pressed state in child 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * components. 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getPressedStateDuration() { 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return PRESSED_STATE_DURATION; 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 34554d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the duration in milliseconds before a press turns into 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a long press 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getLongPressTimeout() { 35154d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov return AppGlobals.getIntCoreSetting(Settings.Secure.LONG_PRESS_TIMEOUT, 352a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown DEFAULT_LONG_PRESS_TIMEOUT); 353a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown } 354a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown 355a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown /** 356a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown * @return the time before the first key repeat in milliseconds. 357a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown */ 358a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown public static int getKeyRepeatTimeout() { 359a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown return getLongPressTimeout(); 360a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown } 361a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown 362a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown /** 363a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown * @return the time between successive key repeats in milliseconds. 364a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown */ 365a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown public static int getKeyRepeatDelay() { 366a454767b09ecb7d25d00beae0e5a1fdd48605c63Jeff Brown return KEY_REPEAT_DELAY; 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 36854d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the duration in milliseconds we will wait to see if a touch event 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is a tap or a scroll. If the user does not move within this interval, it is 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * considered to be a tap. 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getTapTimeout() { 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return TAP_TIMEOUT; 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 377bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the duration in milliseconds we will wait to see if a touch event 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is a jump tap. If the user does not move within this interval, it is 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * considered to be a tap. 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getJumpTapTimeout() { 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return JUMP_TAP_TIMEOUT; 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the duration in milliseconds between the first tap's up event and 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the second tap's down event for an interaction to be considered a 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * double-tap. 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getDoubleTapTimeout() { 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return DOUBLE_TAP_TIMEOUT; 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 395bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown 396bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown /** 397bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * @return the maximum duration in milliseconds between a touch pad 398bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * touch and release for a given touch to be considered a tap (click) as 399bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * opposed to a hover movement gesture. 400bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * @hide 401bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown */ 402bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown public static int getHoverTapTimeout() { 403bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown return HOVER_TAP_TIMEOUT; 404bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown } 405bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown 406bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown /** 407bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * @return the maximum distance in pixels that a touch pad touch can move 408bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * before being released for it to be considered a tap (click) as opposed 409bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * to a hover movement gesture. 410bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown * @hide 411bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown */ 412bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown public static int getHoverTapSlop() { 413bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown return HOVER_TAP_SLOP; 414bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown } 415bb3fcba0caf697f1d238a2cbefdf1efe06eded99Jeff Brown 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Inset in pixels to look for touchable content when the user touches the edge of the 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * screen 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #getScaledEdgeSlop()} instead. 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getEdgeSlop() { 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return EDGE_SLOP; 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Inset in pixels to look for touchable content when the user touches the edge of the 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * screen 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getScaledEdgeSlop() { 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mEdgeSlop; 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Distance a touch can wander before we think the user is scrolling in pixels 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #getScaledTouchSlop()} instead. 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getTouchSlop() { 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return TOUCH_SLOP; 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Distance a touch can wander before we think the user is scrolling in pixels 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getScaledTouchSlop() { 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mTouchSlop; 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 451de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell 452de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell /** 453de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell * @return Distance a touch can wander before we think the user is scrolling a full page 454de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell * in dips 455de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell */ 456de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell public int getScaledPagingTouchSlop() { 457de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell return mPagingTouchSlop; 458de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell } 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Distance between the first touch and second touch to still be 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * considered a double tap 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #getScaledDoubleTapSlop()} instead. 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide The only client of this should be GestureDetector, which needs this 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for clients that still use its deprecated constructor. 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getDoubleTapSlop() { 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return DOUBLE_TAP_SLOP; 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Distance between the first touch and second touch to still be 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * considered a double tap 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getScaledDoubleTapSlop() { 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mDoubleTapSlop; 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Distance a touch must be outside the bounds of a window for it 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to be counted as outside the window for purposes of dismissing that 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * window. 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #getScaledWindowTouchSlop()} instead. 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getWindowTouchSlop() { 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return WINDOW_TOUCH_SLOP; 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Distance a touch must be outside the bounds of a window for it 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to be counted as outside the window for purposes of dismissing that 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * window. 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getScaledWindowTouchSlop() { 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mWindowTouchSlop; 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Minimum velocity to initiate a fling, as measured in pixels per second. 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #getScaledMinimumFlingVelocity()} instead. 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getMinimumFlingVelocity() { 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return MINIMUM_FLING_VELOCITY; 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Minimum velocity to initiate a fling, as measured in pixels per second. 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getScaledMinimumFlingVelocity() { 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mMinimumFlingVelocity; 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5194296fc4d326447875c26a925f12b3935632f13bbRomain Guy * @return Maximum velocity to initiate a fling, as measured in pixels per second. 5204296fc4d326447875c26a925f12b3935632f13bbRomain Guy * 5214296fc4d326447875c26a925f12b3935632f13bbRomain Guy * @deprecated Use {@link #getScaledMaximumFlingVelocity()} instead. 5224296fc4d326447875c26a925f12b3935632f13bbRomain Guy */ 5234296fc4d326447875c26a925f12b3935632f13bbRomain Guy @Deprecated 5244296fc4d326447875c26a925f12b3935632f13bbRomain Guy public static int getMaximumFlingVelocity() { 5254296fc4d326447875c26a925f12b3935632f13bbRomain Guy return MAXIMUM_FLING_VELOCITY; 5264296fc4d326447875c26a925f12b3935632f13bbRomain Guy } 5274296fc4d326447875c26a925f12b3935632f13bbRomain Guy 5284296fc4d326447875c26a925f12b3935632f13bbRomain Guy /** 5294296fc4d326447875c26a925f12b3935632f13bbRomain Guy * @return Maximum velocity to initiate a fling, as measured in pixels per second. 5304296fc4d326447875c26a925f12b3935632f13bbRomain Guy */ 5314296fc4d326447875c26a925f12b3935632f13bbRomain Guy public int getScaledMaximumFlingVelocity() { 5324296fc4d326447875c26a925f12b3935632f13bbRomain Guy return mMaximumFlingVelocity; 5334296fc4d326447875c26a925f12b3935632f13bbRomain Guy } 5344296fc4d326447875c26a925f12b3935632f13bbRomain Guy 5354296fc4d326447875c26a925f12b3935632f13bbRomain Guy /** 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The maximum drawing cache size expressed in bytes. 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the maximum size of View's drawing cache expressed in bytes 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #getScaledMaximumDrawingCacheSize()} instead. 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getMaximumDrawingCacheSize() { 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //noinspection deprecation 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return MAXIMUM_DRAWING_CACHE_SIZE; 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The maximum drawing cache size expressed in bytes. 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the maximum size of View's drawing cache expressed in bytes 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getScaledMaximumDrawingCacheSize() { 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mMaximumDrawingCacheSize; 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 558637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell * @return The maximum distance a View should overscroll by when showing edge effects. 559637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell */ 560637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell public int getScaledOverscrollDistance() { 561637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell return mOverscrollDistance; 562637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell } 563637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell 564637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell /** 565637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell * @return The maximum distance a View should overfling by when showing edge effects. 566637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell */ 567637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell public int getScaledOverflingDistance() { 568637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell return mOverflingDistance; 569637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell } 570637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell 571637d337b58d8eec6de19230a5dd5ca5581c0478dAdam Powell /** 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The amount of time that the zoom controls should be 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * displayed on the screen expressed in milliseconds. 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the time the zoom controls should be visible expressed 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * in milliseconds. 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static long getZoomControlsTimeout() { 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ZOOM_CONTROLS_TIMEOUT; 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The amount of time a user needs to press the relevant key to bring up 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the global actions dialog. 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return how long a user needs to press the relevant key to bring up 5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the global actions dialog. 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static long getGlobalActionKeyTimeout() { 5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return GLOBAL_ACTIONS_KEY_TIMEOUT; 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The amount of friction applied to scrolls and flings. 5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return A scalar dimensionless value representing the coefficient of 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * friction. 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static float getScrollFriction() { 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return SCROLL_FRICTION; 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 603