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 194dbd11ef441f637f32edd585248da0c914622a38Yigit Boyarimport android.os.Build; 20eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackbornimport android.view.MotionEvent; 21eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 22eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn/** 230574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing features in {@link MotionEvent} introduced 240574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * after API level 4 in a backwards compatible fashion. 25eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 26eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackbornpublic class MotionEventCompat { 27eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 28eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Interface for the full API. 29eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 30eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn interface MotionEventVersionImpl { 31eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public int findPointerIndex(MotionEvent event, int pointerId); 32eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public int getPointerId(MotionEvent event, int pointerIndex); 33eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public float getX(MotionEvent event, int pointerIndex); 34eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public float getY(MotionEvent event, int pointerIndex); 351ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell public int getPointerCount(MotionEvent event); 364dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public int getSource(MotionEvent event); 374dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar float getAxisValue(MotionEvent event, int axis); 384dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar float getAxisValue(MotionEvent event, int axis, int pointerIndex); 39eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 40eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 41eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 42eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Interface implementation that doesn't use anything about v4 APIs. 43eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 44eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn static class BaseMotionEventVersionImpl implements MotionEventVersionImpl { 45eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 46eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public int findPointerIndex(MotionEvent event, int pointerId) { 474fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell if (pointerId == 0) { 484fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell // id 0 == index 0 and vice versa. 494fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell return 0; 504fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell } 51eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return -1; 52eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 53eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 54eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public int getPointerId(MotionEvent event, int pointerIndex) { 554fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell if (pointerIndex == 0) { 564fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell // index 0 == id 0 and vice versa. 574fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell return 0; 584fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell } 594fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell throw new IndexOutOfBoundsException("Pre-Eclair does not support multiple pointers"); 60eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 61eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 62eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public float getX(MotionEvent event, int pointerIndex) { 634fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell if (pointerIndex == 0) { 644fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell return event.getX(); 654fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell } 664fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell throw new IndexOutOfBoundsException("Pre-Eclair does not support multiple pointers"); 67eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 68eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 69eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public float getY(MotionEvent event, int pointerIndex) { 704fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell if (pointerIndex == 0) { 714fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell return event.getY(); 724fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell } 734fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell throw new IndexOutOfBoundsException("Pre-Eclair does not support multiple pointers"); 74eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 751ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell @Override 761ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell public int getPointerCount(MotionEvent event) { 771ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell return 1; 781ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell } 794dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 804dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar @Override 814dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public int getSource(MotionEvent event) { 824dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar return InputDeviceCompat.SOURCE_UNKNOWN; 834dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar } 844dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 854dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar @Override 864dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public float getAxisValue(MotionEvent event, int axis) { 874dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar return 0; 884dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar } 894dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 904dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar @Override 914dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public float getAxisValue(MotionEvent event, int axis, int pointerIndex) { 924dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar return 0; 934dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar } 94eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 95eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 96eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 974dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Interface implementation for devices with at least v5 APIs. 98eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 994dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar static class EclairMotionEventVersionImpl extends BaseMotionEventVersionImpl { 100eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 101eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public int findPointerIndex(MotionEvent event, int pointerId) { 102eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return MotionEventCompatEclair.findPointerIndex(event, pointerId); 103eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 104eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 105eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public int getPointerId(MotionEvent event, int pointerIndex) { 106eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return MotionEventCompatEclair.getPointerId(event, pointerIndex); 107eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 108eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 109eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public float getX(MotionEvent event, int pointerIndex) { 110eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return MotionEventCompatEclair.getX(event, pointerIndex); 111eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 112eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn @Override 113eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public float getY(MotionEvent event, int pointerIndex) { 114eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return MotionEventCompatEclair.getY(event, pointerIndex); 115eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 1161ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell @Override 1171ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell public int getPointerCount(MotionEvent event) { 1181ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell return MotionEventCompatEclair.getPointerCount(event); 1191ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell } 120eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 121eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 122eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 1234dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Interface implementation for devices with at least v8 APIs. 1244dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 1254dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar static class GingerbreadMotionEventVersionImpl extends EclairMotionEventVersionImpl { 1264dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar @Override 1274dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public int getSource(MotionEvent event) { 1284dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar return MotionEventCompatGingerbread.getSource(event); 1294dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar } 1304dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar } 1314dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 1324dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 1334dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Interface implementation for devices with at least v12 APIs. 1344dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 1354dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar static class HoneycombMr1MotionEventVersionImpl extends GingerbreadMotionEventVersionImpl { 1364dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 1374dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar @Override 1384dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public float getAxisValue(MotionEvent event, int axis) { 1394dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar return MotionEventCompatHoneycombMr1.getAxisValue(event, axis); 1404dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar } 1414dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 1424dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar @Override 1434dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public float getAxisValue(MotionEvent event, int axis, int pointerIndex) { 1444dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar return MotionEventCompatHoneycombMr1.getAxisValue(event, axis, pointerIndex); 1454dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar } 1464dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar } 1474dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 1484dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 149eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Select the correct implementation to use for the current platform. 150eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 151eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn static final MotionEventVersionImpl IMPL; 152eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn static { 1534dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar if (Build.VERSION.SDK_INT >= 12) { 1544dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar IMPL = new HoneycombMr1MotionEventVersionImpl(); 1554dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar } else if (Build.VERSION.SDK_INT >= 9) { 1564dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar IMPL = new GingerbreadMotionEventVersionImpl(); 1574dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar } else if (Build.VERSION.SDK_INT >= 5) { 158eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn IMPL = new EclairMotionEventVersionImpl(); 159eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } else { 160eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn IMPL = new BaseMotionEventVersionImpl(); 161eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 162eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 163eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 164eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn // ------------------------------------------------------------------- 165eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 166eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 167eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Synonym for {@link MotionEvent#ACTION_MASK}. 168eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 169eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static final int ACTION_MASK = 0xff; 170eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 171eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 172eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Synonym for {@link MotionEvent#ACTION_POINTER_DOWN}. 173eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 174eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static final int ACTION_POINTER_DOWN = 5; 175eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 176eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 177eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Synonym for {@link MotionEvent#ACTION_POINTER_UP}. 178eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 179eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static final int ACTION_POINTER_UP = 6; 180eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 181eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 182eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Synonym for {@link MotionEvent#ACTION_HOVER_MOVE}. 183eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 184eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static final int ACTION_HOVER_MOVE = 7; 185eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 186eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 187eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Synonym for {@link MotionEvent#ACTION_SCROLL}. 188eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 189eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static final int ACTION_SCROLL = 8; 190eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 191eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 192eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Synonym for {@link MotionEvent#ACTION_POINTER_INDEX_MASK}. 193eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 194eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static final int ACTION_POINTER_INDEX_MASK = 0xff00; 195eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 196eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 197eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Synonym for {@link MotionEvent#ACTION_POINTER_INDEX_SHIFT}. 198eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 199eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static final int ACTION_POINTER_INDEX_SHIFT = 8; 200eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 201eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 2024dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#ACTION_HOVER_ENTER}. 203dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov */ 204dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov public static final int ACTION_HOVER_ENTER = 9; 205dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov 206dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov /** 2074dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#ACTION_HOVER_EXIT}. 208dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov */ 209dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov public static final int ACTION_HOVER_EXIT = 10; 210dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov 211dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov /** 2124dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_X}. 2134dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2144dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_X = 0; 2154dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2164dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2174dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_Y}. 2184dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2194dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_Y = 1; 2204dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2214dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2224dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_PRESSURE}. 2234dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2244dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_PRESSURE = 2; 2254dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2264dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2274dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_SIZE}. 2284dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2294dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_SIZE = 3; 2304dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2314dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2324dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_TOUCH_MAJOR}. 2334dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2344dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_TOUCH_MAJOR = 4; 2354dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2364dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2374dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_TOUCH_MINOR}. 2384dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2394dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_TOUCH_MINOR = 5; 2404dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2414dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2424dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_TOOL_MAJOR}. 2434dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2444dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_TOOL_MAJOR = 6; 2454dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2464dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2474dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_TOOL_MINOR}. 2484dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2494dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_TOOL_MINOR = 7; 2504dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2514dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2524dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_ORIENTATION}. 2534dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2544dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_ORIENTATION = 8; 2554dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2564dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2574dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_VSCROLL}. 2584dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2594dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_VSCROLL = 9; 2604dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2614dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2624dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_HSCROLL}. 2634dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2644dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_HSCROLL = 10; 2654dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2664dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2674dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_Z}. 2684dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2694dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_Z = 11; 2704dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2714dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2724dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_RX}. 2734dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2744dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_RX = 12; 2754dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2764dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2774dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_RY}. 2784dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2794dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_RY = 13; 2804dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2814dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2824dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_RZ}. 2834dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2844dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_RZ = 14; 2854dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2864dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2874dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_HAT_X}. 2884dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2894dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_HAT_X = 15; 2904dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2914dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2924dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_HAT_Y}. 2934dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2944dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_HAT_Y = 16; 2954dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 2964dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 2974dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_LTRIGGER}. 2984dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 2994dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_LTRIGGER = 17; 3004dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3014dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3024dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_RTRIGGER}. 3034dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3044dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_RTRIGGER = 18; 3054dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3064dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3074dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_THROTTLE}. 3084dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3094dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_THROTTLE = 19; 3104dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3114dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3124dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_RUDDER}. 3134dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3144dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_RUDDER = 20; 3154dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3164dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3174dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_WHEEL}. 3184dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3194dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_WHEEL = 21; 3204dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3214dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3224dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GAS}. 3234dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3244dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GAS = 22; 3254dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3264dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3274dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_BRAKE}. 3284dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3294dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_BRAKE = 23; 3304dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3314dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3324dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_DISTANCE}. 3334dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3344dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_DISTANCE = 24; 3354dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3364dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3374dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_TILT}. 3384dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3394dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_TILT = 25; 3404dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3414dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3424dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_1}. 3434dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3444dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_1 = 32; 3454dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3464dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3474dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_2}. 3484dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3494dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_2 = 33; 3504dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3514dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3524dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_3}. 3534dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3544dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_3 = 34; 3554dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3564dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3574dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_4}. 3584dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3594dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_4 = 35; 3604dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3614dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3624dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_5}. 3634dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3644dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_5 = 36; 3654dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3664dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3674dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_6}. 3684dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3694dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_6 = 37; 3704dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3714dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3724dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_7}. 3734dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3744dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_7 = 38; 3754dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3764dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3774dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_8}. 3784dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3794dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_8 = 39; 3804dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3814dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3824dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_9}. 3834dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3844dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_9 = 40; 3854dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3864dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3874dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_10}. 3884dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3894dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_10 = 41; 3904dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3914dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3924dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_11}. 3934dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3944dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_11 = 42; 3954dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 3964dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 3974dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_12}. 3984dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 3994dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_12 = 43; 4004dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 4014dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 4024dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_13}. 4034dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 4044dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_13 = 44; 4054dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 4064dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 4074dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_14}. 4084dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 4094dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_14 = 45; 4104dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 4114dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 4124dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_15}. 4134dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 4144dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_15 = 46; 4154dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 4164dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 4174dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Synonym for {@link MotionEvent#AXIS_GENERIC_16}. 4184dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 4194dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static final int AXIS_GENERIC_16 = 47; 4204dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 4214dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 422eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Call {@link MotionEvent#getAction}, returning only the {@link #ACTION_MASK} 423eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * portion. 424eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 425eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static int getActionMasked(MotionEvent event) { 426eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return event.getAction() & ACTION_MASK; 427eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 428eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 429eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 430eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Call {@link MotionEvent#getAction}, returning only the pointer index 431eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * portion 432eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 433eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static int getActionIndex(MotionEvent event) { 434eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return (event.getAction() & ACTION_POINTER_INDEX_MASK) 435eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn >> ACTION_POINTER_INDEX_SHIFT; 436eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 437eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 438eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 439eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Call {@link MotionEvent#findPointerIndex(int)}. 4400574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * If running on a pre-{@link android.os.Build.VERSION_CODES#ECLAIR} device, 441eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * does nothing and returns -1. 442eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 443eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static int findPointerIndex(MotionEvent event, int pointerId) { 444eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return IMPL.findPointerIndex(event, pointerId); 445eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 446eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 447eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 448eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Call {@link MotionEvent#getPointerId(int)}. 4490574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * If running on a pre-{@link android.os.Build.VERSION_CODES#ECLAIR} device, 450eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * {@link IndexOutOfBoundsException} is thrown. 451eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 452eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static int getPointerId(MotionEvent event, int pointerIndex) { 453eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return IMPL.getPointerId(event, pointerIndex); 454eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 455eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 456eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 457eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Call {@link MotionEvent#getX(int)}. 4580574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * If running on a pre-{@link android.os.Build.VERSION_CODES#ECLAIR} device, 459eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * {@link IndexOutOfBoundsException} is thrown. 460eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 461eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static float getX(MotionEvent event, int pointerIndex) { 462eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return IMPL.getX(event, pointerIndex); 463eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 464eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn 465eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn /** 466eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * Call {@link MotionEvent#getY(int)}. 4670574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * If running on a pre-{@link android.os.Build.VERSION_CODES#ECLAIR} device, 468eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn * {@link IndexOutOfBoundsException} is thrown. 469eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn */ 470eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn public static float getY(MotionEvent event, int pointerIndex) { 471eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn return IMPL.getY(event, pointerIndex); 472eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn } 4731ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell 4741ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell /** 4751ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell * The number of pointers of data contained in this event. Always 4761ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell * >= 1. 4771ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell */ 4781ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell public static int getPointerCount(MotionEvent event) { 4791ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell return IMPL.getPointerCount(event); 4801ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell } 4814dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 4824dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 4834dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Gets the source of the event. 4844dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * 4854dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * @return The event source or {@link InputDeviceCompat#SOURCE_UNKNOWN} if unknown. 4864dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 4874dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static int getSource(MotionEvent event) { 4884dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar return IMPL.getSource(event); 4894dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar } 4904dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 4914dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 4924dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Get axis value for the first pointer index (may be an 4934dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * arbitrary pointer identifier). 4944dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * 4954dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * @param axis The axis identifier for the axis value to retrieve. 4964dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * 4974dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * @see #AXIS_X 4984dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * @see #AXIS_Y 4994dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 5004dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static float getAxisValue(MotionEvent event, int axis) { 5014dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar return IMPL.getAxisValue(event, axis); 5024dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar } 5034dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar 5044dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar /** 5054dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * Returns the value of the requested axis for the given pointer <em>index</em> 5064dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * (use {@link #getPointerId(MotionEvent, int)} to find the pointer identifier for this index). 5074dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * 5084dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * @param axis The axis identifier for the axis value to retrieve. 5094dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 5104dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * (the first pointer that is down) to {@link #getPointerCount(MotionEvent)}-1. 5114dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * @return The value of the axis, or 0 if the axis is not available. 5124dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * 5134dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * @see #AXIS_X 5144dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar * @see #AXIS_Y 5154dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar */ 5164dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar public static float getAxisValue(MotionEvent event, int axis, int pointerIndex) { 5174dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar return IMPL.getAxisValue(event, axis, pointerIndex); 5184dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar } 519eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn} 520