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.VelocityTracker; 20eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 21eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn/** 220574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing features in {@link VelocityTracker} 230574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * introduced after API level 4 in a backwards compatible fashion. 24eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 25eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackbornpublic class VelocityTrackerCompat { 26eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 27eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Interface for the full API. 28eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 29eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn interface VelocityTrackerVersionImpl { 30eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public float getXVelocity(VelocityTracker tracker, int pointerId); 31eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public float getYVelocity(VelocityTracker tracker, int pointerId); 32eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 33eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 34eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 35eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Interface implementation that doesn't use anything about v4 APIs. 36eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 37eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn static class BaseVelocityTrackerVersionImpl implements VelocityTrackerVersionImpl { 38eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 39eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public float getXVelocity(VelocityTracker tracker, int pointerId) { 40eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return tracker.getXVelocity(); 41eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 42eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 43eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public float getYVelocity(VelocityTracker tracker, int pointerId) { 44eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return tracker.getYVelocity(); 45eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 46eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 47eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 48eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 49eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Interface implementation for devices with at least v11 APIs. 50eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 51eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn static class HoneycombVelocityTrackerVersionImpl implements VelocityTrackerVersionImpl { 52eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 53eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public float getXVelocity(VelocityTracker tracker, int pointerId) { 54eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return VelocityTrackerCompatHoneycomb.getXVelocity(tracker, pointerId); 55eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 56eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 57eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public float getYVelocity(VelocityTracker tracker, int pointerId) { 58eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return VelocityTrackerCompatHoneycomb.getYVelocity(tracker, pointerId); 59eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 60eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 61eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 62eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 63eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Select the correct implementation to use for the current platform. 64eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 65eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn static final VelocityTrackerVersionImpl IMPL; 66eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn static { 67eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn if (android.os.Build.VERSION.SDK_INT >= 11) { 68eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn IMPL = new HoneycombVelocityTrackerVersionImpl(); 69eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } else { 70eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn IMPL = new BaseVelocityTrackerVersionImpl(); 71eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 72eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 73eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 74eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn // ------------------------------------------------------------------- 75eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 76eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 77eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Call {@link VelocityTracker#getXVelocity(int)}. 780574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * If running on a pre-{@link android.os.Build.VERSION_CODES#HONEYCOMB} device, 79eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * returns {@link VelocityTracker#getXVelocity()}. 80eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 81eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static float getXVelocity(VelocityTracker tracker, int pointerId) { 82eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return IMPL.getXVelocity(tracker, pointerId); 83eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 84eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 85eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 86eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Call {@link VelocityTracker#getYVelocity(int)}. 870574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * If running on a pre-{@link android.os.Build.VERSION_CODES#HONEYCOMB} device, 88eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * returns {@link VelocityTracker#getYVelocity()}. 89eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 90eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static float getYVelocity(VelocityTracker tracker, int pointerId) { 91eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return IMPL.getYVelocity(tracker, pointerId); 92eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 93eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn} 94