org.robolectric.shadows.ShadowViewConfiguration Maven / Gradle / Ivy
/*
* Portions of this code came from frameworks/base/core/java/android/view/ViewConfiguration.java,
* which contains the following license text:
*
* Copyright (C) 2006 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.robolectric.shadows;
import android.content.Context;
import android.util.DisplayMetrics;
import android.view.ViewConfiguration;
import org.robolectric.Shadows;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.RealObject;
import org.robolectric.internal.Shadow;
/**
* Shadow for {@link android.view.ViewConfiguration}.
*/
@SuppressWarnings({"UnusedDeclaration"})
@Implements(ViewConfiguration.class)
public class ShadowViewConfiguration {
private static final int SCROLL_BAR_SIZE = 10;
private static final int SCROLL_BAR_FADE_DURATION = 250;
private static final int SCROLL_BAR_DEFAULT_DELAY = 300;
private static final int FADING_EDGE_LENGTH = 12;
private static final int PRESSED_STATE_DURATION = 125;
private static final int LONG_PRESS_TIMEOUT = 500;
private static final int GLOBAL_ACTIONS_KEY_TIMEOUT = 500;
private static final int TAP_TIMEOUT = 115;
private static final int JUMP_TAP_TIMEOUT = 500;
private static final int DOUBLE_TAP_TIMEOUT = 300;
private static final int ZOOM_CONTROLS_TIMEOUT = 3000;
private static final int EDGE_SLOP = 12;
private static final int TOUCH_SLOP = 16;
private static final int PAGING_TOUCH_SLOP = TOUCH_SLOP * 2;
private static final int DOUBLE_TAP_SLOP = 100;
private static final int WINDOW_TOUCH_SLOP = 16;
private static final int MINIMUM_FLING_VELOCITY = 50;
private static final int MAXIMUM_FLING_VELOCITY = 4000;
private static final int MAXIMUM_DRAWING_CACHE_SIZE = 320 * 480 * 4;
private static final int OVERSCROLL_DISTANCE = 0;
private static final int OVERFLING_DISTANCE = 4;
private static final float SCROLL_FRICTION = 0.015f;
private int edgeSlop;
private int fadingEdgeLength;
private int minimumFlingVelocity;
private int maximumFlingVelocity;
private int scrollbarSize;
private int touchSlop;
private int pagingTouchSlop;
private int doubleTapSlop;
private int windowTouchSlop;
private boolean hasPermanentMenuKey = false;
@RealObject
private ViewConfiguration realViewConfiguration;
private void setup(Context context) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
float density = metrics.density;
edgeSlop = (int) (density * EDGE_SLOP + 0.5f);
fadingEdgeLength = (int) (density * FADING_EDGE_LENGTH + 0.5f);
minimumFlingVelocity = (int) (density * MINIMUM_FLING_VELOCITY + 0.5f);
maximumFlingVelocity = (int) (density * MAXIMUM_FLING_VELOCITY + 0.5f);
scrollbarSize = (int) (density * SCROLL_BAR_SIZE + 0.5f);
touchSlop = (int) (density * TOUCH_SLOP + 0.5f);
pagingTouchSlop = (int) (density * PAGING_TOUCH_SLOP + 0.5f);
doubleTapSlop = (int) (density * DOUBLE_TAP_SLOP + 0.5f);
windowTouchSlop = (int) (density * WINDOW_TOUCH_SLOP + 0.5f);
}
@Implementation
public static ViewConfiguration get(Context context) {
ViewConfiguration viewConfiguration = Shadow.newInstanceOf(ViewConfiguration.class);
Shadows.shadowOf(viewConfiguration).setup(context);
return viewConfiguration;
}
@Implementation
public static int getScrollBarSize() {
return SCROLL_BAR_SIZE;
}
@Implementation
public int getScaledScrollBarSize() {
return scrollbarSize;
}
@Implementation
public static int getScrollBarFadeDuration() {
return SCROLL_BAR_FADE_DURATION;
}
@Implementation
public static int getScrollDefaultDelay() {
return SCROLL_BAR_DEFAULT_DELAY;
}
@Implementation
public static int getFadingEdgeLength() {
return FADING_EDGE_LENGTH;
}
@Implementation
public int getScaledFadingEdgeLength() {
return fadingEdgeLength;
}
@Implementation
public static int getPressedStateDuration() {
return PRESSED_STATE_DURATION;
}
@Implementation
public static int getLongPressTimeout() {
return LONG_PRESS_TIMEOUT;
}
@Implementation
public static int getTapTimeout() {
return TAP_TIMEOUT;
}
@Implementation
public static int getJumpTapTimeout() {
return JUMP_TAP_TIMEOUT;
}
@Implementation
public static int getDoubleTapTimeout() {
return DOUBLE_TAP_TIMEOUT;
}
@Implementation
public static int getEdgeSlop() {
return EDGE_SLOP;
}
@Implementation
public int getScaledEdgeSlop() {
return edgeSlop;
}
@Implementation
public static int getTouchSlop() {
return TOUCH_SLOP;
}
@Implementation
public int getScaledTouchSlop() {
return touchSlop;
}
@Implementation
public int getScaledPagingTouchSlop() {
return pagingTouchSlop;
}
@Implementation
public int getScaledDoubleTapSlop() {
return doubleTapSlop;
}
@Implementation
public static int getWindowTouchSlop() {
return WINDOW_TOUCH_SLOP;
}
@Implementation
public int getScaledWindowTouchSlop() {
return windowTouchSlop;
}
@Implementation
public static int getMinimumFlingVelocity() {
return MINIMUM_FLING_VELOCITY;
}
@Implementation
public int getScaledMinimumFlingVelocity() {
return minimumFlingVelocity;
}
@Implementation
public static int getMaximumFlingVelocity() {
return MAXIMUM_FLING_VELOCITY;
}
@Implementation
public int getScaledMaximumFlingVelocity() {
return maximumFlingVelocity;
}
@Implementation
public static int getMaximumDrawingCacheSize() {
return MAXIMUM_DRAWING_CACHE_SIZE;
}
@Implementation
public static long getZoomControlsTimeout() {
return ZOOM_CONTROLS_TIMEOUT;
}
@Implementation
public static long getGlobalActionKeyTimeout() {
return GLOBAL_ACTIONS_KEY_TIMEOUT;
}
@Implementation
public static float getScrollFriction() {
return SCROLL_FRICTION;
}
@Implementation
public boolean hasPermanentMenuKey() {
return hasPermanentMenuKey;
}
public void setHasPermanentMenuKey(boolean value) {
this.hasPermanentMenuKey = value;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy