ViewConfiguration.java revision de8d0834fc2bc31f011fb3316757883e1b731440
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
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.DisplayMetrics;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.SparseArray;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Contains methods to standard constants used in the UI for timeouts, sizes, and distances.
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ViewConfiguration {
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the width of the horizontal scrollbar and the height of the vertical scrollbar in
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * pixels
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int SCROLL_BAR_SIZE = 10;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
34f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     * Duration of the fade when scrollbars fade away in milliseconds
35f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     */
36f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    private static final int SCROLL_BAR_FADE_DURATION = 250;
37f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron
38f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    /**
39f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     * Default delay before the scrollbars fade in milliseconds
40f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     */
41f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    private static final int SCROLL_BAR_DEFAULT_DELAY = 300;
42f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron
43f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    /**
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the length of the fading edges in pixels
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int FADING_EDGE_LENGTH = 12;
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds of the pressed state in child
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * components.
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
52e14579bac59aa84523c2bfbfc3f28c7842ec664dAdam Powell    private static final int PRESSED_STATE_DURATION = 125;
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds before a press turns into
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a long press
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int LONG_PRESS_TIMEOUT = 500;
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds a user needs to hold down the
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * appropriate button to bring up the global actions dialog (power off,
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * lock screen, etc).
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int GLOBAL_ACTIONS_KEY_TIMEOUT = 500;
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds we will wait to see if a touch event
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is a tap or a scroll. If the user does not move within this interval, it is
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * considered to be a tap.
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
72e14579bac59aa84523c2bfbfc3f28c7842ec664dAdam Powell    private static final int TAP_TIMEOUT = 115;
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds we will wait to see if a touch event
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is a jump tap. If the user does not complete the jump tap within this interval, it is
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * considered to be a tap.
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int JUMP_TAP_TIMEOUT = 500;
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds between the first tap's up event and
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the second tap's down event for an interaction to be considered a
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * double-tap.
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int DOUBLE_TAP_TIMEOUT = 300;
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds we want to display zoom controls in response
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to a user panning within an application.
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int ZOOM_CONTROLS_TIMEOUT = 3000;
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Inset in pixels to look for touchable content when the user touches the edge of the screen
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int EDGE_SLOP = 12;
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Distance a touch can wander before we think the user is scrolling in pixels
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1023e2ac8843489e83c4171aabcfe98769b5159a5c8Dianne Hackborn    private static final int TOUCH_SLOP = 16;
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
105de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell     * Distance a touch can wander before we think the user is attempting a paged scroll
106de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell     * (in dips)
107de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell     */
108de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell    private static final int PAGING_TOUCH_SLOP = TOUCH_SLOP * 3;
109de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell
110de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell    /**
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Distance between the first touch and second touch to still be considered a double tap
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int DOUBLE_TAP_SLOP = 100;
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Distance a touch needs to be outside of a window's bounds for it to
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * count as outside for purposes of dismissing the window.
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int WINDOW_TOUCH_SLOP = 16;
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Minimum velocity to initiate a fling, as measured in pixels per second
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int MINIMUM_FLING_VELOCITY = 50;
1254296fc4d326447875c26a925f12b3935632f13bbRomain Guy
1264296fc4d326447875c26a925f12b3935632f13bbRomain Guy    /**
1274296fc4d326447875c26a925f12b3935632f13bbRomain Guy     * Maximum velocity to initiate a fling, as measured in pixels per second
1284296fc4d326447875c26a925f12b3935632f13bbRomain Guy     */
1294296fc4d326447875c26a925f12b3935632f13bbRomain Guy    private static final int MAXIMUM_FLING_VELOCITY = 4000;
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The maximum size of View's drawing cache, expressed in bytes. This size
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * should be at least equal to the size of the screen in ARGB888 format.
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int MAXIMUM_DRAWING_CACHE_SIZE = 320 * 480 * 4; // HVGA screen, ARGB8888
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The coefficient of friction applied to flings/scrolls.
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static float SCROLL_FRICTION = 0.015f;
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mEdgeSlop;
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mFadingEdgeLength;
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mMinimumFlingVelocity;
1464296fc4d326447875c26a925f12b3935632f13bbRomain Guy    private final int mMaximumFlingVelocity;
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mScrollbarSize;
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mTouchSlop;
149de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell    private final int mPagingTouchSlop;
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mDoubleTapSlop;
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mWindowTouchSlop;
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mMaximumDrawingCacheSize;
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final SparseArray<ViewConfiguration> sConfigurations =
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            new SparseArray<ViewConfiguration>(2);
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link android.view.ViewConfiguration#get(android.content.Context)} instead.
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ViewConfiguration() {
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mEdgeSlop = EDGE_SLOP;
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mFadingEdgeLength = FADING_EDGE_LENGTH;
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mMinimumFlingVelocity = MINIMUM_FLING_VELOCITY;
1654296fc4d326447875c26a925f12b3935632f13bbRomain Guy        mMaximumFlingVelocity = MAXIMUM_FLING_VELOCITY;
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mScrollbarSize = SCROLL_BAR_SIZE;
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mTouchSlop = TOUCH_SLOP;
168de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell        mPagingTouchSlop = PAGING_TOUCH_SLOP;
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mDoubleTapSlop = DOUBLE_TAP_SLOP;
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mWindowTouchSlop = WINDOW_TOUCH_SLOP;
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        //noinspection deprecation
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mMaximumDrawingCacheSize = MAXIMUM_DRAWING_CACHE_SIZE;
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Creates a new configuration for the specified context. The configuration depends on
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * various parameters of the context, like the dimension of the display or the density
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of the display.
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param context The application context used to initialize this view configuration.
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #get(android.content.Context)
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.util.DisplayMetrics
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private ViewConfiguration(Context context) {
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final DisplayMetrics metrics = context.getResources().getDisplayMetrics();
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final float density = metrics.density;
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mEdgeSlop = (int) (density * EDGE_SLOP + 0.5f);
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mFadingEdgeLength = (int) (density * FADING_EDGE_LENGTH + 0.5f);
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mMinimumFlingVelocity = (int) (density * MINIMUM_FLING_VELOCITY + 0.5f);
1924296fc4d326447875c26a925f12b3935632f13bbRomain Guy        mMaximumFlingVelocity = (int) (density * MAXIMUM_FLING_VELOCITY + 0.5f);
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mScrollbarSize = (int) (density * SCROLL_BAR_SIZE + 0.5f);
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mTouchSlop = (int) (density * TOUCH_SLOP + 0.5f);
195de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell        mPagingTouchSlop = (int) (density * PAGING_TOUCH_SLOP + 0.5f);
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mDoubleTapSlop = (int) (density * DOUBLE_TAP_SLOP + 0.5f);
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mWindowTouchSlop = (int) (density * WINDOW_TOUCH_SLOP + 0.5f);
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Size of the screen in bytes, in ARGB_8888 format
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mMaximumDrawingCacheSize = 4 * metrics.widthPixels * metrics.heightPixels;
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a configuration for the specified context. The configuration depends on
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * various parameters of the context, like the dimension of the display or the
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * density of the display.
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param context The application context used to initialize the view configuration.
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static ViewConfiguration get(Context context) {
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final DisplayMetrics metrics = context.getResources().getDisplayMetrics();
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final int density = (int) (100.0f * metrics.density);
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ViewConfiguration configuration = sConfigurations.get(density);
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (configuration == null) {
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            configuration = new ViewConfiguration(context);
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            sConfigurations.put(density, configuration);
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return configuration;
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The width of the horizontal scrollbar and the height of the vertical
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         scrollbar in pixels
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledScrollBarSize()} instead.
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getScrollBarSize() {
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return SCROLL_BAR_SIZE;
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The width of the horizontal scrollbar and the height of the vertical
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         scrollbar in pixels
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledScrollBarSize() {
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mScrollbarSize;
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
243f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     * @return Duration of the fade when scrollbars fade away in milliseconds
244f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     */
245f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    public static int getScrollBarFadeDuration() {
246f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron        return SCROLL_BAR_FADE_DURATION;
247f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    }
248f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron
249f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    /**
250f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     * @return Default delay before the scrollbars fade in milliseconds
251f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron     */
252f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    public static int getScrollDefaultDelay() {
253f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron        return SCROLL_BAR_DEFAULT_DELAY;
254f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    }
255f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron
256f116bf8884b5b58aae261d148003811aa4a7c6e9Mike Cleron    /**
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the length of the fading edges in pixels
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledFadingEdgeLength()} instead.
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getFadingEdgeLength() {
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return FADING_EDGE_LENGTH;
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the length of the fading edges in pixels
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledFadingEdgeLength() {
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mFadingEdgeLength;
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds of the pressed state in child
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * components.
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getPressedStateDuration() {
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return PRESSED_STATE_DURATION;
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds before a press turns into
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a long press
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getLongPressTimeout() {
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return LONG_PRESS_TIMEOUT;
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds we will wait to see if a touch event
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is a tap or a scroll. If the user does not move within this interval, it is
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * considered to be a tap.
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getTapTimeout() {
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return TAP_TIMEOUT;
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds we will wait to see if a touch event
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is a jump tap. If the user does not move within this interval, it is
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * considered to be a tap.
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getJumpTapTimeout() {
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return JUMP_TAP_TIMEOUT;
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds between the first tap's up event and
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the second tap's down event for an interaction to be considered a
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * double-tap.
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getDoubleTapTimeout() {
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return DOUBLE_TAP_TIMEOUT;
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Inset in pixels to look for touchable content when the user touches the edge of the
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         screen
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledEdgeSlop()} instead.
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getEdgeSlop() {
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return EDGE_SLOP;
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Inset in pixels to look for touchable content when the user touches the edge of the
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         screen
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledEdgeSlop() {
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mEdgeSlop;
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Distance a touch can wander before we think the user is scrolling in pixels
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledTouchSlop()} instead.
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getTouchSlop() {
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return TOUCH_SLOP;
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Distance a touch can wander before we think the user is scrolling in pixels
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledTouchSlop() {
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mTouchSlop;
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
351de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell
352de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell    /**
353de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell     * @return Distance a touch can wander before we think the user is scrolling a full page
354de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell     *         in dips
355de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell     */
356de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell    public int getScaledPagingTouchSlop() {
357de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell        return mPagingTouchSlop;
358de8d0834fc2bc31f011fb3316757883e1b731440Adam Powell    }
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Distance between the first touch and second touch to still be
3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         considered a double tap
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledDoubleTapSlop()} instead.
3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @hide The only client of this should be GestureDetector, which needs this
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *       for clients that still use its deprecated constructor.
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getDoubleTapSlop() {
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return DOUBLE_TAP_SLOP;
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Distance between the first touch and second touch to still be
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         considered a double tap
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledDoubleTapSlop() {
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mDoubleTapSlop;
3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Distance a touch must be outside the bounds of a window for it
3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to be counted as outside the window for purposes of dismissing that
3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * window.
3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledWindowTouchSlop()} instead.
3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getWindowTouchSlop() {
3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return WINDOW_TOUCH_SLOP;
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Distance a touch must be outside the bounds of a window for it
3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to be counted as outside the window for purposes of dismissing that
3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * window.
3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledWindowTouchSlop() {
3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mWindowTouchSlop;
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Minimum velocity to initiate a fling, as measured in pixels per second.
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledMinimumFlingVelocity()} instead.
4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getMinimumFlingVelocity() {
4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return MINIMUM_FLING_VELOCITY;
4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Minimum velocity to initiate a fling, as measured in pixels per second.
4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledMinimumFlingVelocity() {
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mMinimumFlingVelocity;
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4194296fc4d326447875c26a925f12b3935632f13bbRomain Guy     * @return Maximum velocity to initiate a fling, as measured in pixels per second.
4204296fc4d326447875c26a925f12b3935632f13bbRomain Guy     *
4214296fc4d326447875c26a925f12b3935632f13bbRomain Guy     * @deprecated Use {@link #getScaledMaximumFlingVelocity()} instead.
4224296fc4d326447875c26a925f12b3935632f13bbRomain Guy     */
4234296fc4d326447875c26a925f12b3935632f13bbRomain Guy    @Deprecated
4244296fc4d326447875c26a925f12b3935632f13bbRomain Guy    public static int getMaximumFlingVelocity() {
4254296fc4d326447875c26a925f12b3935632f13bbRomain Guy        return MAXIMUM_FLING_VELOCITY;
4264296fc4d326447875c26a925f12b3935632f13bbRomain Guy    }
4274296fc4d326447875c26a925f12b3935632f13bbRomain Guy
4284296fc4d326447875c26a925f12b3935632f13bbRomain Guy    /**
4294296fc4d326447875c26a925f12b3935632f13bbRomain Guy     * @return Maximum velocity to initiate a fling, as measured in pixels per second.
4304296fc4d326447875c26a925f12b3935632f13bbRomain Guy     */
4314296fc4d326447875c26a925f12b3935632f13bbRomain Guy    public int getScaledMaximumFlingVelocity() {
4324296fc4d326447875c26a925f12b3935632f13bbRomain Guy        return mMaximumFlingVelocity;
4334296fc4d326447875c26a925f12b3935632f13bbRomain Guy    }
4344296fc4d326447875c26a925f12b3935632f13bbRomain Guy
4354296fc4d326447875c26a925f12b3935632f13bbRomain Guy    /**
4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The maximum drawing cache size expressed in bytes.
4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the maximum size of View's drawing cache expressed in bytes
4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledMaximumDrawingCacheSize()} instead.
4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getMaximumDrawingCacheSize() {
4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        //noinspection deprecation
4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return MAXIMUM_DRAWING_CACHE_SIZE;
4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The maximum drawing cache size expressed in bytes.
4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the maximum size of View's drawing cache expressed in bytes
4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledMaximumDrawingCacheSize() {
4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mMaximumDrawingCacheSize;
4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The amount of time that the zoom controls should be
4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * displayed on the screen expressed in milliseconds.
4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the time the zoom controls should be visible expressed
4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in milliseconds.
4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static long getZoomControlsTimeout() {
4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return ZOOM_CONTROLS_TIMEOUT;
4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The amount of time a user needs to press the relevant key to bring up
4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the global actions dialog.
4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return how long a user needs to press the relevant key to bring up
4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   the global actions dialog.
4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static long getGlobalActionKeyTimeout() {
4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return GLOBAL_ACTIONS_KEY_TIMEOUT;
4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The amount of friction applied to scrolls and flings.
4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return A scalar dimensionless value representing the coefficient of
4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         friction.
4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static float getScrollFriction() {
4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return SCROLL_FRICTION;
4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
489