ViewConfiguration.java revision 4296fc4d326447875c26a925f12b3935632f13bb
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    /**
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the length of the fading edges in pixels
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int FADING_EDGE_LENGTH = 12;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds of the pressed state in child
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * components.
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int PRESSED_STATE_DURATION = 85;
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds before a press turns into
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a long press
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int LONG_PRESS_TIMEOUT = 500;
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds a user needs to hold down the
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * appropriate button to bring up the global actions dialog (power off,
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * lock screen, etc).
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int GLOBAL_ACTIONS_KEY_TIMEOUT = 500;
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds we will wait to see if a touch event
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is a tap or a scroll. If the user does not move within this interval, it is
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * considered to be a tap.
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int TAP_TIMEOUT = 100;
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds we will wait to see if a touch event
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is a jump tap. If the user does not complete the jump tap within this interval, it is
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * considered to be a tap.
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int JUMP_TAP_TIMEOUT = 500;
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds between the first tap's up event and
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the second tap's down event for an interaction to be considered a
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * double-tap.
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int DOUBLE_TAP_TIMEOUT = 300;
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Defines the duration in milliseconds we want to display zoom controls in response
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to a user panning within an application.
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int ZOOM_CONTROLS_TIMEOUT = 3000;
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Inset in pixels to look for touchable content when the user touches the edge of the screen
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int EDGE_SLOP = 12;
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Distance a touch can wander before we think the user is scrolling in pixels
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int TOUCH_SLOP = 25;
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Distance between the first touch and second touch to still be considered a double tap
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int DOUBLE_TAP_SLOP = 100;
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Distance a touch needs to be outside of a window's bounds for it to
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * count as outside for purposes of dismissing the window.
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int WINDOW_TOUCH_SLOP = 16;
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Minimum velocity to initiate a fling, as measured in pixels per second
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int MINIMUM_FLING_VELOCITY = 50;
1094296fc4d326447875c26a925f12b3935632f13bbRomain Guy
1104296fc4d326447875c26a925f12b3935632f13bbRomain Guy    /**
1114296fc4d326447875c26a925f12b3935632f13bbRomain Guy     * Maximum velocity to initiate a fling, as measured in pixels per second
1124296fc4d326447875c26a925f12b3935632f13bbRomain Guy     */
1134296fc4d326447875c26a925f12b3935632f13bbRomain Guy    private static final int MAXIMUM_FLING_VELOCITY = 4000;
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The maximum size of View's drawing cache, expressed in bytes. This size
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * should be at least equal to the size of the screen in ARGB888 format.
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int MAXIMUM_DRAWING_CACHE_SIZE = 320 * 480 * 4; // HVGA screen, ARGB8888
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The coefficient of friction applied to flings/scrolls.
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static float SCROLL_FRICTION = 0.015f;
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mEdgeSlop;
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mFadingEdgeLength;
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mMinimumFlingVelocity;
1304296fc4d326447875c26a925f12b3935632f13bbRomain Guy    private final int mMaximumFlingVelocity;
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mScrollbarSize;
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mTouchSlop;
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mDoubleTapSlop;
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mWindowTouchSlop;
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final int mMaximumDrawingCacheSize;
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final SparseArray<ViewConfiguration> sConfigurations =
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            new SparseArray<ViewConfiguration>(2);
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link android.view.ViewConfiguration#get(android.content.Context)} instead.
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ViewConfiguration() {
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mEdgeSlop = EDGE_SLOP;
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mFadingEdgeLength = FADING_EDGE_LENGTH;
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mMinimumFlingVelocity = MINIMUM_FLING_VELOCITY;
1484296fc4d326447875c26a925f12b3935632f13bbRomain Guy        mMaximumFlingVelocity = MAXIMUM_FLING_VELOCITY;
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mScrollbarSize = SCROLL_BAR_SIZE;
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mTouchSlop = TOUCH_SLOP;
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mDoubleTapSlop = DOUBLE_TAP_SLOP;
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mWindowTouchSlop = WINDOW_TOUCH_SLOP;
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        //noinspection deprecation
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mMaximumDrawingCacheSize = MAXIMUM_DRAWING_CACHE_SIZE;
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Creates a new configuration for the specified context. The configuration depends on
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * various parameters of the context, like the dimension of the display or the density
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of the display.
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param context The application context used to initialize this view configuration.
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #get(android.content.Context)
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.util.DisplayMetrics
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private ViewConfiguration(Context context) {
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final DisplayMetrics metrics = context.getResources().getDisplayMetrics();
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final float density = metrics.density;
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mEdgeSlop = (int) (density * EDGE_SLOP + 0.5f);
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mFadingEdgeLength = (int) (density * FADING_EDGE_LENGTH + 0.5f);
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mMinimumFlingVelocity = (int) (density * MINIMUM_FLING_VELOCITY + 0.5f);
1744296fc4d326447875c26a925f12b3935632f13bbRomain Guy        mMaximumFlingVelocity = (int) (density * MAXIMUM_FLING_VELOCITY + 0.5f);
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mScrollbarSize = (int) (density * SCROLL_BAR_SIZE + 0.5f);
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mTouchSlop = (int) (density * TOUCH_SLOP + 0.5f);
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mDoubleTapSlop = (int) (density * DOUBLE_TAP_SLOP + 0.5f);
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mWindowTouchSlop = (int) (density * WINDOW_TOUCH_SLOP + 0.5f);
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Size of the screen in bytes, in ARGB_8888 format
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mMaximumDrawingCacheSize = 4 * metrics.widthPixels * metrics.heightPixels;
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a configuration for the specified context. The configuration depends on
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * various parameters of the context, like the dimension of the display or the
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * density of the display.
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param context The application context used to initialize the view configuration.
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static ViewConfiguration get(Context context) {
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final DisplayMetrics metrics = context.getResources().getDisplayMetrics();
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final int density = (int) (100.0f * metrics.density);
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ViewConfiguration configuration = sConfigurations.get(density);
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (configuration == null) {
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            configuration = new ViewConfiguration(context);
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            sConfigurations.put(density, configuration);
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return configuration;
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The width of the horizontal scrollbar and the height of the vertical
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         scrollbar in pixels
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledScrollBarSize()} instead.
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getScrollBarSize() {
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return SCROLL_BAR_SIZE;
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The width of the horizontal scrollbar and the height of the vertical
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         scrollbar in pixels
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledScrollBarSize() {
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mScrollbarSize;
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the length of the fading edges in pixels
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledFadingEdgeLength()} instead.
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getFadingEdgeLength() {
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return FADING_EDGE_LENGTH;
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the length of the fading edges in pixels
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledFadingEdgeLength() {
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mFadingEdgeLength;
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds of the pressed state in child
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * components.
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getPressedStateDuration() {
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return PRESSED_STATE_DURATION;
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds before a press turns into
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a long press
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getLongPressTimeout() {
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return LONG_PRESS_TIMEOUT;
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds we will wait to see if a touch event
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is a tap or a scroll. If the user does not move within this interval, it is
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * considered to be a tap.
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getTapTimeout() {
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return TAP_TIMEOUT;
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds we will wait to see if a touch event
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is a jump tap. If the user does not move within this interval, it is
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * considered to be a tap.
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getJumpTapTimeout() {
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return JUMP_TAP_TIMEOUT;
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the duration in milliseconds between the first tap's up event and
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the second tap's down event for an interaction to be considered a
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * double-tap.
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getDoubleTapTimeout() {
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return DOUBLE_TAP_TIMEOUT;
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Inset in pixels to look for touchable content when the user touches the edge of the
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         screen
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledEdgeSlop()} instead.
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getEdgeSlop() {
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return EDGE_SLOP;
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Inset in pixels to look for touchable content when the user touches the edge of the
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         screen
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledEdgeSlop() {
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mEdgeSlop;
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Distance a touch can wander before we think the user is scrolling in pixels
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledTouchSlop()} instead.
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getTouchSlop() {
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return TOUCH_SLOP;
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Distance a touch can wander before we think the user is scrolling in pixels
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledTouchSlop() {
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mTouchSlop;
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Distance between the first touch and second touch to still be
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         considered a double tap
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledDoubleTapSlop()} instead.
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @hide The only client of this should be GestureDetector, which needs this
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *       for clients that still use its deprecated constructor.
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getDoubleTapSlop() {
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return DOUBLE_TAP_SLOP;
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Distance between the first touch and second touch to still be
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         considered a double tap
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledDoubleTapSlop() {
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mDoubleTapSlop;
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Distance a touch must be outside the bounds of a window for it
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to be counted as outside the window for purposes of dismissing that
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * window.
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledWindowTouchSlop()} instead.
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getWindowTouchSlop() {
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return WINDOW_TOUCH_SLOP;
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Distance a touch must be outside the bounds of a window for it
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to be counted as outside the window for purposes of dismissing that
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * window.
3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledWindowTouchSlop() {
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mWindowTouchSlop;
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Minimum velocity to initiate a fling, as measured in pixels per second.
3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledMinimumFlingVelocity()} instead.
3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getMinimumFlingVelocity() {
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return MINIMUM_FLING_VELOCITY;
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Minimum velocity to initiate a fling, as measured in pixels per second.
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledMinimumFlingVelocity() {
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mMinimumFlingVelocity;
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3784296fc4d326447875c26a925f12b3935632f13bbRomain Guy     * @return Maximum velocity to initiate a fling, as measured in pixels per second.
3794296fc4d326447875c26a925f12b3935632f13bbRomain Guy     *
3804296fc4d326447875c26a925f12b3935632f13bbRomain Guy     * @deprecated Use {@link #getScaledMaximumFlingVelocity()} instead.
3814296fc4d326447875c26a925f12b3935632f13bbRomain Guy     */
3824296fc4d326447875c26a925f12b3935632f13bbRomain Guy    @Deprecated
3834296fc4d326447875c26a925f12b3935632f13bbRomain Guy    public static int getMaximumFlingVelocity() {
3844296fc4d326447875c26a925f12b3935632f13bbRomain Guy        return MAXIMUM_FLING_VELOCITY;
3854296fc4d326447875c26a925f12b3935632f13bbRomain Guy    }
3864296fc4d326447875c26a925f12b3935632f13bbRomain Guy
3874296fc4d326447875c26a925f12b3935632f13bbRomain Guy    /**
3884296fc4d326447875c26a925f12b3935632f13bbRomain Guy     * @return Maximum velocity to initiate a fling, as measured in pixels per second.
3894296fc4d326447875c26a925f12b3935632f13bbRomain Guy     */
3904296fc4d326447875c26a925f12b3935632f13bbRomain Guy    public int getScaledMaximumFlingVelocity() {
3914296fc4d326447875c26a925f12b3935632f13bbRomain Guy        return mMaximumFlingVelocity;
3924296fc4d326447875c26a925f12b3935632f13bbRomain Guy    }
3934296fc4d326447875c26a925f12b3935632f13bbRomain Guy
3944296fc4d326447875c26a925f12b3935632f13bbRomain Guy    /**
3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The maximum drawing cache size expressed in bytes.
3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the maximum size of View's drawing cache expressed in bytes
3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getScaledMaximumDrawingCacheSize()} instead.
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static int getMaximumDrawingCacheSize() {
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        //noinspection deprecation
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return MAXIMUM_DRAWING_CACHE_SIZE;
4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The maximum drawing cache size expressed in bytes.
4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the maximum size of View's drawing cache expressed in bytes
4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getScaledMaximumDrawingCacheSize() {
4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mMaximumDrawingCacheSize;
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The amount of time that the zoom controls should be
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * displayed on the screen expressed in milliseconds.
4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the time the zoom controls should be visible expressed
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in milliseconds.
4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static long getZoomControlsTimeout() {
4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return ZOOM_CONTROLS_TIMEOUT;
4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The amount of time a user needs to press the relevant key to bring up
4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the global actions dialog.
4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return how long a user needs to press the relevant key to bring up
4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   the global actions dialog.
4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static long getGlobalActionKeyTimeout() {
4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return GLOBAL_ACTIONS_KEY_TIMEOUT;
4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The amount of friction applied to scrolls and flings.
4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return A scalar dimensionless value representing the coefficient of
4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         friction.
4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static float getScrollFriction() {
4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return SCROLL_FRICTION;
4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
448