MotionEventCompat.java revision 2196f53d080334b4e5bb5c25fba1e40578f3588b
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 */
26c5847d13e40f5d52459f5c0dab32dc08f1a9a683Chris Banespublic final 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);
392196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev        int getButtonState(MotionEvent event);
40eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    }
41eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
42eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
43eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Interface implementation that doesn't use anything about v4 APIs.
44eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
45eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    static class BaseMotionEventVersionImpl implements MotionEventVersionImpl {
46eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        @Override
47eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        public int findPointerIndex(MotionEvent event, int pointerId) {
484fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell            if (pointerId == 0) {
494fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell                // id 0 == index 0 and vice versa.
504fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell                return 0;
514fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell            }
52eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn            return -1;
53eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        }
54eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        @Override
55eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        public int getPointerId(MotionEvent event, int pointerIndex) {
564fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell            if (pointerIndex == 0) {
574fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell                // index 0 == id 0 and vice versa.
584fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell                return 0;
594fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell            }
604fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell            throw new IndexOutOfBoundsException("Pre-Eclair does not support multiple pointers");
61eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        }
62eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        @Override
63eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        public float getX(MotionEvent event, int pointerIndex) {
644fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell            if (pointerIndex == 0) {
654fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell                return event.getX();
664fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell            }
674fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell            throw new IndexOutOfBoundsException("Pre-Eclair does not support multiple pointers");
68eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        }
69eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        @Override
70eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        public float getY(MotionEvent event, int pointerIndex) {
714fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell            if (pointerIndex == 0) {
724fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell                return event.getY();
734fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell            }
744fb2aa8fb492e12ed48daa4f025e0bfac00a2514Adam Powell            throw new IndexOutOfBoundsException("Pre-Eclair does not support multiple pointers");
75eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        }
761ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell        @Override
771ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell        public int getPointerCount(MotionEvent event) {
781ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell            return 1;
791ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell        }
804dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
814dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        @Override
824dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        public int getSource(MotionEvent event) {
834dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar            return InputDeviceCompat.SOURCE_UNKNOWN;
844dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        }
854dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
864dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        @Override
874dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        public float getAxisValue(MotionEvent event, int axis) {
884dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar            return 0;
894dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        }
904dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
914dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        @Override
924dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        public float getAxisValue(MotionEvent event, int axis, int pointerIndex) {
934dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar            return 0;
944dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        }
952196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev
962196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev        @Override
972196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev        public int getButtonState(MotionEvent event) {
982196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev            return 0;
992196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev        }
100eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    }
101eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
102eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
1034dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Interface implementation for devices with at least v5 APIs.
104eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
1054dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    static class EclairMotionEventVersionImpl extends BaseMotionEventVersionImpl {
106eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        @Override
107eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        public int findPointerIndex(MotionEvent event, int pointerId) {
108eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn            return MotionEventCompatEclair.findPointerIndex(event, pointerId);
109eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        }
110eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        @Override
111eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        public int getPointerId(MotionEvent event, int pointerIndex) {
112eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn            return MotionEventCompatEclair.getPointerId(event, pointerIndex);
113eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        }
114eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        @Override
115eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        public float getX(MotionEvent event, int pointerIndex) {
116eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn            return MotionEventCompatEclair.getX(event, pointerIndex);
117eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        }
118eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        @Override
119eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        public float getY(MotionEvent event, int pointerIndex) {
120eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn            return MotionEventCompatEclair.getY(event, pointerIndex);
121eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        }
1221ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell        @Override
1231ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell        public int getPointerCount(MotionEvent event) {
1241ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell            return MotionEventCompatEclair.getPointerCount(event);
1251ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell        }
126eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    }
127eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
128eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
1294dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Interface implementation for devices with at least v8 APIs.
1304dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
1314dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    static class GingerbreadMotionEventVersionImpl extends EclairMotionEventVersionImpl {
1324dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        @Override
1334dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        public int getSource(MotionEvent event) {
1344dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar            return MotionEventCompatGingerbread.getSource(event);
1354dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        }
1364dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    }
1374dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
1384dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
1394dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Interface implementation for devices with at least v12 APIs.
1404dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
1414dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    static class HoneycombMr1MotionEventVersionImpl extends GingerbreadMotionEventVersionImpl {
1424dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
1434dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        @Override
1444dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        public float getAxisValue(MotionEvent event, int axis) {
1454dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar            return MotionEventCompatHoneycombMr1.getAxisValue(event, axis);
1464dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        }
1474dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
1484dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        @Override
1494dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        public float getAxisValue(MotionEvent event, int axis, int pointerIndex) {
1504dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar            return MotionEventCompatHoneycombMr1.getAxisValue(event, axis, pointerIndex);
1514dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        }
1524dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    }
1534dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
1542196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev
1552196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev    /**
1562196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev     * Interface implementation for devices with at least v14 APIs.
1572196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev     */
1582196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev    private static class ICSMotionEventVersionImpl extends GingerbreadMotionEventVersionImpl {
1592196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev        @Override
1602196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev        public int getButtonState(MotionEvent event) {
1612196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev            return MotionEventCompatICS.getButtonState(event);
1622196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev        }
1632196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev    }
1642196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev
1654dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
166eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Select the correct implementation to use for the current platform.
167eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
168eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    static final MotionEventVersionImpl IMPL;
169eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    static {
1702196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev        if (Build.VERSION.SDK_INT >= 14) {
1712196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev            IMPL = new ICSMotionEventVersionImpl();
1722196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev        } else if (Build.VERSION.SDK_INT >= 12) {
1734dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar            IMPL = new HoneycombMr1MotionEventVersionImpl();
1744dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        } else if (Build.VERSION.SDK_INT >= 9) {
1754dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar            IMPL = new GingerbreadMotionEventVersionImpl();
1764dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        } else if (Build.VERSION.SDK_INT >= 5) {
177eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn            IMPL = new EclairMotionEventVersionImpl();
178eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        } else {
179eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn            IMPL = new BaseMotionEventVersionImpl();
180eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        }
181eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    }
182eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
183eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    // -------------------------------------------------------------------
184eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
185eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
186eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Synonym for {@link MotionEvent#ACTION_MASK}.
187eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
188eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    public static final int ACTION_MASK = 0xff;
189eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
190eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
191eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Synonym for {@link MotionEvent#ACTION_POINTER_DOWN}.
192eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
193eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    public static final int ACTION_POINTER_DOWN = 5;
194eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
195eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
196eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Synonym for {@link MotionEvent#ACTION_POINTER_UP}.
197eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
198eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    public static final int ACTION_POINTER_UP = 6;
199eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
200eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
201eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Synonym for {@link MotionEvent#ACTION_HOVER_MOVE}.
202eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
203eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    public static final int ACTION_HOVER_MOVE = 7;
204eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
205eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
206eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Synonym for {@link MotionEvent#ACTION_SCROLL}.
207eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
208eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    public static final int ACTION_SCROLL = 8;
209eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
210eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
211eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Synonym for {@link MotionEvent#ACTION_POINTER_INDEX_MASK}.
212eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
213eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    public static final int ACTION_POINTER_INDEX_MASK  = 0xff00;
214eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
215eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
216eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Synonym for {@link MotionEvent#ACTION_POINTER_INDEX_SHIFT}.
217eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
218eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    public static final int ACTION_POINTER_INDEX_SHIFT = 8;
219eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
220eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
2214dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#ACTION_HOVER_ENTER}.
222dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov     */
223dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov    public static final int ACTION_HOVER_ENTER = 9;
224dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov
225dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov    /**
2264dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#ACTION_HOVER_EXIT}.
227dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov     */
228dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov    public static final int ACTION_HOVER_EXIT = 10;
229dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov
230dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov    /**
2314dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_X}.
2324dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2334dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_X = 0;
2344dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
2354dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
2364dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_Y}.
2374dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2384dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_Y = 1;
2394dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
2404dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
2414dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_PRESSURE}.
2424dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2434dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_PRESSURE = 2;
2444dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
2454dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
2464dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_SIZE}.
2474dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2484dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_SIZE = 3;
2494dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
2504dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
2514dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_TOUCH_MAJOR}.
2524dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2534dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_TOUCH_MAJOR = 4;
2544dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
2554dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
2564dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_TOUCH_MINOR}.
2574dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2584dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_TOUCH_MINOR = 5;
2594dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
2604dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
2614dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_TOOL_MAJOR}.
2624dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2634dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_TOOL_MAJOR = 6;
2644dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
2654dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
2664dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_TOOL_MINOR}.
2674dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2684dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_TOOL_MINOR = 7;
2694dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
2704dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
2714dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_ORIENTATION}.
2724dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2734dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_ORIENTATION = 8;
2744dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
2754dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
2764dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_VSCROLL}.
2774dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2784dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_VSCROLL = 9;
2794dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
2804dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
2814dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_HSCROLL}.
2824dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2834dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_HSCROLL = 10;
2844dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
2854dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
2864dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_Z}.
2874dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2884dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_Z = 11;
2894dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
2904dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
2914dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_RX}.
2924dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2934dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_RX = 12;
2944dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
2954dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
2964dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_RY}.
2974dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
2984dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_RY = 13;
2994dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3004dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3014dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_RZ}.
3024dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3034dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_RZ = 14;
3044dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3054dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3064dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_HAT_X}.
3074dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3084dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_HAT_X = 15;
3094dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3104dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3114dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_HAT_Y}.
3124dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3134dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_HAT_Y = 16;
3144dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3154dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3164dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_LTRIGGER}.
3174dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3184dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_LTRIGGER = 17;
3194dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3204dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3214dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_RTRIGGER}.
3224dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3234dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_RTRIGGER = 18;
3244dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3254dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3264dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_THROTTLE}.
3274dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3284dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_THROTTLE = 19;
3294dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3304dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3314dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_RUDDER}.
3324dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3334dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_RUDDER = 20;
3344dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3354dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3364dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_WHEEL}.
3374dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3384dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_WHEEL = 21;
3394dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3404dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3414dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GAS}.
3424dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3434dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GAS = 22;
3444dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3454dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3464dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_BRAKE}.
3474dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3484dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_BRAKE = 23;
3494dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3504dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3514dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_DISTANCE}.
3524dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3534dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_DISTANCE = 24;
3544dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3554dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3564dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_TILT}.
3574dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3584dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_TILT = 25;
3594dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3604dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3614dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_1}.
3624dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3634dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_1 = 32;
3644dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3654dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3664dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_2}.
3674dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3684dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_2 = 33;
3694dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3704dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3714dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_3}.
3724dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3734dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_3 = 34;
3744dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3754dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3764dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_4}.
3774dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3784dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_4 = 35;
3794dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3804dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3814dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_5}.
3824dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3834dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_5 = 36;
3844dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3854dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3864dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_6}.
3874dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3884dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_6 = 37;
3894dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3904dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3914dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_7}.
3924dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3934dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_7 = 38;
3944dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
3954dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
3964dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_8}.
3974dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
3984dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_8 = 39;
3994dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
4004dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
4014dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_9}.
4024dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
4034dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_9 = 40;
4044dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
4054dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
4064dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_10}.
4074dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
4084dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_10 = 41;
4094dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
4104dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
4114dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_11}.
4124dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
4134dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_11 = 42;
4144dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
4154dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
4164dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_12}.
4174dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
4184dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_12 = 43;
4194dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
4204dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
4214dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_13}.
4224dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
4234dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_13 = 44;
4244dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
4254dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
4264dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_14}.
4274dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
4284dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_14 = 45;
4294dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
4304dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
4314dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_15}.
4324dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
4334dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_15 = 46;
4344dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
4354dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
4364dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Synonym for {@link MotionEvent#AXIS_GENERIC_16}.
4374dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
4384dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static final int AXIS_GENERIC_16 = 47;
4394dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
4404dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
4412196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev     * Synonym for {@link MotionEvent#BUTTON_PRIMARY}.
4422196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev     */
4432196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev    public static final int BUTTON_PRIMARY = 1;
4442196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev
4452196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev    /**
446eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Call {@link MotionEvent#getAction}, returning only the {@link #ACTION_MASK}
447eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * portion.
448eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
449eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    public static int getActionMasked(MotionEvent event) {
450eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        return event.getAction() & ACTION_MASK;
451eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    }
452eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
453eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
454eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Call {@link MotionEvent#getAction}, returning only the pointer index
455eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * portion
456eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
457eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    public static int getActionIndex(MotionEvent event) {
458eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        return (event.getAction() & ACTION_POINTER_INDEX_MASK)
459eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn                >> ACTION_POINTER_INDEX_SHIFT;
460eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    }
461eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
462eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
463eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Call {@link MotionEvent#findPointerIndex(int)}.
4640574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov     * If running on a pre-{@link android.os.Build.VERSION_CODES#ECLAIR} device,
465eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * does nothing and returns -1.
466eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
467eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    public static int findPointerIndex(MotionEvent event, int pointerId) {
468eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        return IMPL.findPointerIndex(event, pointerId);
469eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    }
470eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
471eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
472eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Call {@link MotionEvent#getPointerId(int)}.
4730574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov     * If running on a pre-{@link android.os.Build.VERSION_CODES#ECLAIR} device,
474eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * {@link IndexOutOfBoundsException} is thrown.
475eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
476eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    public static int getPointerId(MotionEvent event, int pointerIndex) {
477eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        return IMPL.getPointerId(event, pointerIndex);
478eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    }
479eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
480eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
481eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Call {@link MotionEvent#getX(int)}.
4820574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov     * If running on a pre-{@link android.os.Build.VERSION_CODES#ECLAIR} device,
483eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * {@link IndexOutOfBoundsException} is thrown.
484eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
485eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    public static float getX(MotionEvent event, int pointerIndex) {
486eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        return IMPL.getX(event, pointerIndex);
487eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    }
488eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn
489eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    /**
490eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * Call {@link MotionEvent#getY(int)}.
4910574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov     * If running on a pre-{@link android.os.Build.VERSION_CODES#ECLAIR} device,
492eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     * {@link IndexOutOfBoundsException} is thrown.
493eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn     */
494eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    public static float getY(MotionEvent event, int pointerIndex) {
495eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn        return IMPL.getY(event, pointerIndex);
496eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn    }
4971ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell
4981ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell    /**
4991ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell     * The number of pointers of data contained in this event.  Always
5001ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell     * >= 1.
5011ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell     */
5021ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell    public static int getPointerCount(MotionEvent event) {
5031ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell        return IMPL.getPointerCount(event);
5041ce805e30800bf2852fa5421b7277a18e089ee31Adam Powell    }
5054dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
5064dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
5074dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Gets the source of the event.
5084dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     *
5094dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * @return The event source or {@link InputDeviceCompat#SOURCE_UNKNOWN} if unknown.
5104dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
5114dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static int getSource(MotionEvent event) {
5124dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        return IMPL.getSource(event);
5134dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    }
5144dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
5154dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
5162196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev     * Determines whether the event is from the given source.
5172196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev     * @param source The input source to check against.
5182196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev     * @return Whether the event is from the given source.
5192196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev     */
5202196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev    public static boolean isFromSource(MotionEvent event, int source) {
5212196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev        return (getSource(event) & source) == source;
5222196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev    }
5232196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev
5242196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev    /**
5254dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Get axis value for the first pointer index (may be an
5264dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * arbitrary pointer identifier).
5274dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     *
5284dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * @param axis The axis identifier for the axis value to retrieve.
5294dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     *
5304dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * @see #AXIS_X
5314dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * @see #AXIS_Y
5324dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
5334dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static float getAxisValue(MotionEvent event, int axis) {
5344dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        return IMPL.getAxisValue(event, axis);
5354dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    }
5364dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar
5374dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    /**
5384dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * Returns the value of the requested axis for the given pointer <em>index</em>
5394dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * (use {@link #getPointerId(MotionEvent, int)} to find the pointer identifier for this index).
5404dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     *
5414dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * @param axis The axis identifier for the axis value to retrieve.
5424dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * @param pointerIndex Raw index of pointer to retrieve.  Value may be from 0
5434dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * (the first pointer that is down) to {@link #getPointerCount(MotionEvent)}-1.
5444dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * @return The value of the axis, or 0 if the axis is not available.
5454dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     *
5464dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * @see #AXIS_X
5474dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     * @see #AXIS_Y
5484dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar     */
5494dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    public static float getAxisValue(MotionEvent event, int axis, int pointerIndex) {
5504dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar        return IMPL.getAxisValue(event, axis, pointerIndex);
5514dbd11ef441f637f32edd585248da0c914622a38Yigit Boyar    }
552c5847d13e40f5d52459f5c0dab32dc08f1a9a683Chris Banes
5532196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev    /**
5542196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev     *
5552196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev     * @param event
5562196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev     * @return
5572196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev     */
5582196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev    public static int getButtonState(MotionEvent event) {
5592196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev        return IMPL.getButtonState(event);
5602196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev    }
5612196f53d080334b4e5bb5c25fba1e40578f3588bVladislav Kaznacheev
562c5847d13e40f5d52459f5c0dab32dc08f1a9a683Chris Banes    private MotionEventCompat() {}
563eedc67283a5a49dce86c625e54596dfdea9465a7Dianne Hackborn}
564