Java Code Examples for android.view.ViewGroup#getScrollX()

The following examples show how to use android.view.ViewGroup#getScrollX() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: SmoothRefreshLayout.java    From SmoothRefreshLayout with MIT License 6 votes vote down vote up
public void transformPointToViewLocal(ViewGroup group, float[] point, View child) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
        group.transformPointToViewLocal(point, child);
    } else {
        // When the system version is lower than LOLLIPOP_MR1, the system source code has no
        // transformPointToViewLocal method. We need to be compatible with it.
        point[0] += group.getScrollX() - child.getLeft();
        point[1] += group.getScrollY() - child.getTop();
        Matrix matrix = child.getMatrix();
        if (!matrix.isIdentity()) {
            mCachedMatrix.reset();
            if (matrix.invert(mCachedMatrix)) {
                mCachedMatrix.mapPoints(point);
            }
        }
    }
}
 
Example 2
Source File: TouchTargetHelper.java    From react-native-GPay with MIT License 5 votes vote down vote up
/**
 * Returns whether the touch point is within the child View
 * It is transform aware and will invert the transform Matrix to find the true local points
 * This code is taken from {@link ViewGroup#isTransformedTouchPointInView()}
 */
private static boolean isTransformedTouchPointInView(
    float x,
    float y,
    ViewGroup parent,
    View child,
    PointF outLocalPoint) {
  float localX = x + parent.getScrollX() - child.getLeft();
  float localY = y + parent.getScrollY() - child.getTop();
  Matrix matrix = child.getMatrix();
  if (!matrix.isIdentity()) {
    float[] localXY = mMatrixTransformCoords;
    localXY[0] = localX;
    localXY[1] = localY;
    Matrix inverseMatrix = mInverseMatrix;
    matrix.invert(inverseMatrix);
    inverseMatrix.mapPoints(localXY);
    localX = localXY[0];
    localY = localXY[1];
  }
  if (child instanceof ReactHitSlopView && ((ReactHitSlopView) child).getHitSlopRect() != null) {
    Rect hitSlopRect = ((ReactHitSlopView) child).getHitSlopRect();
    if ((localX >= -hitSlopRect.left && localX < (child.getRight() - child.getLeft()) + hitSlopRect.right)
        && (localY >= -hitSlopRect.top && localY < (child.getBottom() - child.getTop()) + hitSlopRect.bottom)) {
      outLocalPoint.set(localX, localY);
      return true;
    }

    return false;
  } else {
    if ((localX >= 0 && localX < (child.getRight() - child.getLeft()))
        && (localY >= 0 && localY < (child.getBottom() - child.getTop()))) {
      outLocalPoint.set(localX, localY);
      return true;
    }

    return false;
  }
}
 
Example 3
Source File: RNTouchTargetHelper.java    From react-native-sensors-analytics with Apache License 2.0 5 votes vote down vote up
private static boolean isTransformedTouchPointInView(float x, float y, ViewGroup parent, View child, PointF outLocalPoint) {
    float localX = (((float) parent.getScrollX()) + x) - ((float) child.getLeft());
    float localY = (((float) parent.getScrollY()) + y) - ((float) child.getTop());
    Matrix matrix = child.getMatrix();
    if (!matrix.isIdentity()) {
        float[] localXY = mMatrixTransformCoords;
        localXY[0] = localX;
        localXY[1] = localY;
        Matrix inverseMatrix = mInverseMatrix;
        matrix.invert(inverseMatrix);
        inverseMatrix.mapPoints(localXY);
        localX = localXY[0];
        localY = localXY[1];
    }
    if ((child instanceof ReactHitSlopView) && ((ReactHitSlopView) child).getHitSlopRect() != null) {
        Rect hitSlopRect = ((ReactHitSlopView) child).getHitSlopRect();
        if (localX < ((float) (-hitSlopRect.left)) || localX >= ((float) ((child.getRight() - child.getLeft()) + hitSlopRect.right)) || localY < ((float) (-hitSlopRect.top)) || localY >= ((float) ((child.getBottom() - child.getTop()) + hitSlopRect.bottom))) {
            return false;
        }
        outLocalPoint.set(localX, localY);
        return true;
    } else if (localX < 0.0f || localX >= ((float) (child.getRight() - child.getLeft())) || localY < 0.0f || localY >= ((float) (child.getBottom() - child.getTop()))) {
        return false;
    } else {
        outLocalPoint.set(localX, localY);
        return true;
    }
}
 
Example 4
Source File: ViewUtil.java    From weex with Apache License 2.0 5 votes vote down vote up
public static boolean isTransformedPointInView(
    ViewGroup parent,
    View child,
    float x,
    float y,
    @Nullable PointF outLocalPoint) {
  Util.throwIfNull(parent);
  Util.throwIfNull(child);

  float localX = x + parent.getScrollX() - child.getLeft();
  float localY = y + parent.getScrollY() - child.getTop();

  // TODO: handle transforms
  /*Matrix childMatrix = child.getMatrix();
  if (!childMatrix.isIdentity()) {
    final float[] localXY = new float[2];
    localXY[0] = localX;
    localXY[1] = localY;
    child.getInverseMatrix
  }*/

  final boolean isInView = ViewUtil.pointInView(child, localX, localY);
  if (isInView && outLocalPoint != null) {
    outLocalPoint.set(localX, localY);
  }

  return isInView;
}
 
Example 5
Source File: ScrollBoundaryUtil.java    From CollapsingRefresh with Apache License 2.0 4 votes vote down vote up
public static void transformPointToViewLocal(ViewGroup group, View child, float[] point) {
    point[0] += group.getScrollX() - child.getLeft();
    point[1] += group.getScrollY() - child.getTop();
}