android.view.MotionEvent#setLocation ( )源码实例Demo

下面列出了android.view.MotionEvent#setLocation ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: media-samples   文件: OverlayDisplayWindow.java
@Override
public boolean onTouch(View view, MotionEvent event) {
    // Work in screen coordinates.
    final float oldX = event.getX();
    final float oldY = event.getY();
    event.setLocation(event.getRawX(), event.getRawY());

    mGestureDetector.onTouchEvent(event);
    mScaleGestureDetector.onTouchEvent(event);

    switch (event.getActionMasked()) {
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_CANCEL:
            saveWindowParams();
            break;
    }

    // Revert to window coordinates.
    event.setLocation(oldX, oldY);
    return true;
}
 
源代码2 项目: android_9.0.0_r45   文件: OverlayDisplayWindow.java
@Override
public boolean onTouch(View view, MotionEvent event) {
    // Work in screen coordinates.
    final float oldX = event.getX();
    final float oldY = event.getY();
    event.setLocation(event.getRawX(), event.getRawY());

    mGestureDetector.onTouchEvent(event);
    mScaleGestureDetector.onTouchEvent(event);

    switch (event.getActionMasked()) {
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_CANCEL:
            saveWindowParams();
            break;
    }

    // Revert to window coordinates.
    event.setLocation(oldX, oldY);
    return true;
}
 
@Override
public boolean onTouch(View view, MotionEvent event) {
    // Work in screen coordinates.
    final float oldX = event.getX();
    final float oldY = event.getY();
    event.setLocation(event.getRawX(), event.getRawY());

    mGestureDetector.onTouchEvent(event);
    mScaleGestureDetector.onTouchEvent(event);

    switch (event.getActionMasked()) {
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_CANCEL:
            saveWindowParams();
            break;
    }

    // Revert to window coordinates.
    event.setLocation(oldX, oldY);
    return true;
}
 
源代码4 项目: OpenMapKitAndroid   文件: MapView.java
private MotionEvent rotateTouchEvent(MotionEvent ev) {
    if (this.getMapOrientation() == 0) {
        return ev;
    }
    MotionEvent rotatedEvent = MotionEvent.obtain(ev);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
        mRotatePoints[0] = ev.getX();
        mRotatePoints[1] = ev.getY();
        getProjection().rotatePoints(mRotatePoints);
        rotatedEvent.setLocation(mRotatePoints[0], mRotatePoints[1]);
    } else {
        // This method is preferred since it will rotate historical touch events too
        try {
            if (sMotionEventTransformMethod == null) {
                sMotionEventTransformMethod = MotionEvent.class.getDeclaredMethod("transform",
                        new Class[]{Matrix.class});
            }
            sMotionEventTransformMethod.invoke(rotatedEvent,
                    getProjection().getRotationMatrix());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return rotatedEvent;
}
 
源代码5 项目: V.FlyoutTest   文件: OverlayDisplayWindow.java
@Override
public boolean onTouch(View view, MotionEvent event) {
    // Work in screen coordinates.
    final float oldX = event.getX();
    final float oldY = event.getY();
    event.setLocation(event.getRawX(), event.getRawY());

    mGestureDetector.onTouchEvent(event);
    mScaleGestureDetector.onTouchEvent(event);

    switch (event.getActionMasked()) {
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_CANCEL:
            saveWindowParams();
            break;
    }

    // Revert to window coordinates.
    event.setLocation(oldX, oldY);
    return true;
}
 
源代码6 项目: AndroidChromium   文件: LocationBarTablet.java
@Override
public boolean onTouchEvent(MotionEvent event) {
    if (mTargets == null) return true;

    View selectedTarget = null;
    float selectedDistance = 0;
    // newX and newY are in the coordinates of the selectedTarget.
    float newX = 0;
    float newY = 0;
    for (View target : mTargets) {
        if (!target.isShown()) continue;

        mCachedTargetBounds.set(0, 0, target.getWidth(), target.getHeight());
        offsetDescendantRectToMyCoords(target, mCachedTargetBounds);
        float x = event.getX();
        float y = event.getY();
        float dx = distanceToRange(
                mCachedTargetBounds.left, mCachedTargetBounds.right, x);
        float dy = distanceToRange(
                mCachedTargetBounds.top, mCachedTargetBounds.bottom, y);
        float distance = Math.abs(dx) + Math.abs(dy);
        if (selectedTarget == null || distance < selectedDistance) {
            selectedTarget = target;
            selectedDistance = distance;
            newX = x + dx;
            newY = y + dy;
        }
    }

    if (selectedTarget == null) return false;

    event.setLocation(newX, newY);
    return selectedTarget.onTouchEvent(event);
}
 
源代码7 项目: openboard   文件: InputView.java
public boolean onTouchEvent(final int x, final int y, final MotionEvent me) {
    mReceiverView.getGlobalVisibleRect(mEventReceivingRect);
    // Translate global coordinates to <code>ReceiverView</code> local coordinates.
    me.setLocation(translateX(x), translateY(y));
    mReceiverView.dispatchTouchEvent(me);
    onForwardingEvent(me);
    return true;
}
 
源代码8 项目: SHSwipeRefreshLayout   文件: SHListView.java
@Override
public boolean onTouchEvent(MotionEvent ev) {

    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
        ox = ev.getX();
        oy = ev.getY();
        // Dispatch touch event to parent view
        startNestedScroll(ViewCompat.SCROLL_AXIS_HORIZONTAL | ViewCompat.SCROLL_AXIS_VERTICAL);
    }

    if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_CANCEL) {
        // stop nested scrolling dispatch
        stopNestedScroll();
    }

    if (ev.getAction() == MotionEvent.ACTION_MOVE) {
        float clampedX = ev.getX();
        float clampedY = ev.getY();
        int dx = (int) (ox - clampedX);
        int dy = (int) (oy - clampedY);

        if (dispatchNestedPreScroll(dx, dy, consumed, offsetInWindow)) {
            // sub dx/dy was consumed by parent view!!!
            ev.setLocation(clampedX + consumed[0], clampedY + consumed[1]);
        }
        ox = ev.getX();
        oy = ev.getY();
    }

    return super.onTouchEvent(ev);
}
 
源代码9 项目: VerticalViewPager   文件: VerticalViewPager.java
private MotionEvent swapXY(MotionEvent ev) {
    float width = getWidth();
    float height = getHeight();

    float newX = (ev.getY() / height) * width;
    float newY = (ev.getX() / width) * height;

    ev.setLocation(newX, newY);

    return ev;
}
 
源代码10 项目: DoraemonKit   文件: VerticalViewPager.java
private MotionEvent swapTouchEvent(MotionEvent event) {
    float width = getWidth();
    float height = getHeight();

    float swappedX = (event.getY() / height) * width;
    float swappedY = (event.getX() / width) * height;

    event.setLocation(swappedX, swappedY);

    return event;
}
 
源代码11 项目: CoolViewPager   文件: CoolViewPager.java
/**
 * 将事件原始X,Y坐标进行置换
 *
 * @param event
 * @return
 */
private MotionEvent swapTouchEvent(MotionEvent event) {
    float width = getWidth();
    float height = getHeight();
    float swappedX = (event.getY() / height) * width;
    float swappedY = (event.getX() / width) * height;
    event.setLocation(swappedX, swappedY);
    return event;
}
 
源代码12 项目: VerticalViewPager   文件: VerticalViewPager.java
private MotionEvent swapTouchEvent(MotionEvent event) {
    float width = getWidth();
    float height = getHeight();

    float swappedX = (event.getY() / height) * width;
    float swappedY = (event.getX() / width) * height;

    event.setLocation(swappedX, swappedY);

    return event;
}
 
private MotionEvent calculateCenterEvent(final MotionEvent ev) {
    final PointF center = calculateCenter(ev);
    final MotionEvent newEvent = MotionEvent.obtain(ev);
    newEvent.setLocation(center.x, center.y);
    return newEvent;

}
 
源代码14 项目: LaunchEnr   文件: TransformingTouchDelegate.java
/**
 * Will forward touch events to the delegate view if the event is within the bounds
 * specified in the constructor.
 *
 * @param event The touch event to forward
 * @return True if the event was forwarded to the delegate, false otherwise.
 */
public boolean onTouchEvent(MotionEvent event) {
    boolean sendToDelegate = false;
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            mDelegateTargeted = mTouchCheckBounds.contains(event.getX(), event.getY());
            if (mDelegateTargeted) {
                mWasTouchOutsideBounds = !mBounds.contains(event.getX(), event.getY());
                sendToDelegate = true;
            }
            break;
        case MotionEvent.ACTION_MOVE:
            sendToDelegate = mDelegateTargeted;
            break;
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_CANCEL:
            sendToDelegate = mDelegateTargeted;
            mDelegateTargeted = false;
            break;
    }
    boolean handled = false;
    if (sendToDelegate) {
        float x = event.getX();
        float y = event.getY();
        if (mWasTouchOutsideBounds) {
            event.setLocation(mBounds.centerX(), mBounds.centerY());
        } else {
            event.offsetLocation(-mBounds.left, -mBounds.top);
        }
        handled = mDelegateView.dispatchTouchEvent(event);
        event.setLocation(x, y);
    }
    return handled;
}
 
@Override
public boolean onTouch(View v, MotionEvent event) {
    v.onTouchEvent(event);
    // put the location in the middle of the paired view
    event.setLocation(mPairedView.getWidth()/2, mPairedView.getHeight()/2);
    mPairedView.onTouchEvent(event);
    return true;
}
 
源代码16 项目: EhViewer   文件: ReversibleSeekBar.java
@Override
public boolean onTouchEvent(MotionEvent event) {
    boolean reverse = mReverse;
    float x = 0.0f, y = 0.0f;
    if (reverse) {
        x = event.getX();
        y = event.getY();
        event.setLocation(getWidth() - x, y);
    }
    boolean result = super.onTouchEvent(event);
    if (reverse) {
        event.setLocation(x, y);
    }
    return result;
}
 
源代码17 项目: delion   文件: LocationBarTablet.java
@Override
public boolean onTouchEvent(MotionEvent event) {
    if (mTargets == null) return true;

    View selectedTarget = null;
    float selectedDistance = 0;
    // newX and newY are in the coordinates of the selectedTarget.
    float newX = 0;
    float newY = 0;
    for (View target : mTargets) {
        if (!target.isShown()) continue;

        mCachedTargetBounds.set(0, 0, target.getWidth(), target.getHeight());
        offsetDescendantRectToMyCoords(target, mCachedTargetBounds);
        float x = event.getX();
        float y = event.getY();
        float dx = distanceToRange(
                mCachedTargetBounds.left, mCachedTargetBounds.right, x);
        float dy = distanceToRange(
                mCachedTargetBounds.top, mCachedTargetBounds.bottom, y);
        float distance = Math.abs(dx) + Math.abs(dy);
        if (selectedTarget == null || distance < selectedDistance) {
            selectedTarget = target;
            selectedDistance = distance;
            newX = x + dx;
            newY = y + dy;
        }
    }

    if (selectedTarget == null) return false;

    event.setLocation(newX, newY);
    return selectedTarget.onTouchEvent(event);
}
 
源代码18 项目: android_9.0.0_r45   文件: SearchView.java
@Override
public boolean onTouchEvent(MotionEvent event) {
    final int x = (int) event.getX();
    final int y = (int) event.getY();
    boolean sendToDelegate = false;
    boolean hit = true;
    boolean handled = false;

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            if (mTargetBounds.contains(x, y)) {
                mDelegateTargeted = true;
                sendToDelegate = true;
            }
            break;
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_MOVE:
            sendToDelegate = mDelegateTargeted;
            if (sendToDelegate) {
                if (!mSlopBounds.contains(x, y)) {
                    hit = false;
                }
            }
            break;
        case MotionEvent.ACTION_CANCEL:
            sendToDelegate = mDelegateTargeted;
            mDelegateTargeted = false;
            break;
    }
    if (sendToDelegate) {
        if (hit && !mActualBounds.contains(x, y)) {
            // Offset event coordinates to be in the center of the target view since we
            // are within the targetBounds, but not inside the actual bounds of
            // mDelegateView
            event.setLocation(mDelegateView.getWidth() / 2,
                    mDelegateView.getHeight() / 2);
        } else {
            // Offset event coordinates to the target view coordinates.
            event.setLocation(x - mActualBounds.left, y - mActualBounds.top);
        }

        handled = mDelegateView.dispatchTouchEvent(event);
    }
    return handled;
}
 
源代码19 项目: PullRefreshView   文件: FlingYResolver.java
@Override
protected boolean tryToMove(MotionEvent ev, float oldX, float oldY, float x, float y) {
    int dataX = (int) (x - oldX);
    int dataY = (int) (y - oldY);
    if (isScrolling || Math.abs(dataY) > Math.abs(dataX)) {
        isScrolling = true;
        c.getFlingLayout().getParent().requestDisallowInterceptTouchEvent(true);
        float moveY = c.getMoveP();
        if (moveY == 0) {
            //开始时 在0,0处
            //判断是否可以滑动
            if ((dataY > 0 && c.canOverStart()) || (dataY < 0 && c.canOverEnd())) {
                c.moveBy(dataY);
                return true;
            }
        } else {
            //当不在0,0处
            ev.setAction(MotionEvent.ACTION_CANCEL);//屏蔽原事件

            if ((moveY < 0 && moveY + dataY >= 0) || (moveY > 0 && moveY + dataY <= 0)) {
                //在0,0附近浮动
                ev.setAction(MotionEvent.ACTION_DOWN);
                c.moveTo(0);
            } else if ((moveY > 0 && dataY > 0) || (moveY < 0 && dataY < 0)) {
                //是否超过最大距离
                int maxDistance = c.getMaxDistance();
                if (Math.abs(moveY) < maxDistance) {
                    int ps = 0;
                    int hDataY = dataY / 2;
                    ps = (int) (-hDataY * Math.abs(moveY) / (float) maxDistance) - hDataY;
                    c.moveBy(ps + dataY);
                } else if (moveY > maxDistance) {
                    c.moveTo(maxDistance);
                } else if (moveY < -maxDistance) {
                    c.moveTo(-maxDistance);
                }
            } else {
                c.moveBy(dataY);
            }
        }
    } else {
        ev.setLocation(x, downY);
    }
    return false;
}
 
源代码20 项目: particle-android   文件: ReversedSeekBar.java
public boolean onTouchEvent(MotionEvent event) {
    event.setLocation(this.getWidth() - event.getX(), event.getY());
    return super.onTouchEvent(event);
}