Example usage for android.view MotionEvent obtain

List of usage examples for android.view MotionEvent obtain

Introduction

In this page you can find the example usage for android.view MotionEvent obtain.

Prototype

static public MotionEvent obtain(long downTime, long eventTime, int action, float x, float y, int metaState) 

Source Link

Document

Create a new MotionEvent, filling in a subset of the basic motion values.

Usage

From source file:com.marshalchen.common.uimodule.superlistview.SwipeDismissListViewTouchListener.java

private void performDismiss(final View dismissView, final int dismissPosition) {
    // Animate the dismissed list item to zero-height and fire the dismiss callback when
    // all dismissed list item animations have completed. This triggers layout on each animation
    // frame; in the future we may want to do something smarter and more performant.

    final ViewGroup.LayoutParams lp = dismissView.getLayoutParams();
    final int originalHeight = dismissView.getHeight();

    ValueAnimator animator = ValueAnimator.ofInt(originalHeight, 1).setDuration(mAnimationTime);

    animator.addListener(new AnimatorListenerAdapter() {
        @Override/*from   w  w  w  .  ja va 2 s  .  c om*/
        public void onAnimationEnd(Animator animation) {
            --mDismissAnimationRefCount;
            if (mDismissAnimationRefCount == 0) {
                // No active animations, process all pending dismisses.
                // Sort by descending position
                Collections.sort(mPendingDismisses);

                int[] dismissPositions = new int[mPendingDismisses.size()];
                for (int i = mPendingDismisses.size() - 1; i >= 0; i--) {
                    dismissPositions[i] = mPendingDismisses.get(i).position;
                }
                mCallbacks.onDismiss(mListView, dismissPositions);

                // Reset mDownPosition to avoid MotionEvent.ACTION_UP trying to start a dismiss
                // animation with a stale position
                mDownPosition = ListView.INVALID_POSITION;

                ViewGroup.LayoutParams lp;
                for (PendingDismissData pendingDismiss : mPendingDismisses) {
                    // Reset view presentation
                    AnimatorProxy.wrap(pendingDismiss.view).setAlpha(1f);
                    AnimatorProxy.wrap(pendingDismiss.view).setTranslationX(0);
                    lp = pendingDismiss.view.getLayoutParams();
                    lp.height = originalHeight;
                    pendingDismiss.view.setLayoutParams(lp);
                }

                // Send a cancel event
                long time = SystemClock.uptimeMillis();
                MotionEvent cancelEvent = MotionEvent.obtain(time, time, MotionEvent.ACTION_CANCEL, 0, 0, 0);
                mListView.dispatchTouchEvent(cancelEvent);

                mPendingDismisses.clear();
            }
        }
    });

    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            lp.height = (Integer) valueAnimator.getAnimatedValue();
            dismissView.setLayoutParams(lp);
        }
    });

    mPendingDismisses.add(new PendingDismissData(dismissPosition, dismissView));
    animator.start();
}

From source file:com.quentindommerc.superlistview.SwipeDismissListViewTouchListener.java

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void performDismiss(final View dismissView, final int dismissPosition) {
    // Animate the dismissed list item to zero-height and fire the dismiss callback when
    // all dismissed list item animations have completed. This triggers layout on each animation
    // frame; in the future we may want to do something smarter and more performant.

    final ViewGroup.LayoutParams lp = dismissView.getLayoutParams();
    final int originalHeight = dismissView.getHeight();

    ValueAnimator animator = ValueAnimator.ofInt(originalHeight, 1).setDuration(mAnimationTime);

    animator.addListener(new AnimatorListenerAdapter() {
        @Override//w w w .j  ava 2s.c o  m
        public void onAnimationEnd(Animator animation) {
            --mDismissAnimationRefCount;
            if (mDismissAnimationRefCount == 0) {
                // No active animations, process all pending dismisses.
                // Sort by descending position
                Collections.sort(mPendingDismisses);

                int[] dismissPositions = new int[mPendingDismisses.size()];
                for (int i = mPendingDismisses.size() - 1; i >= 0; i--) {
                    dismissPositions[i] = mPendingDismisses.get(i).position;
                }
                mCallbacks.onDismiss(mListView, dismissPositions);

                // Reset mDownPosition to avoid MotionEvent.ACTION_UP trying to start a dismiss 
                // animation with a stale position
                mDownPosition = ListView.INVALID_POSITION;

                ViewGroup.LayoutParams lp;
                for (PendingDismissData pendingDismiss : mPendingDismisses) {
                    // Reset view presentation
                    if (AnimatorProxy.NEEDS_PROXY) {
                        AnimatorProxy.wrap(pendingDismiss.view).setAlpha(1f);
                        AnimatorProxy.wrap(pendingDismiss.view).setTranslationX(0);
                    } else {
                        pendingDismiss.view.setAlpha(1f);
                        pendingDismiss.view.setTranslationX(0);
                    }

                    lp = pendingDismiss.view.getLayoutParams();
                    lp.height = originalHeight;
                    pendingDismiss.view.setLayoutParams(lp);
                }

                // Send a cancel event
                long time = SystemClock.uptimeMillis();
                MotionEvent cancelEvent = MotionEvent.obtain(time, time, MotionEvent.ACTION_CANCEL, 0, 0, 0);
                mListView.dispatchTouchEvent(cancelEvent);

                mPendingDismisses.clear();
            }
        }
    });

    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            lp.height = (Integer) valueAnimator.getAnimatedValue();
            dismissView.setLayoutParams(lp);
        }
    });

    mPendingDismisses.add(new PendingDismissData(dismissPosition, dismissView));
    animator.start();
}

From source file:android.support.design.widget.CoordinatorLayout.java

/**
 * Reset all Behavior-related tracking records either to clean up or in preparation
 * for a new event stream. This should be called when attached or detached from a window,
 * in response to an UP or CANCEL event, when intercept is request-disallowed
 * and similar cases where an event stream in progress will be aborted.
 *//*w  ww.  j av  a  2s . c  o  m*/
private void resetTouchBehaviors() {
    if (mBehaviorTouchView != null) {
        final Behavior b = ((LayoutParams) mBehaviorTouchView.getLayoutParams()).getBehavior();
        if (b != null) {
            final long now = SystemClock.uptimeMillis();
            final MotionEvent cancelEvent = MotionEvent.obtain(now, now, MotionEvent.ACTION_CANCEL, 0.0f, 0.0f,
                    0);
            b.onTouchEvent(this, mBehaviorTouchView, cancelEvent);
            cancelEvent.recycle();
        }
        mBehaviorTouchView = null;
    }

    final int childCount = getChildCount();
    for (int i = 0; i < childCount; i++) {
        final View child = getChildAt(i);
        final LayoutParams lp = (LayoutParams) child.getLayoutParams();
        lp.resetTouchBehaviorTracking();
    }
    mDisallowInterceptReset = false;
}

From source file:org.creativecommons.thelist.swipedismiss.SwipeDismissRecyclerViewTouchListener.java

private void performDismiss(final View dismissView, final int dismissPosition) {
    // Animate the dismissed list item to zero-height and fire the dismiss callback when
    // all dismissed list item animations have completed. This triggers layout on each animation
    // frame; in the future we may want to do something smarter and more performant.

    final ViewGroup.LayoutParams lp = dismissView.getLayoutParams();
    final int originalHeight = dismissView.getHeight();

    com.nineoldandroids.animation.ValueAnimator animator = com.nineoldandroids.animation.ValueAnimator
            .ofInt(originalHeight, 1).setDuration(mAnimationTime);

    animator.addListener(new com.nineoldandroids.animation.AnimatorListenerAdapter() {
        @Override/*from w w  w. j a  v  a2s .  c  o  m*/
        public void onAnimationEnd(com.nineoldandroids.animation.Animator animation) {
            --mDismissAnimationRefCount;
            if (mDismissAnimationRefCount == 0) {

                //                boolean noAnimationLeft;
                //                synchronized (mAnimationLock) {
                //                    Log.d("ANIMATIONLOCK", "hello");
                //                    --mDismissAnimationRefCount;
                //                    mAnimatedViews.remove(dismissView);
                //                    noAnimationLeft = mDismissAnimationRefCount == 0;
                //                }
                //
                //                if(noAnimationLeft){
                // No active animations, process all pending dismisses.
                // Sort by descending position
                Collections.sort(mPendingDismisses);

                int[] dismissPositions = new int[mPendingDismisses.size()];
                for (int i = mPendingDismisses.size() - 1; i >= 0; i--) {
                    dismissPositions[i] = mPendingDismisses.get(i).position;
                }
                mCallbacks.onDismiss(mRecyclerView, dismissPositions);

                // Reset mDownPosition to avoid MotionEvent.ACTION_UP trying to start a dismiss
                // animation with a stale position
                mDownPosition = ListView.INVALID_POSITION;

                ViewGroup.LayoutParams lp;
                for (PendingDismissData pendingDismiss : mPendingDismisses) {
                    // Reset view presentation
                    setAlpha(pendingDismiss.view, 1f);
                    setTranslationX(pendingDismiss.view, 0);
                    lp = pendingDismiss.view.getLayoutParams();
                    lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
                    pendingDismiss.view.setLayoutParams(lp);
                }

                // Send a cancel event
                long time = SystemClock.uptimeMillis();
                MotionEvent cancelEvent = MotionEvent.obtain(time, time, MotionEvent.ACTION_CANCEL, 0, 0, 0);
                mRecyclerView.dispatchTouchEvent(cancelEvent);

                //Log.v("THESE ARE DISMISSES: ", mPendingDismisses.toString());
                mPendingDismisses.clear();
            }
        }
    });

    animator.addUpdateListener(new com.nineoldandroids.animation.ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(com.nineoldandroids.animation.ValueAnimator valueAnimator) {
            lp.height = (Integer) valueAnimator.getAnimatedValue();
            dismissView.setLayoutParams(lp);
        }
    });

    mPendingDismisses.add(new PendingDismissData(dismissPosition, dismissView));
    animator.start();
}

From source file:android.support.design.widget.CoordinatorLayout.java

private boolean performIntercept(MotionEvent ev, final int type) {
    boolean intercepted = false;
    boolean newBlock = false;

    MotionEvent cancelEvent = null;//  w w  w. j  a  v a2  s.c o m

    final int action = MotionEventCompat.getActionMasked(ev);

    final List<View> topmostChildList = mTempList1;
    getTopSortedChildren(topmostChildList);

    // Let topmost child views inspect first
    final int childCount = topmostChildList.size();
    for (int i = 0; i < childCount; i++) {
        final View child = topmostChildList.get(i);
        final LayoutParams lp = (LayoutParams) child.getLayoutParams();
        final Behavior b = lp.getBehavior();

        if ((intercepted || newBlock) && action != MotionEvent.ACTION_DOWN) {
            // Cancel all behaviors beneath the one that intercepted.
            // If the event is "down" then we don't have anything to cancel yet.
            if (b != null) {
                if (cancelEvent == null) {
                    final long now = SystemClock.uptimeMillis();
                    cancelEvent = MotionEvent.obtain(now, now, MotionEvent.ACTION_CANCEL, 0.0f, 0.0f, 0);
                }
                switch (type) {
                case TYPE_ON_INTERCEPT:
                    b.onInterceptTouchEvent(this, child, cancelEvent);
                    break;
                case TYPE_ON_TOUCH:
                    b.onTouchEvent(this, child, cancelEvent);
                    break;
                }
            }
            continue;
        }

        if (!intercepted && b != null) {
            switch (type) {
            case TYPE_ON_INTERCEPT:
                intercepted = b.onInterceptTouchEvent(this, child, ev);
                break;
            case TYPE_ON_TOUCH:
                intercepted = b.onTouchEvent(this, child, ev);
                break;
            }
            if (intercepted) {
                mBehaviorTouchView = child;
            }
        }

        // Don't keep going if we're not allowing interaction below this.
        // Setting newBlock will make sure we cancel the rest of the behaviors.
        final boolean wasBlocking = lp.didBlockInteraction();
        final boolean isBlocking = lp.isBlockingInteractionBelow(this, child);
        newBlock = isBlocking && !wasBlocking;
        if (isBlocking && !newBlock) {
            // Stop here since we don't have anything more to cancel - we already did
            // when the behavior first started blocking things below this point.
            break;
        }
    }

    topmostChildList.clear();

    return intercepted;
}

From source file:com.library.core.view.HorizontalListView.java

/**
 *  ?//ww  w. j  a v a2s. c  o m
 * 
 * @param i
 * @param j
 */
public void smoothScrollToPosition1(int i, int j) {
    // TODO Auto-generated method stub
    MotionEvent e1 = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),
            MotionEvent.ACTION_DOWN, 89.333336f, 265.33334f, 0);
    MotionEvent e2 = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),
            MotionEvent.ACTION_UP, 150.0f, 238.00003f, 0);
    // Animation rInAnim = AnimationUtils.loadAnimation(mContext,
    // R.anim.anim_list);
    // HorizontalListView.this.setAnimation(rInAnim);
    int a = getWidth() / 5;
    mOnGesture.onScroll(e1, e2, a, 0);
}

From source file:com.library.core.view.HorizontalListView.java

/**
 * 1/*from   ww w  . j  a  v a2 s . c o  m*/
 * 
 * @param i
 * @param j
 */
public void smoothScrollToPosition2(int i, int j) {
    // TODO Auto-generated method stub
    MotionEvent e1 = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),
            MotionEvent.ACTION_DOWN, 89.333336f, 265.33334f, 0);
    MotionEvent e2 = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),
            MotionEvent.ACTION_UP, 150.0f, 238.00003f, 0);
    mOnGesture.onScroll(e1, e2, 1, 0);
}

From source file:android.support.design.widget.CoordinatorLayout.java

@Override
public boolean onTouchEvent(MotionEvent ev) {
    boolean handled = false;
    boolean cancelSuper = false;
    MotionEvent cancelEvent = null;//w  w w.  ja v a  2  s. co m

    final int action = MotionEventCompat.getActionMasked(ev);

    if (mBehaviorTouchView != null || (cancelSuper = performIntercept(ev, TYPE_ON_TOUCH))) {
        // Safe since performIntercept guarantees that
        // mBehaviorTouchView != null if it returns true
        final LayoutParams lp = (LayoutParams) mBehaviorTouchView.getLayoutParams();
        final Behavior b = lp.getBehavior();
        if (b != null) {
            handled = b.onTouchEvent(this, mBehaviorTouchView, ev);
        }
    }

    // Keep the super implementation correct
    if (mBehaviorTouchView == null) {
        handled |= super.onTouchEvent(ev);
    } else if (cancelSuper) {
        if (cancelEvent == null) {
            final long now = SystemClock.uptimeMillis();
            cancelEvent = MotionEvent.obtain(now, now, MotionEvent.ACTION_CANCEL, 0.0f, 0.0f, 0);
        }
        super.onTouchEvent(cancelEvent);
    }

    if (!handled && action == MotionEvent.ACTION_DOWN) {

    }

    if (cancelEvent != null) {
        cancelEvent.recycle();
    }

    if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
        resetTouchBehaviors();
    }

    return handled;
}

From source file:com.lesikapk.opengelplus.Folder.java

public void onDragOver(DragObject d) {
    final DragView dragView = d.dragView;
    final int scrollOffset = mScrollView.getScrollY();
    final float[] r = getDragViewVisualCenter(d.x, d.y, d.xOffset, d.yOffset, dragView, null);
    r[0] -= getPaddingLeft();//w  ww .  j a va  2s  . c  o  m
    r[1] -= getPaddingTop();

    final long downTime = SystemClock.uptimeMillis();
    final MotionEvent translatedEv = MotionEvent.obtain(downTime, downTime, MotionEvent.ACTION_MOVE, d.x, d.y,
            0);

    /*if (!mAutoScrollHelper.isEnabled()) {
    mAutoScrollHelper.setEnabled(true);
    }
            
    final boolean handled = mAutoScrollHelper.onTouch(this, translatedEv);
    translatedEv.recycle();
            
    if (handled) {
    mReorderAlarm.cancelAlarm();
    } else {*/
    mTargetCell = mContent.findNearestArea((int) r[0], (int) r[1] + scrollOffset, 1, 1, mTargetCell);
    if (isLayoutRtl()) {
        mTargetCell[0] = mContent.getCountX() - mTargetCell[0] - 1;
    }
    if (mTargetCell[0] != mPreviousTargetCell[0] || mTargetCell[1] != mPreviousTargetCell[1]) {
        mReorderAlarm.cancelAlarm();
        mReorderAlarm.setOnAlarmListener(mReorderAlarmListener);
        mReorderAlarm.setAlarm(REORDER_DELAY);
        mPreviousTargetCell[0] = mTargetCell[0];
        mPreviousTargetCell[1] = mTargetCell[1];
        mDragMode = DRAG_MODE_REORDER;
    } else {
        mDragMode = DRAG_MODE_NONE;
    }
    //        }
}

From source file:saphion.fragments.alarm.AlarmFragment.java

private void showLabelDialog(final Alarm alarm) {
    /*/*from w  w w.j  a va2 s . c  o  m*/
     * final FragmentTransaction ft =
     * getFragmentManager().beginTransaction(); final Fragment prev =
     * getFragmentManager().findFragmentByTag( "label_dialog"); if (prev !=
     * null) { ft.remove(prev); } ft.addToBackStack(null);
     * 
     * // Create and show the dialog. final LabelDialogFragment newFragment
     * = LabelDialogFragment .newInstance(alarm, alarm.label, getTag());
     * newFragment.show(ft, "label_dialog");
     */
    AlertDialog.Builder builder = new AlertDialog.Builder(getBaseContext());
    builder.setTitle("Enter Label");
    View view = LayoutInflater.from(getBaseContext()).inflate(R.layout.label_picker, null);
    final EditText picker = (EditText) view.findViewById(R.id.labelPicker);

    picker.setText(alarm.label);
    picker.selectAll();
    (new Handler()).postDelayed(new Runnable() {

        @SuppressLint("Recycle")
        public void run() {
            picker.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),
                    MotionEvent.ACTION_DOWN, 0, 0, 0));
            picker.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),
                    MotionEvent.ACTION_UP, 0, 0, 0));
            picker.selectAll();

        }
    }, 200);
    builder.setView(view);
    builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            setLabel(alarm, picker.getText().toString());

        }
    });
    builder.setNegativeButton(android.R.string.cancel, null);
    builder.show();

}