1eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn/* 2eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Copyright (C) 2011 The Android Open Source Project 3eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * 4eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 5eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * you may not use this file except in compliance with the License. 6eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * You may obtain a copy of the License at 7eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * 8eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 9eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * 10eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Unless required by applicable law or agreed to in writing, software 11eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 12eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * See the License for the specific language governing permissions and 14eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * limitations under the License. 15eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 16eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 17eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackbornpackage android.support.v4.view; 18eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 19eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackbornimport android.view.ViewConfiguration; 20eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 21eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn/** 220574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing features in {@link ViewConfiguration} 230574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * introduced after API level 4 in a backwards compatible fashion. 24eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 25eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackbornpublic class ViewConfigurationCompat { 26eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 27eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Interface for the full API. 28eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 29eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn interface ViewConfigurationVersionImpl { 30eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public int getScaledPagingTouchSlop(ViewConfiguration config); 31eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 32eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 33eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 34eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Interface implementation that doesn't use anything about v4 APIs. 35eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 36eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn static class BaseViewConfigurationVersionImpl implements ViewConfigurationVersionImpl { 37eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 38eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public int getScaledPagingTouchSlop(ViewConfiguration config) { 39eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return config.getScaledTouchSlop(); 40eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 41eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 42eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 43eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 44eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Interface implementation for devices with at least v11 APIs. 45eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 46eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn static class FroyoViewConfigurationVersionImpl implements ViewConfigurationVersionImpl { 47eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 48eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public int getScaledPagingTouchSlop(ViewConfiguration config) { 49eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return ViewConfigurationCompatFroyo.getScaledPagingTouchSlop(config); 50eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 51eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 52eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 53eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 54eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Select the correct implementation to use for the current platform. 55eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 56eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn static final ViewConfigurationVersionImpl IMPL; 57eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn static { 58eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn if (android.os.Build.VERSION.SDK_INT >= 11) { 59eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn IMPL = new FroyoViewConfigurationVersionImpl(); 60eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } else { 61eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn IMPL = new BaseViewConfigurationVersionImpl(); 62eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 63eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 64eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 65eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn // ------------------------------------------------------------------- 66eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 67eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 68eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Call {@link ViewConfiguration#getScaledPagingTouchSlop()}. 690574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * If running on a pre-{@link android.os.Build.VERSION_CODES#FROYO} device, 70eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * returns {@link ViewConfiguration#getScaledTouchSlop()}. 71eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 72eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static int getScaledPagingTouchSlop(ViewConfiguration config) { 73eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return IMPL.getScaledPagingTouchSlop(config); 74eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 75eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn} 76