Search in sources :

Example 76 with MotionEvent

use of android.view.MotionEvent in project XobotOS by xamarin.

the class KeyboardView method onTouchEventInternal.

private boolean onTouchEventInternal(MotionEvent me) {
    // Convert multi-pointer up/down events to single up/down events to 
    // deal with the typical multi-pointer behavior of two-thumb typing
    final int pointerCount = me.getPointerCount();
    final int action = me.getAction();
    boolean result = false;
    final long now = me.getEventTime();
    if (pointerCount != mOldPointerCount) {
        if (pointerCount == 1) {
            // Send a down event for the latest pointer
            MotionEvent down = MotionEvent.obtain(now, now, MotionEvent.ACTION_DOWN, me.getX(), me.getY(), me.getMetaState());
            result = onModifiedTouchEvent(down, false);
            down.recycle();
            // If it's an up action, then deliver the up as well.
            if (action == MotionEvent.ACTION_UP) {
                result = onModifiedTouchEvent(me, true);
            }
        } else {
            // Send an up event for the last pointer
            MotionEvent up = MotionEvent.obtain(now, now, MotionEvent.ACTION_UP, mOldPointerX, mOldPointerY, me.getMetaState());
            result = onModifiedTouchEvent(up, true);
            up.recycle();
        }
    } else {
        if (pointerCount == 1) {
            result = onModifiedTouchEvent(me, false);
            mOldPointerX = me.getX();
            mOldPointerY = me.getY();
        } else {
            // Don't do anything when 2 pointers are down and moving.
            result = true;
        }
    }
    mOldPointerCount = pointerCount;
    return result;
}
Also used : Paint(android.graphics.Paint) MotionEvent(android.view.MotionEvent)

Example 77 with MotionEvent

use of android.view.MotionEvent in project XobotOS by xamarin.

the class FastScroller method cancelFling.

private void cancelFling() {
    // Cancel the list fling
    MotionEvent cancelFling = MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0, 0, 0);
    mList.onTouchEvent(cancelFling);
    cancelFling.recycle();
}
Also used : MotionEvent(android.view.MotionEvent)

Example 78 with MotionEvent

use of android.view.MotionEvent in project platform_frameworks_base by android.

the class AbsListView method onTouchEvent.

@Override
public boolean onTouchEvent(MotionEvent ev) {
    if (!isEnabled()) {
        // events, it just doesn't respond to them.
        return isClickable() || isLongClickable();
    }
    if (mPositionScroller != null) {
        mPositionScroller.stop();
    }
    if (mIsDetaching || !isAttachedToWindow()) {
        // in a bogus state.
        return false;
    }
    startNestedScroll(SCROLL_AXIS_VERTICAL);
    if (mFastScroll != null && mFastScroll.onTouchEvent(ev)) {
        return true;
    }
    initVelocityTrackerIfNotExists();
    final MotionEvent vtev = MotionEvent.obtain(ev);
    final int actionMasked = ev.getActionMasked();
    if (actionMasked == MotionEvent.ACTION_DOWN) {
        mNestedYOffset = 0;
    }
    vtev.offsetLocation(0, mNestedYOffset);
    switch(actionMasked) {
        case MotionEvent.ACTION_DOWN:
            {
                onTouchDown(ev);
                break;
            }
        case MotionEvent.ACTION_MOVE:
            {
                onTouchMove(ev, vtev);
                break;
            }
        case MotionEvent.ACTION_UP:
            {
                onTouchUp(ev);
                break;
            }
        case MotionEvent.ACTION_CANCEL:
            {
                onTouchCancel();
                break;
            }
        case MotionEvent.ACTION_POINTER_UP:
            {
                onSecondaryPointerUp(ev);
                final int x = mMotionX;
                final int y = mMotionY;
                final int motionPosition = pointToPosition(x, y);
                if (motionPosition >= 0) {
                    // Remember where the motion event started
                    final View child = getChildAt(motionPosition - mFirstPosition);
                    mMotionViewOriginalTop = child.getTop();
                    mMotionPosition = motionPosition;
                }
                mLastY = y;
                break;
            }
        case MotionEvent.ACTION_POINTER_DOWN:
            {
                // New pointers take over dragging duties
                final int index = ev.getActionIndex();
                final int id = ev.getPointerId(index);
                final int x = (int) ev.getX(index);
                final int y = (int) ev.getY(index);
                mMotionCorrection = 0;
                mActivePointerId = id;
                mMotionX = x;
                mMotionY = y;
                final int motionPosition = pointToPosition(x, y);
                if (motionPosition >= 0) {
                    // Remember where the motion event started
                    final View child = getChildAt(motionPosition - mFirstPosition);
                    mMotionViewOriginalTop = child.getTop();
                    mMotionPosition = motionPosition;
                }
                mLastY = y;
                break;
            }
    }
    if (mVelocityTracker != null) {
        mVelocityTracker.addMovement(vtev);
    }
    vtev.recycle();
    return true;
}
Also used : View(android.view.View) MotionEvent(android.view.MotionEvent)

Example 79 with MotionEvent

use of android.view.MotionEvent in project platform_frameworks_base by android.

the class ZoomButtonsController method onTouch.

/**
     * @hide The ZoomButtonsController implements the OnTouchListener, but this
     *       does not need to be shown in its public API.
     */
public boolean onTouch(View v, MotionEvent event) {
    int action = event.getAction();
    if (event.getPointerCount() > 1) {
        // ZoomButtonsController doesn't handle mutitouch. Give up control.
        return false;
    }
    if (mReleaseTouchListenerOnUp) {
        // The controls were dismissed but we need to throw away all events until the up
        if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
            mOwnerView.setOnTouchListener(null);
            setTouchTargetView(null);
            mReleaseTouchListenerOnUp = false;
        }
        // Eat this event
        return true;
    }
    dismissControlsDelayed(ZOOM_CONTROLS_TIMEOUT);
    View targetView = mTouchTargetView;
    switch(action) {
        case MotionEvent.ACTION_DOWN:
            targetView = findViewForTouch((int) event.getRawX(), (int) event.getRawY());
            setTouchTargetView(targetView);
            break;
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_CANCEL:
            setTouchTargetView(null);
            break;
    }
    if (targetView != null) {
        // The upperleft corner of the target view in raw coordinates
        int targetViewRawX = mContainerRawLocation[0] + mTouchTargetWindowLocation[0];
        int targetViewRawY = mContainerRawLocation[1] + mTouchTargetWindowLocation[1];
        MotionEvent containerEvent = MotionEvent.obtain(event);
        // Convert the motion event into the target view's coordinates (from
        // owner view's coordinates)
        containerEvent.offsetLocation(mOwnerViewRawLocation[0] - targetViewRawX, mOwnerViewRawLocation[1] - targetViewRawY);
        /* Disallow negative coordinates (which can occur due to
             * ZOOM_CONTROLS_TOUCH_PADDING) */
        // These are floats because we need to potentially offset away this exact amount
        float containerX = containerEvent.getX();
        float containerY = containerEvent.getY();
        if (containerX < 0 && containerX > -ZOOM_CONTROLS_TOUCH_PADDING) {
            containerEvent.offsetLocation(-containerX, 0);
        }
        if (containerY < 0 && containerY > -ZOOM_CONTROLS_TOUCH_PADDING) {
            containerEvent.offsetLocation(0, -containerY);
        }
        boolean retValue = targetView.dispatchTouchEvent(containerEvent);
        containerEvent.recycle();
        return retValue;
    } else {
        return false;
    }
}
Also used : View(android.view.View) MotionEvent(android.view.MotionEvent)

Example 80 with MotionEvent

use of android.view.MotionEvent in project platform_frameworks_base by android.

the class Switch method cancelSuperTouch.

private void cancelSuperTouch(MotionEvent ev) {
    MotionEvent cancel = MotionEvent.obtain(ev);
    cancel.setAction(MotionEvent.ACTION_CANCEL);
    super.onTouchEvent(cancel);
    cancel.recycle();
}
Also used : MotionEvent(android.view.MotionEvent)

Aggregations

MotionEvent (android.view.MotionEvent)717 View (android.view.View)255 TextView (android.widget.TextView)113 ImageView (android.widget.ImageView)91 Point (android.graphics.Point)63 OnTouchListener (android.view.View.OnTouchListener)48 GestureDetector (android.view.GestureDetector)47 Paint (android.graphics.Paint)40 ViewGroup (android.view.ViewGroup)36 Test (org.junit.Test)35 AdapterView (android.widget.AdapterView)34 RecyclerView (android.support.v7.widget.RecyclerView)33 ListView (android.widget.ListView)33 SuppressLint (android.annotation.SuppressLint)31 Intent (android.content.Intent)30 Instrumentation (android.app.Instrumentation)27 AbsListView (android.widget.AbsListView)27 OnClickListener (android.view.View.OnClickListener)24 Rect (android.graphics.Rect)22 Handler (android.os.Handler)20